]> git.saurik.com Git - apple/objc4.git/commitdiff
objc4-371.tar.gz mac-os-x-105 mac-os-x-1051 v371
authorApple <opensource@apple.com>
Tue, 29 Jan 2008 04:02:33 +0000 (04:02 +0000)
committerApple <opensource@apple.com>
Tue, 29 Jan 2008 04:02:33 +0000 (04:02 +0000)
83 files changed:
Makefile
libobjc.order
markgc.c [new file with mode: 0644]
objc-exports [deleted file]
runtime/Accessors.subproj/objc-accessors-arch.s [new file with mode: 0644]
runtime/Accessors.subproj/objc-accessors-i386.s [new file with mode: 0644]
runtime/Accessors.subproj/objc-accessors-ppc.s [new file with mode: 0644]
runtime/Accessors.subproj/objc-accessors-ppc64.s [new file with mode: 0644]
runtime/Accessors.subproj/objc-accessors-table.h [new file with mode: 0644]
runtime/Accessors.subproj/objc-accessors-x86_64.s [new file with mode: 0644]
runtime/Accessors.subproj/objc-accessors.h [new file with mode: 0644]
runtime/Accessors.subproj/objc-accessors.m [new file with mode: 0644]
runtime/Auto.subproj/objc-auto-i386.s
runtime/Auto.subproj/objc-auto-ppc.s
runtime/Auto.subproj/objc-auto-ppc64.s [new file with mode: 0644]
runtime/Auto.subproj/objc-auto-x86_64.s [new file with mode: 0644]
runtime/Auto.subproj/objc-auto.s
runtime/Messengers.subproj/objc-msg-i386.s
runtime/Messengers.subproj/objc-msg-ppc.s
runtime/Messengers.subproj/objc-msg-ppc64.s [new file with mode: 0644]
runtime/Messengers.subproj/objc-msg-stub-i386.s
runtime/Messengers.subproj/objc-msg-stub-ppc.s
runtime/Messengers.subproj/objc-msg-stub-ppc64.s [new file with mode: 0644]
runtime/Messengers.subproj/objc-msg-stub-x86_64.s [new file with mode: 0644]
runtime/Messengers.subproj/objc-msg-stub.s
runtime/Messengers.subproj/objc-msg-x86_64.s [new file with mode: 0644]
runtime/Messengers.subproj/objc-msg.s
runtime/Object.h
runtime/Object.m
runtime/OldClasses.subproj/List.h
runtime/OldClasses.subproj/List.m
runtime/Protocol.h
runtime/Protocol.m
runtime/error.h
runtime/hashtable2.h
runtime/hashtable2.m
runtime/lookupa.h [new file with mode: 0644]
runtime/lookupa.m [new file with mode: 0644]
runtime/maptable.h
runtime/maptable.m
runtime/message.h [new file with mode: 0644]
runtime/objc-api.h
runtime/objc-auto.h
runtime/objc-auto.m
runtime/objc-cache.m [new file with mode: 0644]
runtime/objc-class-old.m [new file with mode: 0644]
runtime/objc-class.h
runtime/objc-class.m
runtime/objc-config.h
runtime/objc-errors.m
runtime/objc-exception.h
runtime/objc-exception.m
runtime/objc-file.m
runtime/objc-initialize.h [new file with mode: 0644]
runtime/objc-initialize.m [new file with mode: 0644]
runtime/objc-layout.m [new file with mode: 0644]
runtime/objc-load.h
runtime/objc-load.m
runtime/objc-loadmethod.h [new file with mode: 0644]
runtime/objc-loadmethod.m [new file with mode: 0644]
runtime/objc-lockdebug.m [new file with mode: 0644]
runtime/objc-moninit.c [deleted file]
runtime/objc-private.h
runtime/objc-rtp-sym.s
runtime/objc-rtp.h
runtime/objc-rtp.m
runtime/objc-runtime-new.h [new file with mode: 0644]
runtime/objc-runtime-new.m [new file with mode: 0644]
runtime/objc-runtime-old.m [new file with mode: 0644]
runtime/objc-runtime.h
runtime/objc-runtime.m
runtime/objc-sel-set.h
runtime/objc-sel-set.m
runtime/objc-sel-table.h
runtime/objc-sel.m
runtime/objc-sync.h
runtime/objc-sync.m
runtime/objc-typeencoding.m [new file with mode: 0644]
runtime/objc.h
runtime/phash.h [new file with mode: 0644]
runtime/phash.m [new file with mode: 0644]
runtime/runtime.h [new file with mode: 0644]
runtime/standard.h [new file with mode: 0644]

index ee26d8eb93bfa305ca6fac88fd6d3979d1fdd776..47d8553ba5ba2835aa36f80f03ff4d7921e55ea8 100644 (file)
--- a/Makefile
+++ b/Makefile
 default: build
 all: build
 
+test:
+       make -C test
+
 .SUFFIXES:
-.PHONY: default all build optimized debug profile installsrc installhdrs install clean prebuild build-optimized build-debug build-profile prebuild-optimized prebuild-debug prebuild-profile compile-optimized compile-debug compile-profile link-optimized link-debug link-profile postbuild
+.PHONY: default all test build optimized debug profile installsrc installhdrs install clean prebuild build-optimized build-debug build-profile prebuild-optimized prebuild-debug prebuild-profile compile-optimized compile-debug compile-profile link-optimized link-debug link-profile postbuild
 
 CURRENT_PROJECT_VERSION = 227
 
@@ -79,7 +82,7 @@ NMEDIT = /usr/bin/nmedit
 LIPO = /usr/bin/lipo
 
 ifeq "$(PLATFORM)" "Darwin"
-WARNING_FLAGS = -Wmost -Wno-four-char-constants
+WARNING_FLAGS = -Wall -Wno-four-char-constants -Wshorten-64-to-32 -Wno-deprecated-declarations
 endif
 
 ARCH_LIST= 
@@ -104,7 +107,7 @@ ifeq "$(ORDERFILE)" ""
 ORDERFILE = $(SRCROOT)/libobjc.order
 endif
 ifneq "$(ORDERFILE)" ""
-ORDER = -sectorder __TEXT __text $(ORDERFILE)
+ORDER = -Wl,-order_file,$(ORDERFILE)
 else 
 ORDER = 
 endif
@@ -113,7 +116,7 @@ ifeq "$(USER)" ""
 USER = unknown
 endif
 
-CFLAGS = -g -fno-common -fobjc-exceptions -fdollars-in-identifiers -pipe $(PLATFORM_CFLAGS) $(WARNING_FLAGS) -I$(SYMROOT) -I. -I$(SYMROOT)/ProjectHeaders
+CFLAGS = -g -fno-common -fdollars-in-identifiers -pipe $(PLATFORM_CFLAGS) $(WARNING_FLAGS) -I$(SYMROOT) -I. -I$(SYMROOT)/ProjectHeaders
 LDFLAGS = 
 
 LIBRARY_EXT = .dylib
@@ -126,18 +129,23 @@ ifeq "$(PLATFORM)" "Darwin"
 LDFLAGS += -dynamiclib -dynamic -compatibility_version 1 -current_version $(CURRENT_PROJECT_VERSION) 
 endif
 
+ifeq "$(PLATFORM)" "Darwin"
+# GC flags
+LDFLAGS += -lauto
+#CFLAGS += -fobjc-gc -Wassign-intercept
+endif
 
 CFLAGS += $(OTHER_CFLAGS) $(RC_CFLAGS)
 LDFLAGS += $(OTHER_LDFLAGS)
 
 ifndef OPTIMIZATION_CFLAGS
-OPTIMIZATION_CFLAGS = -Os
+OPTIMIZATION_CFLAGS = -Os -DNDEBUG
 endif
 ifndef DEBUG_CFLAGS
 DEBUG_CFLAGS = -DDEBUG
 endif
 ifndef PROFILE_CFLAGS
-PROFILE_CFLAGS = -DPROFILE -pg -Os
+PROFILE_CFLAGS = -DPROFILE -pg -Os -DNDEBUG
 endif
 
 CFLAGS_OPTIMIZED = $(OPTIMIZATION_CFLAGS) $(CFLAGS)
@@ -148,7 +156,7 @@ LDFLAGS_OPTIMIZED = $(LDFLAGS) -g
 LDFLAGS_DEBUG     = $(LDFLAGS) -g
 LDFLAGS_PROFILE   = $(LDFLAGS) -g -pg
 
-SUBDIRS = . runtime runtime/OldClasses.subproj runtime/Messengers.subproj runtime/Auto.subproj
+SUBDIRS = . runtime runtime/OldClasses.subproj runtime/Messengers.subproj runtime/Accessors.subproj runtime/Auto.subproj
 
 # files to compile
 SOURCES=
@@ -165,16 +173,25 @@ 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 \
+       Object.m Protocol.m hashtable2.m maptable.m objc-class.m \
+       objc-errors.m objc-cache.m objc-initialize.m \
+       objc-file.m objc-load.m objc-runtime.m objc-sel.m \
        objc-sync.m objc-exception.m objc-auto.m objc-sel-set.m objc-rtp.m \
+       objc-layout.m objc-loadmethod.m objc-class-old.m objc-runtime-old.m \
+       objc-runtime-new.m objc-typeencoding.m objc-lockdebug.m \
+       phash.m lookupa.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 objc-auto.h \
+       objc.h runtime.h message.h \
+       objc-class.h objc-api.h objc-load.h objc-runtime.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
+PRIVATE_HEADERS += $(addprefix runtime/, \
+       objc-private.h objc-config.h objc-sel-table.h objc-sel-set.h \
+       objc-rtp.h objc-initialize.h objc-loadmethod.h objc-runtime-new.h \
+       phash.h lookupa.h standard.h \
+       )
 OTHER_HEADERS += runtime/maptable.h runtime/objc-auto.h
 
 # OldClasses
@@ -183,11 +200,17 @@ PUBLIC_HEADERS += runtime/OldClasses.subproj/List.h
 
 # Messengers
 SOURCES += runtime/Messengers.subproj/objc-msg.s
-OTHER_SOURCES += runtime/Messengers.subproj/objc-msg-ppc.s runtime/Messengers.subproj/objc-msg-i386.s
+OTHER_SOURCES += runtime/Messengers.subproj/objc-msg-ppc.s runtime/Messengers.subproj/objc-msg-ppc64.s runtime/Messengers.subproj/objc-msg-i386.s runtime/Messengers.subproj/objc-msg-x86_64.s
+
+# Property Accessors
+SOURCES += runtime/Accessors.subproj/objc-accessors.m runtime/Accessors.subproj/objc-accessors-arch.s
+PRIVATE_HEADERS += runtime/Accessors.subproj/objc-accessors.h runtime/Accessors.subproj/objc-accessors-table.h
+OTHER_SOURCES += runtime/Accessors.subproj/objc-accessors-ppc.s runtime/Accessors.subproj/objc-accessors-ppc64.s
+OTHER_SOURCES += runtime/Accessors.subproj/objc-accessors-i386.s runtime/Accessors.subproj/objc-accessors-x86_64.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
+OTHER_SOURCES += runtime/Auto.subproj/objc-auto-ppc.s runtime/Auto.subproj/objc-auto-ppc64.s runtime/Auto.subproj/objc-auto-i386.s runtime/Auto.subproj/objc-auto-x86_64.s
 
 # RTP symbols for gdb
 # See also $(OBJROOT)/runtime/objc-rtp-sym.ppc.o rule below.
@@ -197,10 +220,15 @@ OTHER_SOURCES += runtime/objc-rtp-sym.s
 # 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
+OTHER_SOURCES += runtime/Messengers.subproj/objc-msg-stub-ppc.s runtime/Messengers.subproj/objc-msg-stub-ppc64.s runtime/Messengers.subproj/objc-msg-stub-i386.s runtime/Messengers.subproj/objc-msg-stub-x86_64.s
 
 # project root
-OTHER_SOURCES += Makefile APPLE_LICENSE objc-exports libobjc.order
+OTHER_SOURCES += Makefile APPLE_LICENSE libobjc.order
+
+# The GC Mark tool that marks our .o files as if they had been compiled with write-barriers
+OTHER_SOURCES += markgc.c
+MARKGC = $(OBJROOT)/markgc
+
 
 OBJECTS = $(addprefix $(OBJROOT)/, $(addsuffix .o, $(basename $(SOURCES) ) ) )
 OBJECTS_OPTIMIZED = $(OBJECTS:.o=.opt.o)
@@ -217,41 +245,44 @@ MODULE_OBJECTS_PROFILE = $(MODULE_OBJECTS:.o=.profile.o)
 DEPEND_HEADERS = $(addprefix $(SRCROOT)/, \
         $(PUBLIC_HEADERS) $(PRIVATE_HEADERS) $(OTHER_HEADERS) )
 
-$(OBJROOT)/%.opt.o :     $(SRCROOT)/%.m  $(DEPEND_HEADERS)
+$(OBJROOT)/%.opt.o :     $(SRCROOT)/%.m  $(DEPEND_HEADERS) $(MARKGC)
        $(SILENT) $(ECHO) "    ... $<"
-       $(SILENT) $(CC) $(CFLAGS_OPTIMIZED) "$<" -c -o "$@"
+       $(SILENT) $(CC) $(ARCH_FLAGS) $(CFLAGS_OPTIMIZED) "$<" -c -o "$@"
+       $(SILENT) $(MARKGC) -p "$@"
 
-$(OBJROOT)/%.debug.o :   $(SRCROOT)/%.m  $(DEPEND_HEADERS)
+$(OBJROOT)/%.debug.o :   $(SRCROOT)/%.m  $(DEPEND_HEADERS) $(MARKGC)
        $(SILENT) $(ECHO) "    ... $<"
-       $(SILENT) $(CC) $(CFLAGS_DEBUG)     "$<" -c -o "$@"
+       $(SILENT) $(CC) $(ARCH_FLAGS) $(CFLAGS_DEBUG)     "$<" -c -o "$@"
+       $(SILENT) $(MARKGC) -p "$@"
 
-$(OBJROOT)/%.profile.o : $(SRCROOT)/%.m  $(DEPEND_HEADERS)
+$(OBJROOT)/%.profile.o : $(SRCROOT)/%.m  $(DEPEND_HEADERS) $(MARKGC)
        $(SILENT) $(ECHO) "    ... $<"
-       $(SILENT) $(CC) $(CFLAGS_PROFILE)   "$<" -c -o "$@"
+       $(SILENT) $(CC) $(ARCH_FLAGS) $(CFLAGS_PROFILE)   "$<" -c -o "$@"
+       $(SILENT) $(MARKGC) -p "$@"
 
 $(OBJROOT)/%.opt.o :     $(SRCROOT)/%.c  $(DEPEND_HEADERS)
        $(SILENT) $(ECHO) "    ... $<"
-       $(SILENT) $(CC) $(CFLAGS_OPTIMIZED) "$<" -c -o "$@"
+       $(SILENT) $(CC) $(ARCH_FLAGS) $(CFLAGS_OPTIMIZED) "$<" -c -o "$@"
 
 $(OBJROOT)/%.debug.o :   $(SRCROOT)/%.c  $(DEPEND_HEADERS)
        $(SILENT) $(ECHO) "    ... $<"
-       $(SILENT) $(CC) $(CFLAGS_DEBUG)     "$<" -c -o "$@"
+       $(SILENT) $(CC) $(ARCH_FLAGS) $(CFLAGS_DEBUG)     "$<" -c -o "$@"
 
 $(OBJROOT)/%.profile.o : $(SRCROOT)/%.c  $(DEPEND_HEADERS)
        $(SILENT) $(ECHO) "    ... $<"
-       $(SILENT) $(CC) $(CFLAGS_PROFILE)   "$<" -c -o "$@"
+       $(SILENT) $(CC) $(ARCH_FLAGS) $(CFLAGS_PROFILE)   "$<" -c -o "$@"
 
 $(OBJROOT)/%.opt.o :     $(SRCROOT)/%.s  $(DEPEND_HEADERS)
        $(SILENT) $(ECHO) "    ... $<"
-       $(SILENT) $(CC) $(CFLAGS_OPTIMIZED) "$<" -c -o "$@"
+       $(SILENT) $(CC) $(ARCH_FLAGS) $(CFLAGS_OPTIMIZED) "$<" -c -o "$@"
 
 $(OBJROOT)/%.debug.o :   $(SRCROOT)/%.s  $(DEPEND_HEADERS)
        $(SILENT) $(ECHO) "    ... $<"
-       $(SILENT) $(CC) $(CFLAGS_DEBUG)     "$<" -c -o "$@"
+       $(SILENT) $(CC) $(ARCH_FLAGS) $(CFLAGS_DEBUG)     "$<" -c -o "$@"
 
 $(OBJROOT)/%.profile.o : $(SRCROOT)/%.s  $(DEPEND_HEADERS)
        $(SILENT) $(ECHO) "    ... $<"
-       $(SILENT) $(CC) $(CFLAGS_PROFILE)   "$<" -c -o "$@"
+       $(SILENT) $(CC) $(ARCH_FLAGS) $(CFLAGS_PROFILE)   "$<" -c -o "$@"
 
 # Additional dependency: objc-msg.s depends on objc-msg-ppc.s and 
 # objc-msg-i386.s, which it includes.
@@ -259,7 +290,9 @@ $(OBJROOT)/runtime/Messengers.subproj/objc-msg.opt.o \
 $(OBJROOT)/runtime/Messengers.subproj/objc-msg.debug.o \
 $(OBJROOT)/runtime/Messengers.subproj/objc-msg.profile.o : \
        $(SRCROOT)/runtime/Messengers.subproj/objc-msg-ppc.s \
-       $(SRCROOT)/runtime/Messengers.subproj/objc-msg-i386.s
+       $(SRCROOT)/runtime/Messengers.subproj/objc-msg-ppc64.s \
+       $(SRCROOT)/runtime/Messengers.subproj/objc-msg-i386.s \
+       $(SRCROOT)/runtime/Messengers.subproj/objc-msg-x86_64.s
 
 # Additional dependency: objc-msg-sutb.s depends on objc-msg-stub-ppc.s and 
 # objc-msg-stub-i386.s, which it includes.
@@ -267,7 +300,9 @@ $(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
+       $(SRCROOT)/runtime/Messengers.subproj/objc-msg-stub-ppc64.s \
+       $(SRCROOT)/runtime/Messengers.subproj/objc-msg-stub-i386.s \
+       $(SRCROOT)/runtime/Messengers.subproj/objc-msg-stub-x86_64.s
 
 # Additional dependency: objc-auto.s depends on objc-auto-ppc.s and 
 # objc-auto-i386.s, which it includes.
@@ -275,7 +310,9 @@ $(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
+       $(SRCROOT)/runtime/Auto.subproj/objc-auto-ppc64.s \
+       $(SRCROOT)/runtime/Auto.subproj/objc-auto-i386.s \
+       $(SRCROOT)/runtime/Auto.subproj/objc-auto-x86_64.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 
@@ -286,11 +323,29 @@ $(OBJROOT)/runtime/objc-rtp-sym.ppc.o: $(SRCROOT)/runtime/objc-rtp-sym.s
        $(SILENT) $(STRIP) -S "$@.temp"
        $(SILENT) $(LD) -arch ppc -seg1addr 0xfffec000 "$@.temp" -r -o "$@"
 
+$(OBJROOT)/runtime/objc-rtp-sym.ppc64.o: $(SRCROOT)/runtime/objc-rtp-sym.s
+       $(SILENT) $(CC) $(CFLAGS_OPTIMIZED) -arch ppc64 "$<" -c -o "$@.temp"
+       $(SILENT) $(STRIP) -S "$@.temp"
+       $(SILENT) $(LD) -arch ppc64 -seg1addr 0xfffffffffffec000 "$@.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 "$@"
 
+$(OBJROOT)/runtime/objc-rtp-sym.x86_64.o: $(SRCROOT)/runtime/objc-rtp-sym.s
+       $(SILENT) $(CC) $(CFLAGS_OPTIMIZED) -arch x86_64 "$<" -c -o "$@.temp"
+       $(SILENT) $(STRIP) -S "$@.temp"
+       $(SILENT) $(LD) -arch x86_64 -seg1addr 0xfffffffffffec000 "$@.temp" -r -o "$@"
+
+# Additional rule: markgc tool to pretend we compiled with GC write-barriers
+$(MARKGC): $(SRCROOT)/markgc.c
+       $(SILENT) $(ECHO) "Building markgc tool ..."
+       $(SILENT) $(CC) -std=gnu99 "$<" -o "$@"
+
+# Additional linkage: LP64 targets require libstdc++
+LIBS_ppc64 = -lstdc++
+LIBS_x86_64 = -lstdc++
 
 # These are the main targets:
 #    build             builds the library to OBJROOT and SYMROOT
@@ -411,6 +466,8 @@ clean:
 
        $(SILENT) $(REMOVE) -rf $(SYMROOT)/ProjectHeaders
 
+       $(SILENT) $(REMOVE) -f $(MARKGC)
+
 prebuild:
        $(SILENT) $(ECHO) "Prebuild-setup..."
 
@@ -462,7 +519,7 @@ define link
            $3 ; \
          $(SILENT) $(CC) $2 \
            -arch $A \
-           -Wl,-exported_symbols_list,$(SRCROOT)/objc-exports \
+           $(LIBS_$(A)) \
            $(ORDER) \
            -sectcreate __DATA __commpage $(OBJROOT)/runtime/objc-rtp-sym.$A.o \
            -install_name /$(INSTALLDIR)/libobjc$1.$(VERSION_NAME)$(LIBRARY_EXT) \
index de394163d80e709fc91b5159d5c699e062f19191..5301ba8b16054de7aa1908ff0ae6b1042c86749c 100644 (file)
-__objc_notify_images
-___i686.get_pc_thunk.bx
+__objc_init
 _map_images
+_sel_registerName
+___sel_registerName
+__objc_search_builtins
+_phash
+_lookup
+_exception_init
+__getImageSlide
+__getObjcImageInfo
 _getsegbynamefromheader
-___i686.get_pc_thunk.cx
+__getObjcModules
+__malloc_internal
+__objc_internal_zone
 _verify_gc_readiness
-_objc_msgSend
-__class_lookupMethodAndLoadCache
-_class_initialize
-_objc_getClass
-_look_up_class
+_gc_init
+_rtp_init
+__read_images
+__objc_init_class_hash
+_NXCreateHashTableFromZone
 _NXHashGet
+_hashPrototype
+_isEqualPrototype
+_NXHashInsert
+__NXHashRehashToCapacity
+_freeBuckets
+_NXNoEffectFree
+_log2u
+__NXHashCapacity
+__class_hasLoadMethod
+__class_getLoadMethod_nocheck
 _classHash
+__class_getName
+_resolve_categories_for_class
+_lookupNamedMethodInMethodList
 _classIsEqual
+_objc_lookUpClass
+_look_up_class
+__objc_insertMethods
+__calloc_internal
+__class_clearInfo
 __class_changeInfo
-__fetchInitializingClassList
-__cache_getMethod
-_fixupSelectorsInMethodList
-__malloc_internal
-__objc_internal_zone
+__class_setInfo
+__class_addProperties
+__memdup_internal
+_allocateExt
+_connect_class
+_class_is_connected
+_NXHashMember
+_really_connect_class
+_set_superclass
+_NXHashRemove
+_NXCountHashTable
+_NXFreeHashTable
+__getObjcClassRefs
+__getObjcSelectorRefs
 _sel_lock
 _sel_registerNameNoLock
-___sel_registerName
-__objc_search_builtins
-___objc_sel_set_get
-___objc_sel_set_findBuckets
+___objc_sel_set_create
 ___objc_sel_set_add
+___objc_sel_set_findBuckets
+___objc_sel_set_get
 _sel_unlock
+_objc_getClass
+_NXCreateMapTableFromZone
+_NXCreateHashTable
+_NXPtrHash
+__getObjcProtocols
+__getObjcClassNames
+_map_method_descs
+_NXMapGet
+__mapStrHash
+_NXMapKeyCopyingInsert
+__strdup_internal
+_NXMapInsert
+__mapStrIsEqual
+__mapPtrHash
+__mapPtrIsEqual
+__NXMapRehash
+__free_internal
+_load_images
+_prepare_load_methods
+_schedule_class_load
+_add_class_to_loadable_list
+__class_getLoadMethod
+_call_load_methods
+__realloc_internal
+_add_category_to_loadable_list
+__category_getLoadMethod
+_object_getClass
+_protocol_copyMethodDescriptionList
+_class_getClassMethod
+__class_getMeta
+_look_up_method
+__class_getMethod
+_fixupSelectorsInMethodList
+_method_getTypeEncoding
+_method_getImplementation
+_method_getName
+_class_addMethod
+__class_addMethod
+_flush_caches
+__cache_flush
+__class_getCache
+_class_getInstanceMethod
+_class_replaceMethod
+_method_setImplementation
+_class_addProtocol
+_objc_exception_get_functions
+_objc_exception_set_functions
+_objc_setForwardHandler
+_objc_setEnumerationMutationHandler
+_objc_collecting_enabled
+_objc_getFutureClass
+_objc_setFutureClass
+_setOriginalClassForFutureClass
+_change_class_references
+_NXInitHashState
+_NXNextHashState
+__objc_headerStart
+_objc_msgSend
+__class_lookupMethodAndLoadCache
+__class_getFreedObjectClass
+__class_getNonexistentObjectClass
+__class_isInitialized
+__class_initialize
+__class_isMetaClass
+__class_getSuperclass
+__class_isInitializing
+__class_setInitializing
+__fetchInitializingClassList
+__objc_fetch_pthread_data
+__cache_getMethod
+__class_getMethodNoSuper
+_log_and_fill_cache
 __cache_fill
+_objc_assign_global
+_class_setVersion
+__class_setInitialized
 __cache_getImp
-__cache_create
 __cache_malloc
-__calloc_internal
-_objc_assign_global
-_objc_collecting_enabled
+__class_setCache
+__class_setGrowCache
+_class_getInstanceSize
+__class_getInstanceSize
+_class_createInstanceFromZone
+__objc_warn_deprecated
 __internal_class_createInstanceFromZone
 _object_cxxConstructFromClass
+__class_hasCxxStructorsNoSuper
 _object_getClassName
+_object_getIndexedIvars
+_objc_assign_strongCast
+__class_shouldGrowCache
+_class_createInstance
+__internal_class_createInstance
 _objc_msgSendSuper
 _objc_assign_ivar
-dyld_stub_binding_helper
 __cache_collect_free
-_sel_registerName
+_class_getSuperclass
+__category_getClass
+__class_isLoadable
+_object_dispose
 __internal_object_dispose
-_object_cxxDestruct
 _object_cxxDestructFromClass
 __objc_getFreedObjectClass
 _objc_exception_try_enter
 _objc_exception_try_exit
-__strdup_internal
-_class_respondsToMethod
+_class_getVersion
+_class_respondsToSelector
+__class_resolveMethod
 __cache_addForwardEntry
-_objc_assign_strongCast
-_objc_msgSend_stret
 _objc_msgSend_fpret
-_class_getInstanceMethod
-_objc_memmove_collectable
--[Protocol descriptionForInstanceMethod:]
-_class_nextMethodList
-_objc_getOrigClass
-_NXMapGet
-__mapStrHash
-__free_internal
-_NXUniqueString
-_NXCreateHashTable
-_NXCreateHashTableFromZone
-_hashPrototype
-_isEqualPrototype
-_NXHashInsert
-__NXHashRehashToCapacity
-_freeBuckets
-_NXNoEffectFree
-_NXStrHash
-_NXStrIsEqual
-_class_poseAs
-__objc_addOrigClass
-__mapStrIsEqual
-_NXMapInsert
-_objc_getClasses
-_NXHashRemove
-__mapPtrHash
-_NXInitHashState
-_NXNextHashState
-__objc_headerStart
-__getObjcClassRefs
-_sel_getName
-_object_setInstanceVariable
-_class_getInstanceVariable
-_objc_setMultithreaded
--[Object self]
-__objc_defaultClassHandler
-_class_lookupMethod
-__internal_object_copyFromZone
-__objc_msgForward
-_objc_msgSendv
-_objc_loadModule
-__getObjcModules
-__getObjcImageInfo
-__getImageSlide
-__NXHashCapacity
-_lookupNamedMethodInMethodList
-_log2
-_resolve_categories_for_class
-_connect_class
-_class_is_connected
-_NXHashMember
-_really_connect_class
-_NXCountHashTable
-_NXFreeHashTable
-__objc_fixup_selector_refs
-__getObjcMessageRefs
-__getObjcProtocols
-+[Protocol _fixup:numElements:]
--[Protocol conformsTo:]
-__objc_insertMethods
-__objc_flush_caches
-_flush_caches
-_objc_getClassList
-__realloc_internal
-__cache_flush
-__class_setInfo
-__class_clearInfo
-_map_method_descs
-_objc_msgSendSuper_stret
-_cache_region_calloc
-_objc_msgSendv_stret
 _objc_sync_enter
 _id2data
+_fetch_cache
+_class_getImageName
+__objc_getOrigClass
+_class_getName
 _objc_sync_exit
-__mapPtrIsEqual
+_objc_finalizeOnMainThread
+__cache_free_block
+_class_conformsToProtocol
+_protocol_conformsToProtocol
++[Object initialize]
+_object_setInstanceVariable
+__class_getVariable
+_ivar_getOffset
+_gc_enforcer
+_flush_marked_caches
+_class_getMethodImplementation
+_objc_setProperty
+_objc_assign_weak
+_objc_read_weak
+_objc_allocateClassPair
+__objc_defaultClassHandler
+_objc_registerClassPair
+_NXHashInsertIfAbsent
+_method_getNumberOfArguments
+_encoding_getNumberOfArguments
+_SkipFirstType
+_method_copyArgumentType
+_encoding_copyArgumentType
+_encoding_getArgumentInfo
+_method_copyReturnType
+_encoding_copyReturnType
+_objc_getProperty
+_cache_region_calloc
+_class_copyProtocolList
+_class_isMetaClass
+_protocol_getMethodDescription
+_lookup_protocol_method
+_method_getDescription
+_sel_getName
 __objc_pthread_destroyspecific
 __destroyInitializingClassList
+__destroyLockList
+__destroySyncCache
+__destroyAltHandlerList
+_objc_msgSend_stret
+_objc_is_finalized
+_class_getInstanceVariable
+_objc_msgSendSuper_stret
+__objc_msgForward
+_objc_memmove_collectable
+_objc_atomicCompareAndSwapInstanceVariableBarrier
+_object_setClass
+_flush_cache
+_objc_atomicCompareAndSwapGlobalBarrier
+_ivar_getTypeEncoding
+_class_getProperty
+_property_list_nth
+_property_getAttributes
+_object_copyFromZone
+__internal_object_copyFromZone
+_class_copyIvarList
+_ivar_getName
 __objcInit
+_objc_copyStruct
+_objc_sync_nil
+_objc_getClassList
+_objc_copyImageNames
+_objc_copyClassNamesForImage
+__objc_copyClassNamesForImage
+_objc_setMultithreaded
+_sel_getUid
+_class_poseAs
+__objc_addOrigClass
+_objc_exception_throw
 _objc_exception_extract
 _objc_exception_match
+_object_getIvar
+_object_setIvar
+_method_invoke
+_unmap_image
+_class_copyPropertyList
+_property_getName
diff --git a/markgc.c b/markgc.c
new file mode 100644 (file)
index 0000000..1224e5f
--- /dev/null
+++ b/markgc.c
@@ -0,0 +1,451 @@
+/*
+ * Copyright (c) 2007 Apple Inc.  All Rights Reserved.
+ * 
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * 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@
+ */
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#import <stdio.h>
+#include <fcntl.h>
+#import <sys/stat.h>
+#import <mach-o/fat.h>
+#import <mach-o/arch.h>
+#import <mach-o/loader.h>
+
+typedef char bool;
+#define true 1
+#define false 0
+
+bool debug;
+bool verbose;
+bool quiet;
+bool rrOnly;
+bool patch = true;
+
+struct gcinfo {
+        bool hasObjC;
+        bool hasInfo;
+        uint32_t flags;
+        char *arch;
+} GCInfo[4];
+
+void dumpinfo(char *filename);
+
+int Errors = 0;
+char *FileBase;
+size_t FileSize;
+const char *FileName;
+
+int main(int argc, char *argv[]) {
+    //NSAutoreleasePool *pool = [NSAutoreleasePool new];
+    int i;
+    //dumpinfo("/System/Library/Frameworks/AppKit.framework/AppKit");
+    if (argc == 1) {
+        printf("Usage: gcinfo [-v] [-r] [--] library_or_executable_image [image2 ...]\n");
+        printf(" prints Garbage Collection readiness of named images, ignoring those without ObjC segments\n");
+        printf("  'GC'      - compiled with write-barriers, presumably otherwise aware\n");
+        printf("  'RR'      - retain/release (presumed) aware for non-GC\n");
+        printf("  'GC-only' - compiled with write-barriers and marked at compile time as not being retain/release savvy\n");
+        printf("  -v        - provide archtectural details\n");
+        printf("  -r        - only show libraries that are non-GC, e.g. RR only\n");
+        printf("  --        - read files & directories from stdin, e.g. find /Plug-ins | gcinfo --\n");
+        printf("\nAuthor: blaine@apple.com\n");
+        exit(0);
+    }
+    for (i = 1; i < argc; ++i) {
+        if (!strcmp(argv[i], "-v")) {
+            verbose = true;
+            continue;
+        }
+        if (!strcmp(argv[i], "-d")) {
+            debug = true;
+            continue;
+        }
+        if (!strcmp(argv[i], "-q")) {
+            quiet = true;
+            continue;
+        }
+        if (!strcmp(argv[i], "-r")) {
+            quiet = true;
+            rrOnly = true;
+            continue;
+        }
+        if (!strcmp(argv[i], "-p")) {
+            patch = true;
+            continue;
+        }
+        if (!strcmp(argv[i], "--")) {
+            char buf[1024];
+            while (fgets(buf, 1024, stdin)) {
+                int len = strlen(buf);
+                buf[len-1] = 0;
+                dumpinfo(buf);
+            }
+            continue;
+        }
+        dumpinfo(argv[i]);
+    }
+    return Errors;
+}
+
+struct imageInfo {
+    uint32_t version;
+    uint32_t flags;
+};
+
+void patchFile(uint32_t value, size_t offset) {
+    int fd = open(FileName, 1);
+    off_t lresult = lseek(fd, offset, SEEK_SET);
+    if (lresult == -1) {
+        printf("couldn't seek to %x position on fd %d\n", offset, fd);
+        ++Errors;
+        return;
+    }
+    int wresult = write(fd, &value, 4);
+    if (wresult != 4) {
+        ++Errors;
+        printf("didn't write new value\n");
+    }
+    else {
+        printf("patched %s at offset %p\n", FileName, offset);
+    }
+    close(fd);
+}
+
+uint32_t iiflags(struct imageInfo *ii, uint32_t size, bool needsFlip) {
+    if (needsFlip) {
+        ii->flags = OSSwapInt32(ii->flags);
+    }
+    if (debug) printf("flags->%x, nitems %d\n", ii->flags, size/sizeof(struct imageInfo));
+    uint32_t flags = ii->flags;
+    if (patch && (flags&0x2)==0) {
+        //printf("will patch %s at offset %p\n", FileName, (char*)(&ii->flags) - FileBase);
+        uint32_t newvalue = flags | 0x2;
+        if (needsFlip) newvalue = OSSwapInt32(newvalue);
+        patchFile(newvalue, (char*)(&ii->flags) - FileBase);
+    }
+    for(int niis = 1; niis < size/sizeof(struct imageInfo); ++niis) {
+        if (needsFlip) ii[niis].flags = OSSwapInt32(ii[niis].flags);
+        if (ii[niis].flags != flags) {
+            // uh, oh.
+            printf("XXX ii[%d].flags %x != ii[0].flags %x\n", niis, ii[niis].flags, flags);
+            ++Errors;
+        }
+    }
+    return flags;
+}
+
+void printflags(uint32_t flags) {
+    if (flags & 0x1) printf(" F&C");
+    if (flags & 0x2) printf(" GC");
+    if (flags & 0x4) printf(" GC-only");
+    else printf(" RR");
+}
+
+/*
+void doimageinfo(struct imageInfo *ii, uint32_t size, bool needsFlip) {
+    uint32_t flags = iiflags(ii, size, needsFlip);
+    printflags(flags);
+}
+*/
+
+
+void dosect32(void *start, struct section *sect, bool needsFlip, struct gcinfo *gcip) {
+    if (debug) printf("section %s from segment %s\n", sect->sectname, sect->segname);
+    if (strcmp(sect->segname, "__OBJC")) return;
+    gcip->hasObjC = true;
+    if (strcmp(sect->sectname, "__image_info")) return;
+    gcip->hasInfo = true;
+    if (needsFlip) {
+        sect->offset = OSSwapInt32(sect->offset);
+        sect->size = OSSwapInt32(sect->size);
+    }
+    // these guys aren't inline - they point elsewhere
+    gcip->flags = iiflags(start + sect->offset, sect->size, needsFlip);
+}
+
+void dosect64(void *start, struct section_64 *sect, bool needsFlip, struct gcinfo *gcip) {
+    if (debug) printf("section %s from segment %s\n", sect->sectname, sect->segname);
+    if (strcmp(sect->segname, "__OBJC") && strcmp(sect->segname, "__DATA")) return;
+    if (strcmp(sect->sectname, "__image_info") && strncmp(sect->sectname, "__objc_imageinfo", 16)) return;
+    gcip->hasObjC = true;
+    gcip->hasInfo = true;
+    if (needsFlip) {
+        sect->offset = OSSwapInt32(sect->offset);
+        sect->size = OSSwapInt64(sect->size);
+    }
+    // these guys aren't inline - they point elsewhere
+    gcip->flags = iiflags(start + sect->offset, sect->size, needsFlip);
+}
+
+void doseg32(void *start, struct segment_command *seg, bool needsFlip, struct gcinfo *gcip) {
+    // lets do sections
+    if (needsFlip) {
+        seg->fileoff = OSSwapInt32(seg->fileoff);
+        seg->nsects = OSSwapInt32(seg->nsects);
+    }
+    if (debug) printf("segment name: %s, nsects %d\n", seg->segname, seg->nsects);
+    if (seg->segname[0]) {
+        if (strcmp("__OBJC", seg->segname)) return;
+    }
+    int nsects;
+    struct section *sect = (struct section *)(seg + 1);
+    for (int nsects = 0; nsects < seg->nsects; ++nsects) {
+        // sections directly follow
+        
+        dosect32(start, sect + nsects, needsFlip, gcip);
+    }
+}
+void doseg64(void *start, struct segment_command_64 *seg, bool needsFlip, struct gcinfo *gcip) {
+    if (debug) printf("segment name: %s\n", seg->segname);
+    if (seg->segname[0] && strcmp("__OBJC", seg->segname) && strcmp("__DATA", seg->segname)) return;
+    gcip->hasObjC = true;
+    // lets do sections
+    if (needsFlip) {
+        seg->fileoff = OSSwapInt64(seg->fileoff);
+        seg->nsects = OSSwapInt32(seg->nsects);
+    }
+    int nsects;
+    struct section_64 *sect = (struct section_64 *)(seg + 1);
+    for (int nsects = 0; nsects < seg->nsects; ++nsects) {
+        // sections directly follow
+        
+        dosect64(start, sect + nsects, needsFlip, gcip);
+    }
+}
+
+#if 0
+/*
+ * A variable length string in a load command is represented by an lc_str
+ * union.  The strings are stored just after the load command structure and
+ * the offset is from the start of the load command structure.  The size
+ * of the string is reflected in the cmdsize field of the load command.
+ * Once again any padded bytes to bring the cmdsize field to a multiple
+ * of 4 bytes must be zero.
+ */
+union lc_str {
+       uint32_t        offset; /* offset to the string */
+#ifndef __LP64__
+       char            *ptr;   /* pointer to the string */
+#endif 
+};
+
+struct dylib {
+    union lc_str  name;                        /* library's path name */
+    uint32_t timestamp;                        /* library's build time stamp */
+    uint32_t current_version;          /* library's current version number */
+    uint32_t compatibility_version;    /* library's compatibility vers number*/
+};
+
+ * A dynamically linked shared library (filetype == MH_DYLIB in the mach header)
+ * contains a dylib_command (cmd == LC_ID_DYLIB) to identify the library.
+ * An object that uses a dynamically linked shared library also contains a
+ * dylib_command (cmd == LC_LOAD_DYLIB, LC_LOAD_WEAK_DYLIB, or
+ * LC_REEXPORT_DYLIB) for each library it uses.
+
+struct dylib_command {
+       uint32_t        cmd;            /* LC_ID_DYLIB, LC_LOAD_{,WEAK_}DYLIB,
+                                          LC_REEXPORT_DYLIB */
+       uint32_t        cmdsize;        /* includes pathname string */
+       struct dylib    dylib;          /* the library identification */
+};
+#endif
+
+void dodylib(void *start, struct dylib_command *dylibCmd, bool needsFlip) {
+    if (!verbose) return;
+    if (needsFlip) {
+    }
+    int count = dylibCmd->cmdsize - sizeof(struct dylib_command);
+    //printf("offset is %d, count is %d\n", dylibCmd->dylib.name.offset, count);
+    if (dylibCmd->dylib.name.offset > count) return;
+    //printf("-->%.*s<---", count, ((void *)dylibCmd)+dylibCmd->dylib.name.offset);
+    if (verbose) printf("load %s\n", ((void *)dylibCmd)+dylibCmd->dylib.name.offset);
+}
+
+struct load_command *doloadcommand(void *start, struct load_command *lc, bool needsFlip, bool is32, struct gcinfo *gcip) {
+    if (needsFlip) {
+        lc->cmd = OSSwapInt32(lc->cmd);
+        lc->cmdsize = OSSwapInt32(lc->cmdsize);
+    }
+
+    switch(lc->cmd) {
+    case LC_SEGMENT_64:
+       if (debug) printf("...segment64\n");
+        if (is32) printf("XXX we have a 64-bit segment in a 32-bit mach-o\n");
+        doseg64(start, (struct segment_command_64 *)lc, needsFlip, gcip);
+        break;
+    case LC_SEGMENT:
+       if (debug) printf("...segment32\n");
+        doseg32(start, (struct segment_command *)lc, needsFlip, gcip);
+        break;
+    case LC_SYMTAB: if (debug) printf("...dynamic symtab\n"); break;
+    case LC_DYSYMTAB: if (debug) printf("...symtab\n"); break;
+    case LC_LOAD_DYLIB:
+        dodylib(start, (struct dylib_command *)lc, needsFlip);
+        break;
+    case LC_SUB_UMBRELLA: if (debug) printf("...load subumbrella\n"); break;
+    default:    if (debug) printf("cmd is %x\n", lc->cmd); break;
+    }
+    
+    return (struct load_command *)((void *)lc + lc->cmdsize);
+}
+
+void doofile(void *start, uint32_t size, struct gcinfo *gcip) {
+    struct mach_header *mh = (struct mach_header *)start;
+    bool isFlipped = false;
+    if (mh->magic == MH_CIGAM || mh->magic == MH_CIGAM_64) {
+        if (debug) printf("(flipping)\n");
+        mh->magic = OSSwapInt32(mh->magic);
+        mh->cputype = OSSwapInt32(mh->cputype);
+        mh->cpusubtype = OSSwapInt32(mh->cpusubtype);
+        mh->filetype = OSSwapInt32(mh->filetype);
+        mh->ncmds = OSSwapInt32(mh->ncmds);
+        mh->sizeofcmds = OSSwapInt32(mh->sizeofcmds);
+        mh->flags = OSSwapInt32(mh->flags);
+        isFlipped = true;
+    }
+    if (rrOnly && mh->filetype != 6) return; // ignore executables
+    NXArchInfo *info = (NXArchInfo *)NXGetArchInfoFromCpuType(mh->cputype, mh->cpusubtype);
+    //printf("%s:", info->description);
+    gcip->arch = (char *)info->description;
+    //if (debug) printf("...description is %s\n", info->description);
+    bool is32 = (mh->cputype == 18 || mh->cputype == 7);
+    if (debug) printf("is 32? %d\n", is32);
+    if (debug) printf("filetype -> %d\n", mh->filetype);
+    if (debug) printf("ncmds -> %d\n", mh->ncmds);
+    struct load_command *lc = (is32 ? (struct load_command *)(mh + 1) : (struct load_command *)((struct mach_header_64 *)start + 1));
+    int ncmds;
+    for (ncmds = 0; ncmds < mh->ncmds; ++ncmds) {
+        lc = doloadcommand(start, lc, isFlipped, is32, gcip);
+    }
+    //printf("\n");
+}
+
+void initGCInfo() {
+    bzero((void *)GCInfo, sizeof(GCInfo));
+}
+
+void printGCInfo(char *filename) {
+    if (!GCInfo[0].hasObjC) return; // don't bother
+    // verify that flags are all the same
+    uint32_t flags = GCInfo[0].flags;
+    bool allSame = true;
+    for (int i = 1; i < 4 && GCInfo[i].arch; ++i) {
+        if (flags != GCInfo[i].flags) {
+            allSame = false;
+        }
+    }
+    if (rrOnly) {
+        if (allSame && (flags & 0x2))
+            return;
+        printf("*** not all GC in %s:\n", filename);
+    }
+    if (allSame && !verbose) {
+        printf("%s:", filename);
+        printflags(flags);
+        printf("\n");
+    }
+    else {
+        printf("%s:\n", filename);
+        for (int i = 0; i < 4 && GCInfo[i].arch; ++i) {
+            printf("%s:", GCInfo[i].arch);
+            printflags(GCInfo[i].flags);
+            printf("\n");
+        }
+        printf("\n");
+    }
+}
+
+void dofat(void *start) {
+    struct fat_header *fh = start;
+    bool needsFlip = false;
+    if (fh->magic == FAT_CIGAM) {
+        fh->nfat_arch = OSSwapInt32(fh->nfat_arch);
+        needsFlip = true;
+    }
+    if (debug) printf("%d architectures\n", fh->nfat_arch);
+    int narchs;
+    struct fat_arch *arch_ptr = (struct fat_arch *)(fh + 1);
+    for (narchs = 0; narchs < fh->nfat_arch; ++narchs) {
+        if (needsFlip) {
+            arch_ptr->offset = OSSwapInt32(arch_ptr->offset);
+            arch_ptr->size = OSSwapInt32(arch_ptr->size);
+        }
+        doofile(start+arch_ptr->offset, arch_ptr->size, &GCInfo[narchs]);
+        arch_ptr++;
+    }
+}
+
+bool openFile(const char *filename) {
+    FileName = filename;
+    // get size
+    struct stat statb;
+    int fd = open(filename, 0);
+    if (fd < 0) {
+        printf("couldn't open %s for reading\n", filename);
+        return false;
+    }
+    int osresult = fstat(fd, &statb);
+    if (osresult != 0) {
+        printf("couldn't get size of %s\n", filename);
+        close(fd);
+        return false;
+    }
+    FileSize = statb.st_size;
+    FileBase = malloc(FileSize);
+    if (!FileBase) {
+        printf("couldn't malloc %d bytes\n", FileSize);
+        close(fd);
+        return false;
+    }
+    off_t readsize = read(fd, FileBase, FileSize);
+    if (readsize != FileSize) {
+        printf("read %d bytes, wanted %d\n", readsize, FileSize);
+        close(fd);
+        return false;
+    }
+    close(fd);
+    return true;
+}
+
+void closeFile() {
+    free(FileBase);
+}
+
+void dumpinfo(char *filename) {
+    initGCInfo();
+    openFile(filename);
+    struct fat_header *fh = (struct fat_header *)FileBase;
+    if (fh->magic == FAT_MAGIC || fh->magic == FAT_CIGAM) {
+        dofat((void *)FileBase);
+        //printGCInfo(filename);
+    }
+    else if (fh->magic == MH_MAGIC || fh->magic == MH_CIGAM || fh->magic == MH_MAGIC_64 || fh->magic == MH_CIGAM_64) {
+        doofile((void *)FileBase, FileSize, &GCInfo[0]);
+        //printGCInfo(filename);
+    }
+    else if (!quiet) {
+        printf("don't understand %s!\n", filename);
+    }
+    closeFile();
+ }
+
diff --git a/objc-exports b/objc-exports
deleted file mode 100644 (file)
index b42dfb8..0000000
+++ /dev/null
@@ -1,187 +0,0 @@
-# Functions and variables explicitly exported from ObjC.
-# GrP 2002-2-4
-# Note that some commonly used functions are *not* listed in the 
-# ObjC headers (e.g. objc_flush_caches())
-# List.h
-.objc_class_name_List
-# objc-class.h
-_object_setInstanceVariable
-_object_getInstanceVariable
-_class_createInstance
-_class_createInstanceFromZone
-_class_setVersion
-_class_getVersion
-_class_getInstanceVariable
-_class_getInstanceMethod
-_class_getClassMethod
-_class_addMethods
-_class_removeMethods
-_class_poseAs
-_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
-_objc_exception_try_exit
-_objc_exception_extract
-_objc_exception_match
-_objc_exception_get_functions
-_objc_exception_set_functions
-# objc-sync.h
-_objc_sync_enter
-_objc_sync_exit
-_objc_sync_wait
-_objc_sync_notify
-_objc_sync_notifyAll
-# objc-load.h
-_objc_loadModules
-_objc_loadModule
-_objc_unloadModules
-# objc-runtime.h
-_objc_getClass
-_objc_getMetaClass
-_objc_msgSend
-# non-nil entry points disabled for now
-# _objc_msgSendNonNil
-_objc_msgSend_fpret
-_objc_msgSend_stret
-# _objc_msgSendNonNil_stret
-_objc_msgSendSuper
-_objc_msgSendSuper_stret
-_objc_msgSendv
-_objc_msgSendv_fpret
-_objc_msgSendv_stret
-_objc_getClassList
-_objc_getClasses
-_objc_lookUpClass
-_objc_getRequiredClass
-_objc_addClass
-_objc_setClassHandler
-_objc_setMultithreaded
-__alloc
-__copy
-__realloc
-__dealloc
-__zoneAlloc
-__zoneRealloc
-__zoneCopy
-__error
-# objc.h
-_sel_isMapped
-_sel_getName
-_sel_getUid
-_sel_registerName
-_object_getClassName
-_object_getIndexedIvars
-# Object.h
-.objc_class_name_Object
-_object_dispose
-_object_copy
-_object_copyFromZone
-_object_realloc
-_object_reallocFromZone
-# Protocol.h
-.objc_class_name_Protocol
-# error.h
-# everything inside is declared but no longer defined?!
-# hashtable2.h
-_NXCreateHashTableFromZone
-_NXCreateHashTable
-_NXFreeHashTable
-_NXEmptyHashTable
-_NXResetHashTable
-_NXCompareHashTables
-_NXCopyHashTable
-_NXCountHashTable
-_NXHashMember
-_NXHashGet
-_NXHashInsert
-_NXHashInsertIfAbsent
-_NXHashRemove
-_NXInitHashState
-_NXNextHashState
-_NXPtrHash
-_NXStrHash
-_NXPtrIsEqual
-_NXStrIsEqual
-_NXNoEffectFree
-_NXReallyFree
-_NXPtrPrototype
-_NXStrPrototype
-_NXPtrStructKeyPrototype
-_NXStrStructKeyPrototype
-_NXUniqueString
-_NXUniqueStringWithLength
-_NXUniqueStringNoCopy
-_NXCopyStringBuffer
-_NXCopyStringBufferFromZone
-# maptable.h
-_NXCreateMapTableFromZone
-_NXCreateMapTable
-_NXFreeMapTable
-_NXResetMapTable
-_NXCompareMapTables
-_NXCountMapTable
-_NXMapMember
-_NXMapGet
-_NXMapInsert
-_NXMapRemove
-_NXInitMapState
-_NXNextMapState
-_NXPtrValueMapPrototype
-_NXStrValueMapPrototype
-_NXObjectMapPrototype
-#
-# Functions that aren't in the headers but are used or are useful.
-#
-# sudo find / -xdev -type f -perm -0111 \! -name "libobjc*dylib" -print -exec nm -u {} \; > /tmp/all-used-symbols
-# (repeat with any other disks you want checked, appending to the same file)
-# nm /usr/lib/libobjc.dylib | awk '$2 ~ /^[ADST]$/' | colrm 1 11 | sort -u > /tmp/objc-exports
-# (note that you need an unstripped, un-nmedited libobjc.dylib)
-# grep -f /tmp/objc-exports /tmp/all-used-symbols | sort -u > /tmp/used-objc-symbols
-# grep -v -f /tmp/used-objc-symbols /tmp/objc-exports | sort -u > /tmp/unused-objc-symbols
-#
-__class_printDuplicateCacheEntries
-__class_printMethodCaches
-__class_printMethodCacheStatistics
-__objc_create_zone
-__objc_error
-__objc_flush_caches
-__objc_msgForward
-__objc_resolve_categories_for_class
-__objc_setClassLoader
-__objc_setNilReceiver
-__objc_getNilReceiver
-__objcInit
-_class_lookupMethod
-_class_respondsToMethod
-_instrumentObjcMessageSends
-_objc_getOrigClass
-# magic, or garbage?
-__dummy 
-_do_not_remove_this_dummy_function
-# used by debugging tools like heap
-__objc_debug_class_hash
-# used by Foundation's NSAutoreleaseFreedObjectCheckEnabled
-__objc_getFreedObjectClass
diff --git a/runtime/Accessors.subproj/objc-accessors-arch.s b/runtime/Accessors.subproj/objc-accessors-arch.s
new file mode 100644 (file)
index 0000000..b44adff
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2006 Apple Inc.  All Rights Reserved.
+ * 
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * 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@
+ */
+
+#if defined (__i386__) || defined (i386)
+    #include "objc-accessors-i386.s"
+#elif defined (__ppc__) || defined(ppc)
+    #include "objc-accessors-ppc.s"
+#elif defined (__ppc64__) || defined(ppc64)
+    #include "objc-accessors-ppc64.s"
+#elif defined (__x86_64__)
+    #include "objc-accessors-x86_64.s"
+#else
+    #error Architecture not supported
+#endif
diff --git a/runtime/Accessors.subproj/objc-accessors-i386.s b/runtime/Accessors.subproj/objc-accessors-i386.s
new file mode 100644 (file)
index 0000000..97e8f74
--- /dev/null
@@ -0,0 +1,157 @@
+/*
+ * Copyright (c) 2006 Apple Inc.  All Rights Reserved.
+ * 
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * 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@
+ */
+
+//////////////////////////////////////////////////////////////////////
+//
+// ENTRY               functionName
+//
+// Assembly directives to begin an exported function.
+//
+// Takes: functionName - name of the exported function
+//////////////////////////////////////////////////////////////////////
+
+.macro ENTRY
+       .text
+       .globl  $0
+$0:
+.endmacro
+
+//////////////////////////////////////////////////////////////////////
+//
+// END_ENTRY   functionName
+//
+// Assembly directives to end an exported function.  Just a placeholder,
+// a close-parenthesis for ENTRY, until it is needed for something.
+//
+// Takes: functionName - name of the exported function
+//////////////////////////////////////////////////////////////////////
+
+.macro END_ENTRY
+.endmacro
+
+//////////////////////////////////////////////////////////////////////
+//
+// OBJC_GET_PROPERTY_OFFSET     offset
+//
+// Optimized id typed accessor methods.
+// Generates an accesssor for a specified compile time offset.
+//
+// Takes: offset - offset of an id typed instance variable
+//////////////////////////////////////////////////////////////////////
+
+.macro OBJC_GET_PROPERTY_OFFSET
+       .private_extern __objc_getProperty_offset_$0
+    ENTRY __objc_getProperty_offset_$0
+       movl    4(%esp), %eax
+       movl    $0(%eax), %eax
+    ret
+    END_ENTRY __objc_getProperty_offset_$0
+.endmacro
+
+/* 
+ * Thunk to retrieve PC.
+ * `call 1; 1: pop` sequence breaks any branch-prediction stack. 
+ */
+L_get_pc_thunk.edx:
+       movl    (%esp,1), %edx
+       ret
+
+.macro LAZY_PIC_FUNCTION_STUB
+.data
+.picsymbol_stub
+L$0$stub:
+       .indirect_symbol $0
+       call    L_get_pc_thunk.edx
+L0$$0:
+       movl    L$0$lz - L0$$0(%edx), %ecx
+       jmp             *%ecx
+L$0$stub_binder:
+       lea             L$0$lz - L0$$0(%edx),%eax
+       pushl   %eax
+       jmp             dyld_stub_binding_helper
+       nop
+.data
+.lazy_symbol_pointer
+L$0$lz:
+       .indirect_symbol $0
+       .long L$0$stub_binder
+.endmacro
+
+LAZY_PIC_FUNCTION_STUB  _objc_assign_ivar_gc
+#define OBJC_ASSIGN_IVAR L_objc_assign_ivar_gc$stub // call objc_assign_ivar_gc() directly to avoid extra levels of testing/branching
+
+.macro OBJC_SET_PROPERTY_OFFSET
+       .private_extern __objc_setProperty_offset_$0
+       ENTRY __objc_setProperty_offset_$0
+       movl    4(%esp), %eax
+       movl    %eax, 8(%esp)                                   // pass self as the second parameter.
+       movl    12(%esp), %eax
+       movl    %eax, 4(%esp)                                   // pass value as the first parameter.
+       movl    $$$0, 12(%esp)                                  // pass the offset as the third parameter.
+       jmp             OBJC_ASSIGN_IVAR                                // objc_assign_ivar_gc() is __private_extern__
+       END_ENTRY __objc_setProperty_offset_$0
+.endmacro
+
+/********************************************************************
+ * id _objc_getProperty_offset_N(id self, SEL _cmd);
+ ********************************************************************/
+
+       OBJC_GET_PROPERTY_OFFSET        0
+       OBJC_GET_PROPERTY_OFFSET        4
+       OBJC_GET_PROPERTY_OFFSET        8
+       OBJC_GET_PROPERTY_OFFSET        12
+       OBJC_GET_PROPERTY_OFFSET        16
+       OBJC_GET_PROPERTY_OFFSET        20
+       OBJC_GET_PROPERTY_OFFSET        24
+       OBJC_GET_PROPERTY_OFFSET        28
+       OBJC_GET_PROPERTY_OFFSET        32
+       OBJC_GET_PROPERTY_OFFSET        36
+       OBJC_GET_PROPERTY_OFFSET        40
+       OBJC_GET_PROPERTY_OFFSET        44
+       OBJC_GET_PROPERTY_OFFSET        48
+       OBJC_GET_PROPERTY_OFFSET        52
+       OBJC_GET_PROPERTY_OFFSET        56
+       OBJC_GET_PROPERTY_OFFSET        60
+       OBJC_GET_PROPERTY_OFFSET        64
+
+/********************************************************************
+ * id _objc_setProperty_offset_N(id self, SEL _cmd, id value);
+ ********************************************************************/
+
+       OBJC_SET_PROPERTY_OFFSET        0
+       OBJC_SET_PROPERTY_OFFSET        4
+       OBJC_SET_PROPERTY_OFFSET        8
+       OBJC_SET_PROPERTY_OFFSET        12
+       OBJC_SET_PROPERTY_OFFSET        16
+       OBJC_SET_PROPERTY_OFFSET        20
+       OBJC_SET_PROPERTY_OFFSET        24
+       OBJC_SET_PROPERTY_OFFSET        28
+       OBJC_SET_PROPERTY_OFFSET        32
+       OBJC_SET_PROPERTY_OFFSET        36
+       OBJC_SET_PROPERTY_OFFSET        40
+       OBJC_SET_PROPERTY_OFFSET        44
+       OBJC_SET_PROPERTY_OFFSET        48
+       OBJC_SET_PROPERTY_OFFSET        52
+       OBJC_SET_PROPERTY_OFFSET        56
+       OBJC_SET_PROPERTY_OFFSET        60
+       OBJC_SET_PROPERTY_OFFSET        64
diff --git a/runtime/Accessors.subproj/objc-accessors-ppc.s b/runtime/Accessors.subproj/objc-accessors-ppc.s
new file mode 100644 (file)
index 0000000..df6aa0e
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) 2006 Apple Inc.  All Rights Reserved.
+ * 
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * 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 ppc version needs to be implemented. 
diff --git a/runtime/Accessors.subproj/objc-accessors-ppc64.s b/runtime/Accessors.subproj/objc-accessors-ppc64.s
new file mode 100644 (file)
index 0000000..b7a0603
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) 2006 Apple Inc.  All Rights Reserved.
+ * 
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * 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 ppc64 version needs to be implemented. 
diff --git a/runtime/Accessors.subproj/objc-accessors-table.h b/runtime/Accessors.subproj/objc-accessors-table.h
new file mode 100644 (file)
index 0000000..81fdb33
--- /dev/null
@@ -0,0 +1,166 @@
+/*
+ * Copyright (c) 2006 Apple Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * 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@
+ */
+
+/* Support for optimized accessor methods. Currently optimized accessor methods are provided for ivar offsets from 0 to 64. */
+
+#define ALWAYS_USE_C_ACCESSOR_METHODS 0
+
+// set of property getters for specific offsets.
+#define GETPROPERTY_OFFSET(offset) _objc_getProperty_offset_ ## offset
+#define DECLARE_GETPROPERTY_OFFSET(offset) extern id GETPROPERTY_OFFSET(offset)(id self, SEL _cmd)
+#define IMPLEMENT_GETPROPERTY_OFFSET(offset) static id GETPROPERTY_OFFSET(offset)(id self, SEL _cmd) { return *(id*)((char*)self + offset); }
+
+#if ALWAYS_USE_C_ACCESSOR_METHODS || defined(__ppc__) || defined(__ppc64__) || defined(__x86_64__)
+// C versions with hard-coded offsets. may be good enough in most cases.
+IMPLEMENT_GETPROPERTY_OFFSET(0)
+IMPLEMENT_GETPROPERTY_OFFSET(4)
+IMPLEMENT_GETPROPERTY_OFFSET(8)
+IMPLEMENT_GETPROPERTY_OFFSET(12)
+IMPLEMENT_GETPROPERTY_OFFSET(16)
+IMPLEMENT_GETPROPERTY_OFFSET(20)
+IMPLEMENT_GETPROPERTY_OFFSET(24)
+IMPLEMENT_GETPROPERTY_OFFSET(28)
+IMPLEMENT_GETPROPERTY_OFFSET(32)
+IMPLEMENT_GETPROPERTY_OFFSET(36)
+IMPLEMENT_GETPROPERTY_OFFSET(40)
+IMPLEMENT_GETPROPERTY_OFFSET(44)
+IMPLEMENT_GETPROPERTY_OFFSET(48)
+IMPLEMENT_GETPROPERTY_OFFSET(52)
+IMPLEMENT_GETPROPERTY_OFFSET(56)
+IMPLEMENT_GETPROPERTY_OFFSET(60)
+IMPLEMENT_GETPROPERTY_OFFSET(64)
+#else
+// forward delcarations to assembly versions. only on i386 right now.
+DECLARE_GETPROPERTY_OFFSET(0);
+DECLARE_GETPROPERTY_OFFSET(4);
+DECLARE_GETPROPERTY_OFFSET(8);
+DECLARE_GETPROPERTY_OFFSET(12);
+DECLARE_GETPROPERTY_OFFSET(16);
+DECLARE_GETPROPERTY_OFFSET(20);
+DECLARE_GETPROPERTY_OFFSET(24);
+DECLARE_GETPROPERTY_OFFSET(28);
+DECLARE_GETPROPERTY_OFFSET(32);
+DECLARE_GETPROPERTY_OFFSET(36);
+DECLARE_GETPROPERTY_OFFSET(40);
+DECLARE_GETPROPERTY_OFFSET(44);
+DECLARE_GETPROPERTY_OFFSET(48);
+DECLARE_GETPROPERTY_OFFSET(52);
+DECLARE_GETPROPERTY_OFFSET(56);
+DECLARE_GETPROPERTY_OFFSET(60);
+DECLARE_GETPROPERTY_OFFSET(64);
+#endif
+
+static void* _getProperty_offset_table[] = {
+    GETPROPERTY_OFFSET(0),
+    GETPROPERTY_OFFSET(4),
+    GETPROPERTY_OFFSET(8),
+    GETPROPERTY_OFFSET(12),
+    GETPROPERTY_OFFSET(16),
+    GETPROPERTY_OFFSET(20),
+    GETPROPERTY_OFFSET(24),
+    GETPROPERTY_OFFSET(28),
+    GETPROPERTY_OFFSET(32),
+    GETPROPERTY_OFFSET(36),
+    GETPROPERTY_OFFSET(40),
+    GETPROPERTY_OFFSET(44),
+    GETPROPERTY_OFFSET(48),
+    GETPROPERTY_OFFSET(52),
+    GETPROPERTY_OFFSET(56),
+    GETPROPERTY_OFFSET(60),
+    GETPROPERTY_OFFSET(64),
+};
+
+#undef GETPROPERTY_OFFSET
+#undef DECLARE_GETPROPERTY_OFFSET
+#undef IMPLEMENT_GETPROPERTY_OFFSET
+#define GETPROPERTY_IMP(offset) ((offset <= 64) ? (IMP)_getProperty_offset_table[offset >> 2] : NULL)
+
+// set of property setters for specific offsets.
+#define SETPROPERTY_OFFSET(offset) _objc_setProperty_offset_ ## offset
+#define DECLARE_SETPROPERTY_OFFSET(offset) extern id SETPROPERTY_OFFSET(offset)(id self, SEL _cmd, ...)
+#define IMPLEMENT_SETPROPERTY_OFFSET(offset) __private_extern__ void SETPROPERTY_OFFSET(offset)(id self, SEL _cmd, id value) { objc_assign_ivar_gc(value, self, offset); }
+
+#if ALWAYS_USE_C_ACCESSOR_METHODS || !defined(__i386__)
+// C versions with hard-coded offsets. may be good enough in most cases.
+IMPLEMENT_SETPROPERTY_OFFSET(0)
+IMPLEMENT_SETPROPERTY_OFFSET(4)
+IMPLEMENT_SETPROPERTY_OFFSET(8)
+IMPLEMENT_SETPROPERTY_OFFSET(12)
+IMPLEMENT_SETPROPERTY_OFFSET(16)
+IMPLEMENT_SETPROPERTY_OFFSET(20)
+IMPLEMENT_SETPROPERTY_OFFSET(24)
+IMPLEMENT_SETPROPERTY_OFFSET(28)
+IMPLEMENT_SETPROPERTY_OFFSET(32)
+IMPLEMENT_SETPROPERTY_OFFSET(36)
+IMPLEMENT_SETPROPERTY_OFFSET(40)
+IMPLEMENT_SETPROPERTY_OFFSET(44)
+IMPLEMENT_SETPROPERTY_OFFSET(48)
+IMPLEMENT_SETPROPERTY_OFFSET(52)
+IMPLEMENT_SETPROPERTY_OFFSET(56)
+IMPLEMENT_SETPROPERTY_OFFSET(60)
+IMPLEMENT_SETPROPERTY_OFFSET(64)
+#else
+// forward delcarations to assembly versions. only on i386 right now.
+DECLARE_SETPROPERTY_OFFSET(0);
+DECLARE_SETPROPERTY_OFFSET(4);
+DECLARE_SETPROPERTY_OFFSET(8);
+DECLARE_SETPROPERTY_OFFSET(12);
+DECLARE_SETPROPERTY_OFFSET(16);
+DECLARE_SETPROPERTY_OFFSET(20);
+DECLARE_SETPROPERTY_OFFSET(24);
+DECLARE_SETPROPERTY_OFFSET(28);
+DECLARE_SETPROPERTY_OFFSET(32);
+DECLARE_SETPROPERTY_OFFSET(36);
+DECLARE_SETPROPERTY_OFFSET(40);
+DECLARE_SETPROPERTY_OFFSET(44);
+DECLARE_SETPROPERTY_OFFSET(48);
+DECLARE_SETPROPERTY_OFFSET(52);
+DECLARE_SETPROPERTY_OFFSET(56);
+DECLARE_SETPROPERTY_OFFSET(60);
+DECLARE_SETPROPERTY_OFFSET(64);
+#endif
+
+static void* _setProperty_offset_table[] = {
+    SETPROPERTY_OFFSET(0),
+    SETPROPERTY_OFFSET(4),
+    SETPROPERTY_OFFSET(8),
+    SETPROPERTY_OFFSET(12),
+    SETPROPERTY_OFFSET(16),
+    SETPROPERTY_OFFSET(20),
+    SETPROPERTY_OFFSET(24),
+    SETPROPERTY_OFFSET(28),
+    SETPROPERTY_OFFSET(32),
+    SETPROPERTY_OFFSET(36),
+    SETPROPERTY_OFFSET(40),
+    SETPROPERTY_OFFSET(44),
+    SETPROPERTY_OFFSET(48),
+    SETPROPERTY_OFFSET(52),
+    SETPROPERTY_OFFSET(56),
+    SETPROPERTY_OFFSET(60),
+    SETPROPERTY_OFFSET(64),
+};
+
+#undef SETPROPERTY_OFFSET
+#undef DECLARE_SETPROPERTY_OFFSET
+#undef IMPLEMENT_SETPROPERTY_OFFSET
+#define SETPROPERTY_IMP(offset) ((offset <= 64) ? (IMP)_setProperty_offset_table[offset >> 2] : NULL)
diff --git a/runtime/Accessors.subproj/objc-accessors-x86_64.s b/runtime/Accessors.subproj/objc-accessors-x86_64.s
new file mode 100644 (file)
index 0000000..ea1026d
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) 2006 Apple Inc.  All Rights Reserved.
+ * 
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * 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 x86-64 version needs to be implemented.
diff --git a/runtime/Accessors.subproj/objc-accessors.h b/runtime/Accessors.subproj/objc-accessors.h
new file mode 100644 (file)
index 0000000..5342bd2
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2006-2007 Apple Inc.  All Rights Reserved.
+ * 
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * 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@
+ */
+
+#ifndef _OBJC_ACCESSORS_H_
+#define _OBJC_ACCESSORS_H_
+
+#import <objc/objc.h>
+#import <stddef.h>
+
+// Called under non-GC for retain or copy attributed properties
+void objc_setProperty(id self, SEL _cmd, ptrdiff_t offset, id newValue, BOOL atomic, BOOL shouldCopy);
+id objc_getProperty(id self, SEL _cmd, ptrdiff_t offset, BOOL atomic);
+
+// Called under GC by compiler for copying structures containing objects or other strong pointers when
+// the destination memory is not known to be stack local memory.
+// Called to read instance variable structures (or other non-word sized entities) atomically 
+void objc_copyStruct(void *dest, const void *src, ptrdiff_t size, BOOL atomic, BOOL hasStrong);
+
+// OBSOLETE
+
+@protocol NSCopying;
+
+// called for @property(copy)
+id <NSCopying> object_getProperty_bycopy(id object, SEL _cmd, ptrdiff_t offset);
+void object_setProperty_bycopy(id object, SEL _cmd, id <NSCopying> value, ptrdiff_t offset);
+
+// called for @property(retain)
+id object_getProperty_byref(id object, SEL _cmd, ptrdiff_t offset);
+void object_setProperty_byref(id object, SEL _cmd, id value, ptrdiff_t offset);
+
+#endif
diff --git a/runtime/Accessors.subproj/objc-accessors.m b/runtime/Accessors.subproj/objc-accessors.m
new file mode 100644 (file)
index 0000000..3add7d2
--- /dev/null
@@ -0,0 +1,231 @@
+/*
+ * Copyright (c) 2006-2007 Apple Inc.  All Rights Reserved.
+ * 
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * 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 <string.h>
+#import <stddef.h>
+
+#import <libkern/OSAtomic.h>
+
+#import "objc-accessors.h"
+#import <objc/objc-auto.h>
+#import <objc/runtime.h>
+#import "../objc-private.h"
+
+#import "/usr/local/include/auto_zone.h"
+
+#import "objc-accessors-table.h"
+
+// stub interface declarations to make compiler happy.
+
+@interface __NSCopyable
+- (id)copyWithZone:(void *)zone;
+@end
+
+@interface __NSRetained
+- (id)retain;
+- (oneway void)release;
+- (id)autorelease;
+@end
+
+static /*inline*/ IMP optimized_getter_for_gc(id self, SEL name, ptrdiff_t offset) {
+    // replace this method with a faster version that does no message sends, and fewer tests.
+    IMP getter = GETPROPERTY_IMP(offset);
+    if (getter != NULL) {
+        // HACK ALERT:  replaces the IMP in the cache!
+        Class cls = self->isa;
+        Method method = class_getInstanceMethod(cls, name);
+        if (method_getImplementation(method) != getter)
+            method_setImplementation(method, getter);
+    }
+    return getter;
+}
+
+static /*inline*/ IMP optimized_setter_for_gc(id self, SEL name, ptrdiff_t offset) {
+    // replace this method with a faster version that does no message sends.
+    IMP setter = SETPROPERTY_IMP(offset);
+    if (setter != NULL) {
+        // HACK ALERT:  replaces the IMP in the cache!
+        Class cls = self->isa;
+        Method method = class_getInstanceMethod(cls, name);
+        if (method_getImplementation(method) != setter)
+            method_setImplementation(method, setter);
+    }
+    return setter;
+}
+
+// ATOMIC entry points
+
+typedef uintptr_t spin_lock_t;
+extern void _spin_lock(spin_lock_t *lockp);
+extern int  _spin_lock_try(spin_lock_t *lockp);
+extern void _spin_unlock(spin_lock_t *lockp);
+
+/* need to consider cache line contention - space locks out XXX */
+
+#define GOODPOWER 7
+#define GOODMASK ((1<<GOODPOWER)-1)
+#define GOODHASH(x) (((long)x >> 5) & GOODMASK)
+static spin_lock_t PropertyLocks[1 << GOODPOWER] = { 0 };
+
+id objc_getProperty(id self, SEL _cmd, ptrdiff_t offset, BOOL atomic) {
+    if (UseGC) {
+        // FIXME:  we could optimize getters when a class is first initialized, then KVO won't get confused.
+        if (false) {
+            IMP getter = optimized_getter_for_gc(self, _cmd, offset);
+            if (getter) return getter(self, _cmd);
+        }
+        return *(id*) ((char*)self + offset);
+    }
+    
+    // Retain release world
+    id *slot = (id*) ((char*)self + offset);
+    if (!atomic) return *slot;
+        
+    // Atomic retain release world
+    spin_lock_t *slotlock = &PropertyLocks[GOODHASH(slot)];
+    _spin_lock(slotlock);
+    id value = [*slot retain];
+    _spin_unlock(slotlock);
+    
+    // for performance, we (safely) issue the autorelease OUTSIDE of the spinlock.
+    return [value autorelease];
+}
+
+
+void objc_setProperty(id self, SEL _cmd, ptrdiff_t offset, id newValue, BOOL atomic, BOOL shouldCopy) {
+    if (UseGC) {
+        if (shouldCopy) {
+            newValue = [newValue copyWithZone:NULL];
+        }
+        else if (false) {
+            IMP setter = optimized_setter_for_gc(self, _cmd, offset);
+            if (setter) {
+                setter(self, _cmd, newValue);
+                return;
+            }
+        }
+        objc_assign_ivar_internal(newValue, self, offset);
+        return;
+    }
+
+    // Retain release world
+    id oldValue, *slot = (id*) ((char*)self + offset);
+
+    // atomic or not, if slot would be unchanged, do nothing.
+    if (!shouldCopy && *slot == newValue) return;
+   
+    newValue = (shouldCopy ? [newValue copyWithZone:NULL] : [newValue retain]);
+
+    if (!atomic) {
+        oldValue = *slot;
+        *slot = newValue;
+    } else {
+        spin_lock_t *slotlock = &PropertyLocks[GOODHASH(slot)];
+        _spin_lock(slotlock);
+        oldValue = *slot;
+        *slot = newValue;        
+        _spin_unlock(slotlock);        
+    }
+
+    [oldValue release];
+}
+
+
+__private_extern__ auto_zone_t *gc_zone;
+
+// This entry point was designed wrong.  When used as a getter, src needs to be locked so that
+// if simultaneously used for a setter then there would be contention on src.
+// So we need two locks - one of which will be contended.
+void objc_copyStruct(void *dest, const void *src, ptrdiff_t size, BOOL atomic, BOOL hasStrong) {
+    static spin_lock_t StructLocks[1 << GOODPOWER] = { 0 };
+    spin_lock_t *lockfirst = NULL;
+    spin_lock_t *locksecond = NULL;
+    if (atomic) {
+        lockfirst = &StructLocks[GOODHASH(src)];
+        locksecond = &StructLocks[GOODHASH(dest)];
+        // order the locks by address so that we don't deadlock
+        if (lockfirst > locksecond) {
+            lockfirst = locksecond;
+            locksecond = &StructLocks[GOODHASH(src)];
+        }
+        else if (lockfirst == locksecond) {
+            // lucky - we only need one lock
+            locksecond = NULL;
+        }
+        _spin_lock(lockfirst);
+        if (locksecond) _spin_lock(locksecond);
+    }
+    if (UseGC && hasStrong) {
+        auto_zone_write_barrier_memmove(gc_zone, dest, src, size);
+    }
+    else {
+        memmove(dest, src, size);
+    }
+    if (atomic) {
+        _spin_unlock(lockfirst);
+        if (locksecond) _spin_unlock(locksecond);
+    }
+}
+
+// PRE-ATOMIC entry points
+
+id <NSCopying> object_getProperty_bycopy(id self, SEL _cmd, ptrdiff_t offset) {
+    if (UseGC) {
+        IMP getter = optimized_getter_for_gc(self, _cmd, offset);
+        if (getter) return getter(self, _cmd);
+    }
+    id *slot = (id*) ((char*)self + offset);
+    return *slot;
+}
+
+void object_setProperty_bycopy(id self, SEL _cmd, id <NSCopying> value, ptrdiff_t offset) {
+    id *slot = (id*) ((char*)self + offset);
+    id oldValue = *slot;
+    objc_assign_ivar_internal([value copyWithZone:NULL], self, offset);
+    [oldValue release];
+}
+
+id object_getProperty_byref(id self, SEL _cmd, ptrdiff_t offset) {
+    if (UseGC) {
+        IMP getter = optimized_getter_for_gc(self, _cmd, offset);
+        if (getter) return getter(self, _cmd);
+    }
+    id *slot = (id*) ((char*)self + offset);
+    return *slot;
+}
+
+void object_setProperty_byref(id self, SEL _cmd, id value, ptrdiff_t offset) {
+    if (UseGC) {
+        IMP setter = optimized_setter_for_gc(self, _cmd, offset);
+        if (setter) {
+            setter(self, _cmd, value);
+            return;
+        }
+    }
+    id *slot = (id*) ((char*)self + offset);
+    id oldValue = *slot;
+    if (oldValue != value) {
+        objc_assign_ivar_internal([value retain], self, offset);
+        [oldValue release];
+    }
+}
index 082949eb984833c930348618f3a3f0e61c170dc5..9d162450a1c728381c5bb2ccd5f98387db79b29d 100644 (file)
@@ -1,10 +1,8 @@
 /*
- * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2004, 2007 Apple 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
  * @APPLE_LICENSE_HEADER_END@
  */
 
-#warning Intel version needs to be implemented.
+/*
+    This file defines the non-GC variants of objc_assign_* on a dedicated
+    page in the (__DATA,__data) section. At load time under GC, each
+    routine is overwritten with a jump to its GC variant. It is necessary
+    for these routines to exist on a dedicated page for vm_protect to
+    work properly in the GC case. The page exists in the data segment to
+    reduce the kernel's page table overhead.
+
+    Note: To avoid wasting more space than necessary at runtime, this file
+    must not contain anything other than the objc_assign_* routines.
+*/
+
+.data
+.align 12   // align to page boundary
+
+LNonGCAssigns$Begin:
+
+// id objc_assign_ivar(id value, id dest, ptrdiff_t offset);
+.globl  _objc_assign_ivar
+_objc_assign_ivar:
+    pushl   %ebp
+    movl    %esp,%ebp
+    movl    0x08(%ebp),%eax     // value
+    movl    0x0c(%ebp),%ecx     // dest
+    movl    0x10(%ebp),%edx     // offset
+    movl    %eax,(%ecx,%edx)    // return (*(dest + offset) = value);
+    leave
+    ret
+
+// id objc_assign_global(id value, id *dest);
+.globl  _objc_assign_global
+_objc_assign_global:
+    pushl   %ebp
+    movl    %esp,%ebp
+    movl    0x08(%ebp),%eax     // value
+    movl    0x0c(%ebp),%edx     // dest
+    movl    %eax,(%edx)         // return (*dest = value);
+    leave
+    ret
+
+// As of OS X 10.5, objc_assign_strongCast_non_gc is identical to
+// objc_assign_global_non_gc.
+
+// id objc_assign_strongCast(id value, id *dest);
+.globl  _objc_assign_strongCast
+_objc_assign_strongCast:
+    pushl   %ebp
+    movl    %esp,%ebp
+    movl    0x08(%ebp),%eax     // value
+    movl    0x0c(%ebp),%edx     // dest
+    movl    %eax,(%edx)         // return (*dest = value);
+    leave
+    ret
+
+LNonGCAssigns$End:
+
+// Claim the remainder of the page.
+.set    L$set$assignsSize,LNonGCAssigns$End-LNonGCAssigns$Begin
+.space  4096-L$set$assignsSize
index 33eb98f321f3159b243958a21f57579912d8f3b5..026467be68bcd091b37ff3a1457457fad05bdb63 100644 (file)
@@ -1,10 +1,8 @@
 /*
- * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2004, 2006 Apple 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
@@ -42,7 +40,7 @@
 _$0:                           ; primary entry point
     ba      $1                 ; branch to runtime page
     
-    .globl  _$0_non_gc         ; non_gc entry point name
+    .private_extern _$0_non_gc ; non_gc entry point name
 _$0_non_gc:                    ; non_gc entry point
     .endmacro
 
diff --git a/runtime/Auto.subproj/objc-auto-ppc64.s b/runtime/Auto.subproj/objc-auto-ppc64.s
new file mode 100644 (file)
index 0000000..a17f1a5
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) 2004 Apple Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * 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 ppc64 version needs to be implemented. 
diff --git a/runtime/Auto.subproj/objc-auto-x86_64.s b/runtime/Auto.subproj/objc-auto-x86_64.s
new file mode 100644 (file)
index 0000000..561b38e
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2006-2007 Apple Inc.  All Rights Reserved.
+ * 
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * 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 file defines the non-GC variants of objc_assign_* on a dedicated
+    page in the (__DATA,__data) section. At load time under GC, each
+    routine is overwritten with a jump to its GC variant. It is necessary
+    for these routines to exist on a dedicated page for vm_protect to
+    work properly in the GC case. The page exists in the data segment to
+    reduce the kernel's page table overhead.
+
+    Note: To avoid wasting more space than necessary at runtime, this file
+    must not contain anything other than the objc_assign_* routines.
+*/
+
+.data
+.align 12   // align to page boundary
+
+LNonGCAssigns$Begin:
+
+// id objc_assign_ivar(id value, id dest, ptrdiff_t offset);
+.globl  _objc_assign_ivar
+_objc_assign_ivar:
+    pushq   %rbp
+    movq    %rsp,%rbp
+    movq    %rdi,(%rsi,%rdx)    // *(dest + offset) = value);
+    movq    %rdi,%rax           // return value;
+    leave
+    ret
+
+// id objc_assign_global(id value, id *dest);
+.globl  _objc_assign_global
+_objc_assign_global:
+    pushq   %rbp
+    movq    %rsp,%rbp
+    movq    %rdi,(%rsi)     // *(dest = value);
+    movq    %rdi,%rax       // return value;
+    leave
+    ret
+
+// As of OS X 10.5, objc_assign_strongCast_non_gc is identical to
+// objc_assign_global_non_gc.
+
+// id objc_assign_strongCast(id value, id *dest);
+.globl  _objc_assign_strongCast
+_objc_assign_strongCast:
+    pushq   %rbp
+    movq    %rsp,%rbp
+    movq    %rdi,(%rsi)     // *(dest = value);
+    movq    %rdi,%rax       // return value;
+    leave
+    ret
+
+LNonGCAssigns$End:
+
+// Claim the remainder of the page.
+.set    L$set$assignsSize,LNonGCAssigns$End-LNonGCAssigns$Begin
+.space  4096-L$set$assignsSize
index 220e3d03d60f58d73903370d135e8abe6844d6ab..601515cd3d264abdd34107af246ab80ea3eb3396 100644 (file)
@@ -1,23 +1,22 @@
 /*
- * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2004-2006 Apple 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.
+ * 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
+ * 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.
+ * 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@
  */
     #include "objc-auto-i386.s"
 #elif defined (__ppc__) || defined(ppc)
     #include "objc-auto-ppc.s"
+#elif defined (__ppc64__) || defined(ppc64)
+    #include "objc-auto-ppc64.s"
+#elif defined (__x86_64__)
+    #include "objc-auto-x86_64.s"
 #else
     #error Architecture not supported
 #endif
index d379ddc7e200e3b82ea43e158828975214f49d1a..959791aacbaf0610f33b69c879fba309f52510bd 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
+ * Copyright (c) 1999-2007 Apple Inc.  All Rights Reserved.
  * 
- * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
+ * @APPLE_LICENSE_HEADER_START@
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
  ********************************************************************
  ********************************************************************/
 
-// The assembler syntax for an immediate value is the same as the
-// syntax for a macro argument number (dollar sign followed by the
-// digits).  Argument number wins in this ambiguity.  Until the
-// 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
+#undef  OBJC_ASM
+#define OBJC_ASM
+#include "objc-rtp.h"
+
 
 /********************************************************************
 * Data used by the ObjC runtime.
@@ -52,7 +42,7 @@
 // Substitute receiver for messages sent to nil (usually also nil)
 // id _objc_nilReceiver
 .align 4
-.globl __objc_nilReceiver
+.private_extern __objc_nilReceiver
 __objc_nilReceiver:
        .long   0
 
@@ -60,7 +50,7 @@ __objc_nilReceiver:
 // to get the critical regions for which method caches 
 // cannot be garbage collected.
 
-.globl         _objc_entryPoints
+.private_extern _objc_entryPoints
 _objc_entryPoints:
        .long   __cache_getImp
        .long   __cache_getMethod
@@ -71,7 +61,7 @@ _objc_entryPoints:
        .long   _objc_msgSendSuper_stret
        .long   0
 
-.globl         _objc_exitPoints
+.private_extern _objc_exitPoints
 _objc_exitPoints:
        .long   LGetImpExit
        .long   LGetMethodExit
@@ -83,20 +73,6 @@ _objc_exitPoints:
        .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.
@@ -114,15 +90,15 @@ L_get_pc_thunk.edx:
 .picsymbol_stub               ;\
 L ## name ## $stub:           ;\
        .indirect_symbol name     ;\
-       call    L_get_pc_thunk.edx ;\
+       call    L0$ ## name ;\
 L0$ ## name:                  ;\
+       popl    %edx          ;\
        movl    L ## name ## $lz-L0$ ## name(%edx),%ecx ;\
-       jmp     %ecx              ;\
+       jmp     *%ecx              ;\
 L ## name ## $stub_binder:    ;\
     lea     L ## name ## $lz-L0$ ## name(%edx),%eax ;\
     pushl   %eax              ;\
     jmp     dyld_stub_binding_helper ;\
-    nop                       ;\
 .data                         ;\
 .lazy_symbol_pointer          ;\
 L ## name ## $lz:             ;\
@@ -246,8 +222,8 @@ EXTERNAL_SYMBOL     = 1
 .macro LOAD_STATIC_WORD
 
 #if defined(__DYNAMIC__)
-       call    L_get_pc_thunk.edx
-1:     
+       call    1f
+1:     popl    %edx
 .if $2 == EXTERNAL_SYMBOL
        movl    L$1-1b(%edx),$0
        movl    0($0),$0
@@ -278,8 +254,8 @@ EXTERNAL_SYMBOL     = 1
 
 .macro LEA_STATIC_DATA
 #if defined(__DYNAMIC__)
-       call    L_get_pc_thunk.edx
-1:     
+       call    1f
+1:     popl    %edx
 .if $2 == EXTERNAL_SYMBOL
        movl    L$1-1b(%edx),$0
 .elseif $2 == LOCAL_SYMBOL
@@ -336,7 +312,7 @@ $0:
        // Current stack contents: ret
        pushl   %ebp
        movl    %esp,%ebp
-       subl    $kEight,%esp
+       subl    $$8,%esp
        // Current stack contents: ret, ebp, pad, pad
        CALL_EXTERN(mcount)
        movl    %ebp,%esp
@@ -357,6 +333,8 @@ $0:
 //        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)
+//        selector in %ecx
+//        class to search in %edx
 //
 //       cacheMissLabel = label to branch to iff method is not cached
 //
@@ -381,33 +359,9 @@ CACHE_GET     = 2  // first argument is class, search that class
 .macro CacheLookup
 
 // load variables and save caller registers.
-// Overlapped to prevent AGI
-.if $0 == WORD_RETURN                  // Regular word return
-.if $1 == MSG_SEND                     // MSG_SEND
-       movl    isa(%eax), %eax         //   class = self->isa
-       movl    selector(%esp), %ecx    //   get selector
-.elseif $1 == MSG_SENDSUPER            // MSG_SENDSUPER
-       movl    super(%esp), %eax       //   get objc_super address
-       movl    class(%eax), %eax       //   class = caller->class
-       movl    selector(%esp), %ecx    //   get selector
-.else                                  // CACHE_GET
-       movl    selector(%esp), %ecx    //   get selector - class already in eax
-.endif
-.else                                  // Struct return
-.if $1 == MSG_SEND                     // MSG_SEND (stret)
-       movl    isa(%eax), %eax         //   class = self->isa
-       movl    (selector_stret)(%esp), %ecx    //   get selector
-.elseif $1 == MSG_SENDSUPER            // MSG_SENDSUPER (stret)
-       movl    super_stret(%esp), %eax //   get objc_super address
-       movl    class(%eax), %eax       //   class = caller->class
-       movl    (selector_stret)(%esp), %ecx    //   get selector
-.else                                  // CACHE_GET
-       !! This should not happen.
-.endif
-.endif
 
        pushl   %edi                    // save scratch register
-       movl    cache(%eax), %eax       // cache = class->cache
+       movl    cache(%edx), %edi       // cache = class->cache
        pushl   %esi                    // save scratch register
 
 #if defined(OBJC_INSTRUMENTED)
@@ -415,19 +369,15 @@ CACHE_GET     = 2 // first argument is class, search that class
        pushl   %eax                    // save cache pointer
        xorl    %ebx, %ebx              // probeCount = 0
 #endif
-       leal    buckets(%eax), %edi     // buckets = &cache->buckets
-       movl    mask(%eax), %esi                // mask = cache->mask
+       movl    mask(%edi), %esi                // mask = cache->mask
+       leal    buckets(%edi), %edi     // buckets = &cache->buckets
        movl    %ecx, %edx              // index = selector
-#ifdef NO_MACRO_CONSTS
-       shrl    $kTwo, %edx             // index = selector >> 2
-#else
-       shrl    $2, %edx                // index = selector >> 2
-#endif
+       shrl    $$2, %edx               // index = selector >> 2
 
 // search the receiver's cache
 LMsgSendProbeCache_$0_$1_$2:
 #if defined(OBJC_INSTRUMENTED)
-       addl    $kOne, %ebx                     // probeCount += 1
+       addl    $$1, %ebx                       // probeCount += 1
 #endif
        andl    %esi, %edx              // index &= mask
        movl    (%edi, %edx, 4), %eax   // method = buckets[index]
@@ -436,7 +386,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
-       addl    $kOne, %edx                     // bump index ...
+       addl    $$1, %edx                       // bump index ...
        jmp     LMsgSendProbeCache_$0_$1_$2 // ... and loop
 
 // not found in cache: restore state and go to callers handler
@@ -448,17 +398,13 @@ LMsgSendCacheMiss_$0_$1_$2:
        je      LMsgSendMissInstrumentDone_$0_$1_$2     // ... emptyCache, do not record anything
 
        // locate and update the CacheInstrumentation structure
-       addl    $kOne, %esi                     // entryCount = mask + 1
-#ifdef NO_MACRO_CONSTS
-       shll    $kTwo, %esi             // tableSize = entryCount * sizeof(entry)
-#else
-       shll    $2, %esi                        // tableSize = entryCount * sizeof(entry)
-#endif
+       addl    $$1, %esi                       // entryCount = mask + 1
+       shll    $$2, %esi               // tableSize = entryCount * sizeof(entry)
        addl    $buckets, %esi          // offset = buckets + tableSize
        addl    %edx, %esi              // cacheData = &cache->buckets[mask+1]
 
        movl    missCount(%esi), %edi   // 
-       addl    $kOne, %edi                     // 
+       addl    $$1, %edi                       // 
        movl    %edi, missCount(%esi)   // cacheData->missCount += 1
        movl    missProbes(%esi), %edi  // 
        addl    %ebx, %edi              // 
@@ -475,14 +421,10 @@ LMsgSendMaxMissProbeOK_$0_$1_$2:
        movl    $(CACHE_HISTOGRAM_SIZE-1), %ebx
 LMsgSendMissHistoIndexSet_$0_$1_$2:
        LEA_STATIC_DATA %esi, _CacheMissHistogram, EXTERNAL_SYMBOL
-#ifdef NO_MACRO_CONSTS
-       shll    $kTwo, %ebx             // convert probeCount to histogram index
-#else
-       shll    $2, %ebx                        // convert probeCount to histogram index
-#endif
+       shll    $$2, %ebx               // convert probeCount to histogram index
        addl    %ebx, %esi              // calculate &CacheMissHistogram[probeCount<<2]
        movl    0(%esi), %edi           // get current tally
-       addl    $kOne, %edi                     // 
+       addl    $$1, %edi                       // 
        movl    %edi, 0(%esi)           // tally += 1
 LMsgSendMissInstrumentDone_$0_$1_$2:
        popl    %ebx                    // restore non-volatile register
@@ -537,17 +479,13 @@ LMsgSendCacheHit_$0_$1_$2:
        je      LMsgSendHitInstrumentDone_$0_$1_$2      // ... emptyCache, do not record anything
 
        // locate and update the CacheInstrumentation structure
-       addl    $kOne, %esi                     // entryCount = mask + 1
-#ifdef NO_MACRO_CONSTS
-       shll    $kTwo, %esi             // tableSize = entryCount * sizeof(entry)
-#else
-       shll    $2, %esi                        // tableSize = entryCount * sizeof(entry)
-#endif
+       addl    $$1, %esi                       // entryCount = mask + 1
+       shll    $$2, %esi               // tableSize = entryCount * sizeof(entry)
        addl    $buckets, %esi          // offset = buckets + tableSize
        addl    %edx, %esi              // cacheData = &cache->buckets[mask+1]
 
        movl    hitCount(%esi), %edi
-       addl    $kOne, %edi
+       addl    $$1, %edi
        movl    %edi, hitCount(%esi)    // cacheData->hitCount += 1
        movl    hitProbes(%esi), %edi
        addl    %ebx, %edi
@@ -564,14 +502,10 @@ LMsgSendMaxHitProbeOK_$0_$1_$2:
        movl    $(CACHE_HISTOGRAM_SIZE-1), %ebx
 LMsgSendHitHistoIndexSet_$0_$1_$2:
        LEA_STATIC_DATA %esi, _CacheHitHistogram, EXTERNAL_SYMBOL
-#ifdef NO_MACRO_CONSTS
-       shll    $kTwo, %ebx             // convert probeCount to histogram index
-#else
-       shll    $2, %ebx                        // convert probeCount to histogram index
-#endif
+       shll    $$2, %ebx               // convert probeCount to histogram index
        addl    %ebx, %esi              // calculate &CacheHitHistogram[probeCount<<2]
        movl    0(%esi), %edi           // get current tally
-       addl    $kOne, %edi                     // 
+       addl    $$1, %edi                       // 
        movl    %edi, 0(%esi)           // tally += 1
 LMsgSendHitInstrumentDone_$0_$1_$2:
        popl    %ebx                    // restore non-volatile register
@@ -624,20 +558,12 @@ 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
+       subl    $$4, %esp               // 16-byte align the stack
        // push args (class, selector)
        pushl   %ecx
        pushl   %eax
        CALL_EXTERN(__class_lookupMethodAndLoadCache)
-#ifdef NO_MACRO_CONSTS
-       addl    $kTwelve, %esp          // pop parameters and alignment
-#else
-       addl    $12, %esp               // pop parameters and alignment
-#endif
+       addl    $$12, %esp              // pop parameters and alignment
 .endmacro
 
 
@@ -656,10 +582,12 @@ LMsgSendHitInstrumentDone_$0_$1_$2:
  * to do the (PIC) lookup once in the caller than repeatedly here.
  ********************************************************************/
         
+       .private_extern __cache_getMethod
        ENTRY __cache_getMethod
 
-// load the class into eax
-       movl    self(%esp), %eax
+// load the class and selector
+       movl    selector(%esp), %ecx
+       movl    self(%esp), %edx
 
 // do lookup
        CacheLookup WORD_RETURN, CACHE_GET, LGetMethodMiss
@@ -686,10 +614,12 @@ LGetMethodExit:
  * If not found, returns NULL.
  ********************************************************************/
 
+       .private_extern __cache_getImp
        ENTRY __cache_getImp
 
-// load the class into eax
-       movl    self(%esp), %eax
+// load the class and selector
+       movl    selector(%esp), %ecx
+       movl    self(%esp), %edx
 
 // do lookup
        CacheLookup WORD_RETURN, CACHE_GET, LGetImpMiss
@@ -713,17 +643,32 @@ LGetImpExit:
  *
  ********************************************************************/
 
+       ENTRY _objc_msgSend_fixup_rtp
+// selector(%esp) is address of message ref instead of SEL
+       movl    selector(%esp), %edx
+       movl    4(%edx), %ecx
+       movl    %ecx, selector(%esp)    // convert selector
+       jmp     _objc_msgSend
+       END_ENTRY _objc_msgSend_fixup_rtp
+
        ENTRY   _objc_msgSend
        CALL_MCOUNTER
 
+// load receiver and selector
+       movl    selector(%esp), %ecx
        movl    self(%esp), %eax
 
+// check whether selector is ignored
+       cmpl    $ kIgnore, %ecx
+       je      LMsgSendDone            // return self from %eax
+
 // check whether receiver is nil 
        testl   %eax, %eax
        je      LMsgSendNilSelf
 
-// receiver is non-nil: search the cache
+// receiver (in %eax) is non-nil: search the cache
 LMsgSendReceiverOk:
+       movl    isa(%eax), %edx         // class = self->isa
        CacheLookup WORD_RETURN, MSG_SEND, LMsgSendCacheMiss
        movl    $kFwdMsgSend, %edx      // flag word-return for _objc_msgForward
        jmp     *%eax                   // goto *imp
@@ -736,12 +681,13 @@ LMsgSendCacheMiss:
 
 // message sent to nil: redirect to nil receiver, if any
 LMsgSendNilSelf:
-       call    L_get_pc_thunk.edx      // load new receiver
-1:     movl    __objc_nilReceiver-1b(%edx),%eax
+       call    1f                      // load new receiver
+1:     popl    %edx
+       movl    __objc_nilReceiver-1b(%edx),%eax
        testl   %eax, %eax              // return nil if no new receiver
        je      LMsgSendReturnZero
        movl    %eax, self(%esp)        // send to new receiver
-       jmp     LMsgSendReceiverOk
+       jmp     LMsgSendReceiverOk      // receiver must be in %eax
 LMsgSendReturnZero:
        // %eax is already zero
        movl    $0,%edx
@@ -767,12 +713,32 @@ LMsgSendExit:
  * };
  ********************************************************************/
 
+       ENTRY _objc_msgSendSuper2_fixup_rtp
+       // super(%esp) is objc_super struct with subclass instead of superclass
+       mov     super(%esp), %edx       // edx = objc_super
+       mov     class(%edx), %eax       // eax = objc_super->class
+       mov     4(%eax), %eax           // eax = objc_super->class->super_class
+       mov     %eax, class(%edx)       // objc_super->class = eax
+       // selector(%esp) is address of message ref instead of SEL
+       mov     selector(%esp), %eax
+       mov     4(%eax), %eax
+       mov     %eax, selector(%esp)
+       jmp     _objc_msgSendSuper
+       END_ENTRY _objc_msgSendSuper2_fixedup_rtp
+
        ENTRY   _objc_msgSendSuper
        CALL_MCOUNTER
 
-       movl    super(%esp), %eax
+// load selector and class to search
+       movl    super(%esp), %eax       // struct objc_super
+       movl    selector(%esp), %ecx
+       movl    class(%eax), %edx       // struct objc_super->class
 
-// receiver is non-nil: search the cache
+// check whether selector is ignored
+       cmpl    $ kIgnore, %ecx
+       je      LMsgSendSuperIgnored    // return self from %eax
+
+// search the cache (class in %edx)
        CacheLookup WORD_RETURN, MSG_SENDSUPER, LMsgSendSuperCacheMiss
        movl    $kFwdMsgSend, %edx      // flag word-return for _objc_msgForward
        jmp     *%eax                   // goto *imp
@@ -783,6 +749,12 @@ LMsgSendSuperCacheMiss:
        movl    $kFwdMsgSend, %edx      // flag word-return for _objc_msgForward
        jmp     *%eax                   // goto *imp
 
+// ignored selector: return self
+LMsgSendSuperIgnored:
+       movl    super(%esp), %eax
+       movl    receiver(%eax), %eax
+       ret
+       
 LMsgSendSuperExit:
        END_ENTRY       _objc_msgSendSuper
 
@@ -844,17 +816,32 @@ LMsgSendvArgsOK:
  *
  ********************************************************************/
 
+       ENTRY _objc_msgSend_fpret_fixup_rtp
+// selector(%esp) is address of message ref instead of SEL
+       movl    selector(%esp), %edx
+       movl    4(%edx), %ecx
+       movl    %ecx, selector(%esp)    // convert selector
+       jmp     _objc_msgSend_fpret
+       END_ENTRY _objc_msgSend_fpret_fixup_rtp
+
        ENTRY   _objc_msgSend_fpret
        CALL_MCOUNTER
 
+// load receiver and selector
+       movl    selector(%esp), %ecx
        movl    self(%esp), %eax
 
+// check whether selector is ignored
+       cmpl    $ kIgnore, %ecx
+       je      LMsgSendFpretDone       // return self from %eax
+
 // check whether receiver is nil 
        testl   %eax, %eax
        je      LMsgSendFpretNilSelf
 
-// receiver is non-nil: search the cache
+// receiver (in %eax) is non-nil: search the cache
 LMsgSendFpretReceiverOk:
+       movl    isa(%eax), %edx         // class = self->isa
        CacheLookup WORD_RETURN, MSG_SEND, LMsgSendFpretCacheMiss
        movl    $kFwdMsgSend, %edx      // flag word-return for _objc_msgForward
        jmp     *%eax                   // goto *imp
@@ -867,12 +854,13 @@ LMsgSendFpretCacheMiss:
 
 // message sent to nil: redirect to nil receiver, if any
 LMsgSendFpretNilSelf:
-       call    L_get_pc_thunk.edx      // load new receiver
-1:     movl    __objc_nilReceiver-1b(%edx),%eax
+       call    1f                      // load new receiver
+1:     popl    %edx
+       movl    __objc_nilReceiver-1b(%edx),%eax
        testl   %eax, %eax              // return zero if no new receiver
        je      LMsgSendFpretReturnZero
        movl    %eax, self(%esp)        // send to new receiver
-       jmp     LMsgSendFpretReceiverOk
+       jmp     LMsgSendFpretReceiverOk // receiver must be in %eax
 LMsgSendFpretReturnZero:
        fldz
 LMsgSendFpretDone:
@@ -947,17 +935,28 @@ LMsgSendvFpretArgsOK:
  *             (sp+12) is the selector
  ********************************************************************/
 
+       ENTRY _objc_msgSend_stret_fixup_rtp
+// selector_stret(%esp) is address of message ref instead of SEL
+       movl    selector_stret(%esp), %edx
+       movl    4(%edx), %ecx
+       movl    %ecx, selector_stret(%esp)      // convert selector
+       jmp     _objc_msgSend_stret
+       END_ENTRY _objc_msgSend_stret_fixup_rtp
+
        ENTRY   _objc_msgSend_stret
        CALL_MCOUNTER
 
+// load receiver and selector
        movl    self_stret(%esp), %eax
+       movl    (selector_stret)(%esp), %ecx
 
 // check whether receiver is nil 
        testl   %eax, %eax
        je      LMsgSendStretNilSelf
 
-// receiver is non-nil: search the cache
+// receiver (in %eax) is non-nil: search the cache
 LMsgSendStretReceiverOk:
+       movl    isa(%eax), %edx         //   class = self->isa
        CacheLookup STRUCT_RETURN, MSG_SEND, LMsgSendStretCacheMiss
        movl    $kFwdMsgSendStret, %edx // flag struct-return for _objc_msgForward
        jmp     *%eax                   // goto *imp
@@ -970,12 +969,13 @@ LMsgSendStretCacheMiss:
 
 // message sent to nil: redirect to nil receiver, if any
 LMsgSendStretNilSelf:
-       call    L_get_pc_thunk.edx      // load new receiver
-1:     movl    __objc_nilReceiver-1b(%edx),%eax
+       call    1f                      // load new receiver
+1:     popl    %edx
+       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
-       jmp     LMsgSendStretReceiverOk
+       jmp     LMsgSendStretReceiverOk // receiver must be in %eax
 LMsgSendStretDone:
        ret     $4                      // pop struct return address (#2995932)
 
@@ -1008,12 +1008,28 @@ LMsgSendStretExit:
  *
  ********************************************************************/
 
+       ENTRY _objc_msgSendSuper2_stret_fixup_rtp
+       // super_stret(%esp) is objc_super with subclass instead of superclass
+       mov     super_stret(%esp), %edx // edx = objc_super
+       mov     class(%edx), %eax       // eax = objc_super->class
+       mov     4(%eax), %eax           // eax = objc_super->class->super_class
+       mov     %eax, class(%edx)       // objc_super->class = eax
+       // selector_stret(%esp) is address of message ref instead of SEL
+       mov     selector_stret(%esp), %eax
+       mov     4(%eax), %eax
+       mov     %eax, selector_stret(%esp)
+       jmp     _objc_msgSendSuper_stret
+       END_ENTRY _objc_msgSendSuper2_stret_fixedup_rtp
+
        ENTRY   _objc_msgSendSuper_stret
        CALL_MCOUNTER
 
-       movl    super_stret(%esp), %eax
+// load selector and class to search
+       movl    super_stret(%esp), %eax // struct objc_super
+       movl    (selector_stret)(%esp), %ecx    //   get selector
+       movl    class(%eax), %edx       // struct objc_super->class
 
-// receiver is non-nil: search the cache
+// search the cache (class in %edx)
        CacheLookup STRUCT_RETURN, MSG_SENDSUPER, LMsgSendSuperStretCacheMiss
        movl    $kFwdMsgSendStret, %edx // flag struct-return for _objc_msgForward
        jmp     *%eax                   // goto *imp
@@ -1029,11 +1045,11 @@ LMsgSendSuperStretExit:
 
 
 /********************************************************************
- * id objc_msgSendv_stret(void *st_addr, id self, SEL _cmd, unsigned size, marg_list frame);
+ * void objc_msgSendv_stret(void *st_addr, id self, SEL _cmd, unsigned size, marg_list frame);
  *
  * objc_msgSendv_stret is the struct-return form of msgSendv.
- * The ABI calls for (sp+4) to be used as the address of the structure
- * being returned, with the parameters in the succeeding locations.
+ * This function does not use the struct-return ABI; instead, the
+ * structure return address is passed as a normal parameter.
  * 
  * On entry:   (sp+4)  is the address in which the returned struct is put,
  *             (sp+8)  is the message receiver,
@@ -1093,134 +1109,154 @@ LMsgSendvStretArgsOK:
  *
  ********************************************************************/
 
-// Location LFwdStr contains the string "forward::"
-// Location LFwdSel contains a pointer to LFwdStr, that can be changed
-// to point to another forward:: string for selector uniquing
-// purposes.  ALWAYS dereference LFwdSel to get to "forward::" !!
-       .objc_meth_var_names
-       .align  2
-LFwdStr:.ascii "forward::\0"
-
-       .objc_message_refs
-       .align  2
-LFwdSel:.long  LFwdStr
+// _FwdSel is @selector(forward::), set up in map_images().
+// ALWAYS dereference _FwdSel to get to "forward::" !!
+       .data
+       .align 2
+       .private_extern _FwdSel
+_FwdSel: .long 0
 
        .cstring
-       .align  2
-LUnkSelStr:    .ascii  "Does not recognize selector %s\0"
+       .align 2
+LUnkSelStr: .ascii "Does not recognize selector %s\0"
+
+       .data
+       .align 2
+       .private_extern __objc_forward_handler
+__objc_forward_handler:        .long 0
+
+       .data
+       .align 2
+       .private_extern __objc_forward_stret_handler
+__objc_forward_stret_handler:  .long 0
+
 
        ENTRY   __objc_msgForward
 
-#if defined(KERNEL)
-       trap                            // _objc_msgForward is not for the kernel
-#else
-       cmpl    $kFwdMsgSendStret, %edx // check secret flag for word vs struct return
-       je      LForwardStretVersion    // jump to struct return version...
+       // Check return type (stret or not)
+       cmpl    $kFwdMsgSendStret, %edx
+       je      LMsgForwardStret
 
-       // non-stret version ...
+       // Get PIC base into %edx
+       call    L__objc_msgForward$pic_base
+L__objc_msgForward$pic_base:
+       popl    %edx
+       
+       // Non-struct return
+
+       // Call user handler, if any
+       movl    __objc_forward_handler-L__objc_msgForward$pic_base(%edx),%ecx
+       testl   %ecx, %ecx              // if not NULL
+       je      1f                      //   skip to default handler
+       jmp     *%ecx                   // call __objc_forward_handler
+1:     
+       // No user handler
+       // Push stack frame
        pushl   %ebp
-       movl    %esp,%ebp
+       movl    %esp, %ebp
+       
+       // Die if forwarding "forward::"
        movl    (selector+4)(%ebp), %eax
-#if defined(__DYNAMIC__)
-       call    L_get_pc_thunk.edx
-L__objc_msgForward$pic_base:
-       leal    LFwdSel-L__objc_msgForward$pic_base(%edx),%ecx
+       movl    _FwdSel-L__objc_msgForward$pic_base(%edx),%ecx
        cmpl    %ecx, %eax
-#else
-       cmpl    LFwdSel, %eax
-#endif
        je      LMsgForwardError
 
+       // Call [receiver forward:sel :margs]
        subl    $8, %esp                // 16-byte align the stack
        leal    (self+4)(%ebp), %ecx
-       pushl   %ecx
-       pushl   %eax
-#if defined(__DYNAMIC__)
-       movl    LFwdSel-L__objc_msgForward$pic_base(%edx),%ecx
-#else
-       movl    LFwdSel,%ecx
-#endif
-       pushl   %ecx
-       pushl   (self+4)(%ebp)
+       pushl   %ecx                    // &margs
+       pushl   %eax                    // sel
+       movl    _FwdSel-L__objc_msgForward$pic_base(%edx),%ecx
+       pushl   %ecx                    // forward::
+       pushl   (self+4)(%ebp)          // receiver
+       
        call    _objc_msgSend
-       movl    %ebp,%esp
+       
+       movl    %ebp, %esp
        popl    %ebp
        ret
 
-// call error handler with unrecognized selector message
-       .align  4, 0x90
 LMsgForwardError:
+       // Call __objc_error(receiver, "unknown selector %s", "forward::")
        subl    $12, %esp               // 16-byte align the stack
-#if defined(__DYNAMIC__)
-       leal    LFwdSel-L__objc_msgForward$pic_base(%edx),%eax
+       movl    _FwdSel-L__objc_msgForward$pic_base(%edx),%eax
        pushl   %eax
        leal    LUnkSelStr-L__objc_msgForward$pic_base(%edx),%eax
        pushl   %eax
-#else
-       pushl   $LFwdSel
-       pushl   $LUnkSelStr
-#endif
        pushl   (self+4)(%ebp)
-       CALL_EXTERN(___objc_error)      // volatile, will not return
+       CALL_EXTERN(___objc_error)      // never returns
+       
 
-// ***** Stret version of function below
-// ***** offsets have been changed (by adding a word to make room for the 
-// ***** structure, and labels have been changed to be unique.
+LMsgForwardStret:
+       // Struct return
 
-LForwardStretVersion:
-       pushl   %ebp
-       movl    %esp,%ebp
-       movl    (selector_stret+4)(%ebp), %eax
-
-#if defined(__DYNAMIC__)
-       call    L_get_pc_thunk.edx
+       // Get PIC base into %edx
+       call    L__objc_msgForwardStret$pic_base
 L__objc_msgForwardStret$pic_base:
-       leal    LFwdSel-L__objc_msgForwardStret$pic_base(%edx),%ecx
+       popl    %edx
+
+       // Call user handler, if any
+       movl    __objc_forward_stret_handler-L__objc_msgForwardStret$pic_base(%edx), %ecx
+       testl   %ecx, %ecx              // if not NULL
+       je      1f                      //   skip to default handler
+       jmp     *%ecx                   // call __objc_forward_stret_handler
+1:     
+       // No user handler
+       // Push stack frame
+       pushl   %ebp
+       movl    %esp, %ebp
+
+       // Die if forwarding "forward::"
+       movl    (selector_stret+4)(%ebp), %eax
+       movl    _FwdSel-L__objc_msgForwardStret$pic_base(%edx), %ecx
        cmpl    %ecx, %eax
-#else
-       cmpl    LFwdSel, %eax
-#endif
        je      LMsgForwardStretError
 
+       // Call [receiver forward:sel :margs]
        subl    $8, %esp                // 16-byte align the stack
        leal    (self_stret+4)(%ebp), %ecx
-       pushl   %ecx
-       pushl   %eax
-#if defined(__DYNAMIC__)
-       movl    LFwdSel-L__objc_msgForwardStret$pic_base(%edx),%ecx
-#else
-       movl    LFwdSel,%ecx
-#endif
-       pushl   %ecx
-       pushl   (self_stret+4)(%ebp)
+       pushl   %ecx                    // &margs
+       pushl   %eax                    // sel
+       movl    _FwdSel-L__objc_msgForwardStret$pic_base(%edx),%ecx
+       pushl   %ecx                    // forward::
+       pushl   (self_stret+4)(%ebp)    // receiver
+       
        call    _objc_msgSend
-       movl    %ebp,%esp
+       
+       movl    %ebp, %esp
        popl    %ebp
        ret     $4                      // pop struct return address (#2995932)
 
-// call error handler with unrecognized selector message
-       .align  4, 0x90
 LMsgForwardStretError:
+       // Call __objc_error(receiver, "unknown selector %s", "forward::")
        subl    $12, %esp               // 16-byte align the stack
-#if defined(__DYNAMIC__)
-       leal    LFwdSel-L__objc_msgForwardStret$pic_base(%edx),%eax
+       leal    _FwdSel-L__objc_msgForwardStret$pic_base(%edx),%eax
        pushl   %eax
        leal    LUnkSelStr-L__objc_msgForwardStret$pic_base(%edx),%eax
        pushl   %eax
-#else
-       pushl   $LFwdSel
-       pushl   $LUnkSelStr
-#endif
        pushl   (self_stret+4)(%ebp)
-       CALL_EXTERN(___objc_error)      // volatile, will not return
+       CALL_EXTERN(___objc_error)      // never returns
 
-#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
+       ENTRY _method_invoke
+
+       movl    selector(%esp), %ecx
+       movl    method_name(%ecx), %edx
+       movl    method_imp(%ecx), %eax
+       movl    %edx, selector(%esp)
+       jmp     *%eax
+       
+       END_ENTRY _method_invoke
+
+
+       ENTRY _method_invoke_stret
+
+       movl    selector_stret(%esp), %ecx
+       movl    method_name(%ecx), %edx
+       movl    method_imp(%ecx), %eax
+       movl    %edx, selector_stret(%esp)
+       jmp     *%eax
+       
+       END_ENTRY _method_invoke_stret
index da2bc6e50551efcae21debac2aefb7eebf91d917..43a6e788a40e74c5758c5c5524d3fe4c7f0ff864 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
+ * Copyright (c) 1999-2007 Apple Inc.  All Rights Reserved.
  * 
- * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
+ * @APPLE_LICENSE_HEADER_START@
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
@@ -72,7 +70,7 @@
 ; Substitute receiver for messages sent to nil (usually also nil)
 ; id _objc_nilReceiver
        .align 4
-.globl __objc_nilReceiver
+.private_extern __objc_nilReceiver
 __objc_nilReceiver:
        .long   0
 
@@ -80,7 +78,7 @@ __objc_nilReceiver:
 ; caching code to figure out whether any threads are actively 
 ; in the cache for dispatching.  The labels surround the asm code
 ; that do cache lookups.  The tables are zero-terminated.
-.globl _objc_entryPoints
+.private_extern _objc_entryPoints
 _objc_entryPoints:
        .long   __cache_getImp
        .long   __cache_getMethod
@@ -91,7 +89,7 @@ _objc_entryPoints:
        .long   _objc_msgSend_rtp
        .long   0
 
-.globl _objc_exitPoints
+.private_extern _objc_exitPoints
 _objc_exitPoints:
        .long   LGetImpExit
        .long   LGetMethodExit
@@ -559,11 +557,8 @@ LLoop_$0_$1:
 
 #if !defined(KERNEL)
 ; Save the FP parameter registers.
-; Note: If we (the compiler) could determine that no FP arguments were in use,
-; we could use a different variant of this macro and avoid the need to spill the FP
-; registers (provided the runtime uses no FP).
-; We still do not spill vector argument registers, for which we really should have an alternate
-; entry point.
+; We do not spill vector argument registers. This is 
+; harmless because vector parameters are unsupported.
        stfd    f1, -104(r1)    ;
        stfd    f2,  -96(r1)    ;
        stfd    f3,  -88(r1)    ;
@@ -616,11 +611,6 @@ LLoop_$0_$1:
 #if !defined(KERNEL)
 
 ; Restore FP parameter registers
-; Note: If we (the compiler) could determine that no FP arguments were in use,
-; we could use a different variant of this macro and avoid the need to restore the FP
-; registers (provided the runtime uses no FP).
-; We still do not restore vector argument registers, for which we really should have an alternate
-; entry point.
        lfd     f1, -104(r1)    ;
        lfd     f2,  -96(r1)    ;
        lfd     f3,  -88(r1)    ;
@@ -750,6 +740,7 @@ LLoop_$0_$1:
  * to do the (PIC) lookup once in the caller than repeatedly here.
  ********************************************************************/
 
+    .private_extern __cache_getMethod
     ENTRY __cache_getMethod
 ; do profiling if enabled
     CALL_MCOUNT
@@ -781,6 +772,7 @@ LGetMethodExit:
  * If not found, returns NULL.
  ********************************************************************/
 
+    .private_extern __cache_getImp
     ENTRY __cache_getImp
 ; do profiling if enabled
     CALL_MCOUNT
@@ -821,6 +813,10 @@ LGetImpExit:
 _objc_msgSend_rtp = 0xfffeff00
 _objc_msgSend_rtp_exit = 0xfffeff00+0x100
 
+       ENTRY _objc_msgSend_fixup_rtp
+       lwz     r4, 4(r4)               ; load _cmd from message_ref
+       b       _objc_msgSend
+       END_ENTRY _objc_msgSend_fixup_rtp
        
        ENTRY _objc_msgSend
 ; check whether receiver is nil or selector is to be ignored
@@ -919,6 +915,11 @@ LMsgSendExit:
  *           r5 is the selector
  ********************************************************************/
 
+       ENTRY _objc_msgSend_stret_fixup_rtp
+       lwz     r5, 4(r5)               ; load _cmd from message_ref
+       b       _objc_msgSend_stret
+       END_ENTRY _objc_msgSend_stret_fixup_rtp
+       
        ENTRY _objc_msgSend_stret
 ; check whether receiver is nil
        cmplwi  r4,0                    ; receiver nil?
@@ -976,6 +977,15 @@ LMsgSendStretExit:
  * };
  ********************************************************************/
 
+       ENTRY _objc_msgSendSuper2_fixup_rtp
+       ; objc_super->class is superclass of the class to search
+       lwz     r11, CLASS(r3)
+       lwz     r4, 4(r4)               ; load _cmd from message_ref
+       lwz     r11, 4(r11)             ; r11 = cls->super_class
+       stw     r11, CLASS(r3)
+       b       _objc_msgSendSuper
+       END_ENTRY _objc_msgSendSuper2_fixup_rtp
+       
        ENTRY _objc_msgSendSuper
 ; do profiling when enabled
        CALL_MCOUNT
@@ -1032,6 +1042,15 @@ LMsgSendSuperExit:
  *             r5 is the selector
  ********************************************************************/
 
+       ENTRY _objc_msgSendSuper2_stret_fixup_rtp
+       ; objc_super->class is superclass of the class to search
+       lwz     r11, CLASS(r4)
+       lwz     r5, 4(r5)               ; load _cmd from message_ref
+       lwz     r11, 4(r11)             ; r11 = cls->super_class
+       stw     r11, CLASS(r4)
+       b       _objc_msgSendSuper_stret
+       END_ENTRY _objc_msgSendSuper2_stret_fixup_rtp
+
        ENTRY _objc_msgSendSuper_stret
 ; do profiling when enabled
        CALL_MCOUNT
@@ -1094,103 +1113,125 @@ LMsgSendSuperStretExit:
  *
  * typedef struct objc_sendv_margs {
  *     double          floatingPointArgs[13];
- *     int             linkageArea[6];
- *     int             registerArgs[8];
- *     int             stackArgs[variable];
+ *     intptr_t        linkageArea[6];
+ *     intptr_t        registerArgs[8];
+ *     intptr_t        stackArgs[variable];
  * };
  *
  ********************************************************************/
 
-; Location LFwdStr contains the string "forward::"
-; Location LFwdSel contains a pointer to LFwdStr, that can be changed
-; to point to another forward:: string for selector uniquing
-; purposes.  ALWAYS dereference LFwdSel to get to "forward::" !!
-       .objc_meth_var_names
-       .align 1
-LFwdStr: .ascii "forward::\0"
-
-       .objc_message_refs
+; _FwdSel is @selector(forward::), set up in map_images().
+; ALWAYS dereference _FwdSel to get to "forward::" !!
+       .data
        .align 2
-LFwdSel: .long LFwdStr
+       .private_extern _FwdSel
+_FwdSel: .long 0
 
        .cstring
-       .align 1
+       .align 2
 LUnkSelStr: .ascii "Does not recognize selector %s\0"
 
+       .data
+       .align 2
+       .private_extern __objc_forward_handler
+__objc_forward_handler:        .long 0
+
+       .data
+       .align 2
+       .private_extern __objc_forward_stret_handler
+__objc_forward_stret_handler:  .long 0
+       
+
        ENTRY __objc_msgForward
 ; do profiling when enabled
        CALL_MCOUNT
 
-#if !defined(KERNEL)
-       LOAD_STATIC_WORD r12, LFwdSel, LOCAL_SYMBOL     ; get uniqued selector for "forward::"
-       cmplwi  r11,kFwdMsgSendStret    ; via objc_msgSend or objc_msgSend_stret?
-       beq     LMsgForwardStretSel             ; branch for objc_msgSend_stret
-       cmplw   r12,r4                                  ; if (sel == @selector (forward::))
-       b       LMsgForwardSelCmpDone   ; check the result in common code
-LMsgForwardStretSel:
-       cmplw   r12,r5                                  ; if (sel == @selector (forward::))
-LMsgForwardSelCmpDone:
-       beq     LMsgForwardError                ;   goto error
+       ; Check return type (stret or not)
+       cmplwi  r11,kFwdMsgSendStret
+       beq     LMsgForwardStretSel
+
+       ; Non-stret return
+       ; Call user handler, if any
+       LOAD_STATIC_WORD r12, __objc_forward_handler, LOCAL_SYMBOL
+       cmplwi  r12, 0
+       mtctr   r12
+       bnectr                  ; call _objc_forward_handler if not NULL
+       ; No user handler
+       mr      r11, r3         ; r11 = receiver
+       mr      r12, r4         ; r12 = SEL
+       b       LMsgForwardSelCmp
+
+LMsgForwardStretSel:   
+       ; Stret return
+       ; Call user handler, if any
+       LOAD_STATIC_WORD r12, __objc_forward_stret_handler, LOCAL_SYMBOL
+       cmplwi  r12, 0
+       mtctr   r12
+       bnectr                  ; call _objc_forward_stret_handler if not NULL
+       ; No user handler
+       mr      r11, r4         ; r11 = receiver
+       mr      r12, r5         ; r12 = SEL
+
+LMsgForwardSelCmp:
+       ; r11 is the receiver
+       ; r12 is the selector
+       
+       ; Die if forwarding "forward::"
+       LOAD_STATIC_WORD r2, _FwdSel, LOCAL_SYMBOL
+       cmplw   r2, r12
+       beq     LMsgForwardError
 
+       ; Save registers to margs
+       ; Link register
        mflr    r0
-       stw     r0,  8(r1)              ; save lr
-       
-       stw     r3, 24(r1)              ; put register arguments on stack for forwarding
-       stw     r4, 28(r1)              ; (stack based args already follow this area)
-       stw     r5, 32(r1)              ;
-       stw     r6, 36(r1)              ; 
-       stw     r7, 40(r1)              ;
+       stw     r0,  8(r1)
+
+       ; GPR parameters
+       stw     r3, 24(r1)
+       stw     r4, 28(r1)
+       stw     r5, 32(r1)
+       stw     r6, 36(r1)
+       stw     r7, 40(r1)
        stw     r8, 44(r1)
        stw     r9, 48(r1)
        stw     r10,52(r1)
 
-       stfd    f1, -104(r1)            ; prepend floating point registers to marg_list
-       stfd    f2,  -96(r1)            ;
-       stfd    f3,  -88(r1)            ;
-       stfd    f4,  -80(r1)            ;
-       stfd    f5,  -72(r1)            ;
-       stfd    f6,  -64(r1)            ;
-       stfd    f7,  -56(r1)            ;
-       stfd    f8,  -48(r1)            ;
-       stfd    f9,  -40(r1)            ;
-       stfd    f10, -32(r1)            ;
-       stfd    f11, -24(r1)            ;
-       stfd    f12, -16(r1)            ;
-       stfd    f13,  -8(r1)            ;
-
-       cmplwi  r11,kFwdMsgSendStret    ; via objc_msgSend or objc_msgSend_stret?
-       beq     LMsgForwardStretParams  ; branch for objc_msgSend_stret
-                                                   ; first arg (r3) remains self
-       mr      r5,r4                   ; third arg is previous selector
-       b       LMsgForwardParamsDone
-
-LMsgForwardStretParams:
-       mr      r3,r4                   ; first arg is self
-                            ; third arg (r5) remains previous selector
-LMsgForwardParamsDone:
-       mr      r4,r12                  ; second arg is "forward::"
-       subi    r6,r1,13*8              ; fourth arg is &objc_sendv_margs
-
-       stwu    r1,-56-(13*8)(r1)       ; push aligned linkage and parameter areas, set stack link
+       ; FP parameters
+       stfd    f1, -104(r1)
+       stfd    f2,  -96(r1)
+       stfd    f3,  -88(r1)
+       stfd    f4,  -80(r1)
+       stfd    f5,  -72(r1)
+       stfd    f6,  -64(r1)
+       stfd    f7,  -56(r1)
+       stfd    f8,  -48(r1)
+       stfd    f9,  -40(r1)
+       stfd    f10, -32(r1)
+       stfd    f11, -24(r1)
+       stfd    f12, -16(r1)
+       stfd    f13,  -8(r1)
+
+       ; Call [receiver forward:sel :margs]
+       mr      r3, r11                 ; receiver
+       mr      r4, r2                  ; forward::
+       mr      r5, r12                 ; sel
+       subi    r6,r1,13*8              ; &margs (on stack)
+
+       stwu    r1,-56-(13*8)(r1)       ; push stack frame
        bl      _objc_msgSend           ; [self forward:sel :objc_sendv_margs]
-       addi    r1,r1,56+13*8           ; deallocate linkage and parameters areas
+       addi    r1,r1,56+13*8           ; pop stack frame
 
        lwz     r0,8(r1)                ; restore lr
        mtlr    r0                      ;
        blr                             ;
 
-; call error handler with unrecognized selector message
 LMsgForwardError:
-       cmplwi  r11,kFwdMsgSendStret    ; via objc_msgSend or objc_msgSend_stret?
-       bne     LMsgForwardErrorParamsOK;  branch for objc_msgSend
-       mr      r3,r4                   ; first arg is self
-LMsgForwardErrorParamsOK:
+       ; Call __objc_error(receiver, "unknown selector %s", "forward::")
+       mr      r3, r11
        LEA_STATIC_DATA r4, LUnkSelStr, LOCAL_SYMBOL
-       mr      r5,r12                  ; third arg is "forward::"
-       CALL_EXTERN(___objc_error) ; never returns
-#endif /* !defined(KERNEL) */
-       trap                                    ; ___objc_error should never return
-    ; _objc_msgForward is not for the kernel - kernel code ends up here
+       mr      r5, r2
+       CALL_EXTERN(___objc_error)      ; never returns
+       trap
 
        END_ENTRY __objc_msgForward
 
@@ -1308,27 +1349,16 @@ LMsgSendvSendIt:
        END_ENTRY _objc_msgSendv_fpret
 
 /********************************************************************
- * struct_type objc_msgSendv_stret(id          self,
- *                             SEL             op,
- *                             unsigned        arg_size,
- *                             marg_list       arg_frame); 
- *
- * objc_msgSendv_stret is the struct-return form of msgSendv.
- * The ABI calls for r3 to be used as the address of the structure
- * being returned, with the parameters in the succeeding registers.
- * 
- * An equally correct way to prototype this routine is:
- *
  * void objc_msgSendv_stret(void       *structStorage,
  *                     id              self,
  *                     SEL             op,
  *                     unsigned        arg_size,
  *                     marg_list       arg_frame);
  *
- * which is useful in, for example, message forwarding where the
- * structure-return address needs to be passed in.
- *
- * The ABI for the two cases are identical.
+ * objc_msgSendv_stret is the struct-return form of msgSendv.
+ * This function does not use the struct-return ABI; instead, the
+ * structure return address is passed as a normal parameter.
+ * The two are functionally identical on ppc, but not on other architectures.
  *
  * On entry:   r3 is the address in which the returned struct is put,
  *             r4 is the message receiver,
@@ -1418,9 +1448,21 @@ LMsgSendvStretSendIt:
        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
+       ENTRY _method_invoke
+       
+       lwz     r12, METHOD_IMP(r4)
+       lwz     r4, METHOD_NAME(r4)
+       mtctr   r12
+       bctr
+       
+       END_ENTRY _method_invoke
+
+
+       ENTRY _method_invoke_stret
+       
+       lwz     r12, METHOD_IMP(r5)
+       lwz     r5, METHOD_NAME(r5)
+       mtctr   r12
+       bctr
+       
+       END_ENTRY _method_invoke_stret
diff --git a/runtime/Messengers.subproj/objc-msg-ppc64.s b/runtime/Messengers.subproj/objc-msg-ppc64.s
new file mode 100644 (file)
index 0000000..9f24607
--- /dev/null
@@ -0,0 +1,1434 @@
+/*
+ * Copyright (c) 1999-2007 Apple Inc.  All Rights Reserved.
+ * 
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * 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-msg-ppc64.s - PowerPC code to support objc messaging.
+ *  Based on objc-msg-ppc.s, copyright 1988-1996 NeXT Software, Inc.
+ ********************************************************************/
+
+#define __OBJC2__ 1
+
+#undef  OBJC_ASM
+#define OBJC_ASM
+#include "objc-rtp.h"
+
+/********************************************************************
+ * Data used by the ObjC runtime.
+ *
+ ********************************************************************/
+
+       .data
+; Substitute receiver for messages sent to nil (usually also nil)
+; id _objc_nilReceiver
+       .align 4
+.private_extern __objc_nilReceiver
+__objc_nilReceiver:
+       .quad   0
+
+; 8 bytes of zero, for floating-point zero return
+L_zero:
+       .space 8
+
+; _objc_entryPoints and _objc_exitPoints are used by method dispatch
+; caching code to figure out whether any threads are actively 
+; in the cache for dispatching.  The labels surround the asm code
+; that do cache lookups.  The tables are zero-terminated.
+.private_extern _objc_entryPoints
+_objc_entryPoints:
+       .quad   __cache_getImp
+       .quad   __cache_getMethod
+       .quad   _objc_msgSend
+       .quad   _objc_msgSend_stret
+       .quad   _objc_msgSendSuper
+       .quad   _objc_msgSendSuper_stret
+       .quad   _objc_msgSend_rtp
+       .quad   0
+
+.private_extern _objc_exitPoints
+_objc_exitPoints:
+       .quad   LGetImpExit
+       .quad   LGetMethodExit
+       .quad   LMsgSendExit
+       .quad   LMsgSendStretExit
+       .quad   LMsgSendSuperExit
+       .quad   LMsgSendSuperStretExit
+       .quad   _objc_msgSend_rtp_exit
+       .quad   0
+
+/*
+ * Handcrafted dyld stubs for each external call.
+ * They should be converted into a local branch after linking. aB.
+ */
+
+/* asm_help.h version is not what we want */
+#undef CALL_EXTERN
+
+#define CALL_EXTERN(name)      bl      L ## name ## $stub
+
+#define LAZY_PIC_FUNCTION_STUB(name) \
+.data                         @\
+.section __TEXT, __picsymbol_stub, symbol_stubs, pure_instructions, 32 @\
+L ## name ## $stub:           @\
+       .indirect_symbol name     @\
+       mflr    r0                @\
+       bcl     20,31,L0$ ## name @\
+L0$ ## name:                  @\
+       mflr    r11               @\
+       addis   r11,r11,ha16(L ## name ## $lazy_ptr-L0$ ## name) @\
+       mtlr    r0                @\
+       ldu     r12,lo16(L ## name ## $lazy_ptr-L0$ ## name)(r11) @\
+       mtctr   r12               @\
+       bctr                      @\
+.data                         @\
+.lazy_symbol_pointer          @\
+L ## name ## $lazy_ptr:       @\
+       .indirect_symbol name     @\
+       .quad dyld_stub_binding_helper
+
+; _class_lookupMethodAndLoadCache
+LAZY_PIC_FUNCTION_STUB(__class_lookupMethodAndLoadCache)
+
+#if __OBJC2__
+; _objc_fixupMessageRef        
+LAZY_PIC_FUNCTION_STUB(__objc_fixupMessageRef)
+#endif
+
+; __objc_error
+LAZY_PIC_FUNCTION_STUB(___objc_error) /* No stub needed */
+
+#if defined(PROFILE)
+; mcount
+LAZY_PIC_FUNCTION_STUB(mcount)
+#endif /* PROFILE */
+
+
+/********************************************************************
+ *
+ * Structure definitions.
+ *
+ ********************************************************************/
+
+; objc_super parameter to sendSuper
+#define RECEIVER         0
+#define CLASS            8
+
+; Selected field offsets in class structure
+#define ISA              0
+#if __OBJC2__
+#  define CACHE          16
+#else
+#  define CACHE          64
+#endif
+
+; Method descriptor
+#define METHOD_NAME      0
+#define METHOD_IMP       16
+
+; Cache header
+#define MASK             0
+#define OCCUPIED         4
+#define BUCKETS          8     // variable length array
+
+#if defined(OBJC_INSTRUMENTED)
+; Cache instrumentation data, follows buckets
+#define hitCount         0
+#define hitProbes        hitCount + 4
+#define maxHitProbes     hitProbes + 4
+#define missCount        maxHitProbes + 4
+#define missProbes       missCount + 4
+#define maxMissProbes    missProbes + 4
+#define flushCount       maxMissProbes + 4
+#define flushedEntries   flushCount + 4
+#endif
+
+/********************************************************************
+ *
+ * Constants.
+ *
+ ********************************************************************/
+
+// In case the implementation is _objc_msgForward, indicate to it
+// whether the method was invoked as a word-return or struct-return.
+// The li instruction costs nothing because it fits into spare
+// processor cycles. We choose to make the MsgSend indicator non-zero
+// as r11 is already guaranteed non-zero for a cache hit (no li needed).
+
+#define kFwdMsgSend          1
+#define kFwdMsgSendStret     0
+
+
+/********************************************************************
+ *
+ * Useful macros.  Macros are used instead of subroutines, for speed.
+ *
+ ********************************************************************/
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;
+; LOAD_STATIC_WORD     targetReg, symbolName, LOCAL_SYMBOL | EXTERNAL_SYMBOL
+;
+; Load the value of the named static data word.
+;
+; Takes: targetReg      - the register, other than r0, to load
+;       symbolName      - the name of the symbol
+;       LOCAL_SYMBOL    - symbol name used as-is
+;       EXTERNAL_SYMBOL - symbol name gets nonlazy treatment
+;
+; Eats: r0 and targetReg
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+; Values to specify whether the symbols is plain or nonlazy
+#define LOCAL_SYMBOL     0
+#define EXTERNAL_SYMBOL  1
+
+.macro LOAD_STATIC_WORD
+
+       mflr    r0
+       bcl     20,31,1f        ; 31 is cr7[so]
+1:     mflr    $0
+       mtlr    r0
+.if $2 == EXTERNAL_SYMBOL
+       addis   $0,$0,ha16(L$1-1b)
+       ld      $0,lo16(L$1-1b)($0)
+       ld      $0,0($0)
+.elseif $2 == LOCAL_SYMBOL
+       addis   $0,$0,ha16($1-1b)
+       ld      $0,lo16($1-1b)($0)
+.else
+       !!! Unknown symbol type !!!
+.endif
+
+.endmacro
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;
+; LEA_STATIC_DATA      targetReg, symbolName, LOCAL_SYMBOL | EXTERNAL_SYMBOL
+;
+; Load the address of the named static data.
+;
+; Takes: targetReg      - the register, other than r0, to load
+;       symbolName      - the name of the symbol
+;       LOCAL_SYMBOL    - symbol is local to this module
+;       EXTERNAL_SYMBOL - symbol is imported from another module
+;
+; Eats: r0 and targetReg
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+.macro LEA_STATIC_DATA
+       mflr    r0
+       bcl     20,31,1f        ; 31 is cr7[so]
+1:     mflr    $0
+       mtlr    r0
+.if $2 == EXTERNAL_SYMBOL
+       addis   $0,$0,ha16(L$1-1b)
+       ld      $0,lo16(L$1-1b)($0)
+.elseif $2 == LOCAL_SYMBOL
+       addis   $0,$0,ha16($1-1b)
+       addi    $0,$0,lo16($1-1b)
+.else
+       !!! Unknown symbol type !!!
+.endif
+
+.endmacro
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;
+; ENTRY                functionName
+;
+; Assembly directives to begin an exported function.
+; We align on cache boundaries for these few functions.
+;
+; Takes: functionName - name of the exported function
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+.macro ENTRY
+       .text
+       .align    5
+       .globl    $0
+$0:
+.endmacro
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;
+; END_ENTRY    functionName
+;
+; Assembly directives to end an exported function.  Just a placeholder,
+; a close-parenthesis for ENTRY, until it is needed for something.
+;
+; Takes: functionName - name of the exported function
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+.macro END_ENTRY
+.endmacro
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;
+; FixupMessageRef receiver, super, ref
+;
+; Look up a method and fix up a message ref.
+;
+; Takes: 
+;       receiver = receiver register
+;       super = register address of objc_super2 struct or NULL
+;       ref = message ref register
+;       These arguments must use the REGx macros. Some combinations
+;         are disallowed. 
+;
+; On exit: 
+;       *ref is fixed up
+;       r12 is imp to call
+;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+       ; $0 = receiver register
+       ; $1 = register address of objc_super2 struct, or NULL
+       ; $2 = message ref register
+       ; Returns imp in r12 and ctr.
+       ; 3,2,4  4,2,5  2,3,4    2,4,5
+       ; 5<4    3<4    4<3,5<4  
+#define REG2 2
+#define REG3 3
+#define REG4 4
+#define REG5 5
+
+
+.macro MR_REG3
+.if $0 == REG2
+       mr      r3, r2
+.elseif $0 == REG3
+       ; mr      r3, r3
+.elseif $0 == REG4
+       mr      r3, r4
+.elseif $0 == REG5
+       mr      r3, r5
+.else
+       error unknown register
+.endif
+.endmacro
+
+.macro MR_REG4
+.if $0 == REG2
+       mr      r4, r2
+.elseif $0 == REG3
+       mr      r4, r3
+.elseif $0 == REG4
+       ; mr      r4, r4
+.elseif $0 == REG5
+       mr      r4, r5
+.else
+       error unknown register
+.endif
+.endmacro
+
+.macro MR_REG5
+.if $0 == REG2
+       mr      r5, r2
+.elseif $0 == REG3
+       mr      r5, r3
+.elseif $0 == REG4
+       mr      r5, r4
+.elseif $0 == REG5
+       ; mr      r5, r5
+.else
+       error unknown register
+.endif
+.endmacro
+
+#if __OBJC2__
+.macro FixupMessageRef
+       ; Save lr
+       mflr    r0
+       std     r0,  16(r1)
+
+       ; Save parameter registers
+       std     r3,  48(r1)
+       std     r4,  56(r1)
+       std     r5,  64(r1)
+       std     r6,  72(r1)
+       std     r7,  80(r1)
+       std     r8,  88(r1) 
+       std     r9,  96(r1)
+       std     r10, 104(r1)
+
+       ; Save fp parameter registers
+       stfd    f1, -104(r1)
+       stfd    f2,  -96(r1)
+       stfd    f3,  -88(r1)
+       stfd    f4,  -80(r1)
+       stfd    f5,  -72(r1)
+       stfd    f6,  -64(r1)
+       stfd    f7,  -56(r1)
+       stfd    f8,  -48(r1)
+       stfd    f9,  -40(r1)
+       stfd    f10, -32(r1)
+       stfd    f11, -24(r1)
+       stfd    f12, -16(r1)
+       stfd    f13,  -8(r1)
+
+       ; Push stack frame
+       stdu    r1,-120-(13*8)(r1)      ; must be 16-byte aligned
+
+.if REG5 != $1  &  REG5 != $0  &  REG4 != $0
+       MR_REG5 $2
+       MR_REG4 $1
+       MR_REG3 $0
+.elseif REG3 != $1  &  REG3 != $2  &  REG4 != $2
+       MR_REG3 $0
+       MR_REG4 $1
+       MR_REG5 $2
+.else
+       error register collision
+.endif
+
+       CALL_EXTERN(__objc_fixupMessageRef)
+
+       ; Save returned IMP in r12 and ctr
+       mtctr   r3
+       mr      r12, r3
+
+       ; Pop stack frame
+       ld      r1,0(r1)
+
+       ; Restore lr
+       ld      r0,16(r1)
+       mtlr    r0
+
+       ; Restore fp parameter registers
+       lfd     f1, -104(r1)
+       lfd     f2,  -96(r1)
+       lfd     f3,  -88(r1)
+       lfd     f4,  -80(r1)
+       lfd     f5,  -72(r1)
+       lfd     f6,  -64(r1)
+       lfd     f7,  -56(r1)
+       lfd     f8,  -48(r1)
+       lfd     f9,  -40(r1)
+       lfd     f10, -32(r1)
+       lfd     f11, -24(r1)
+       lfd     f12, -16(r1)
+       lfd     f13, -8(r1)
+
+       ; Restore parameter registers
+       ld     r3,  48(r1)
+       ld     r4,  56(r1)
+       ld     r5,  64(r1)
+       ld     r6,  72(r1)
+       ld     r7,  80(r1)
+       ld     r8,  88(r1)
+       ld     r9,  96(r1)
+       ld     r10, 104(r1)
+
+.endmacro
+#endif
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;
+; CacheLookup selectorRegister, cacheMissLabel
+;
+; Locate the implementation for a selector in a class method cache.
+;
+; 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
+;
+; On exit: (found) method triplet in r2, imp in r12, r11 is non-zero
+;          (not found) jumps to cacheMissLabel
+;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+.macro CacheLookup
+
+#if defined(OBJC_INSTRUMENTED)
+       ; when instrumented, we use r6 and r7
+       std     r6,72(r1)               ; save r6 for use as cache pointer
+       std     r7,80(r1)               ; save r7 for use as probe count
+       li      r7,0                    ; no probes so far!
+#endif
+
+       ld      r2,CACHE(r12)           ; cache = class->cache
+       std     r9,96(r1)               ; save r9
+
+#if defined(OBJC_INSTRUMENTED)
+       mr      r6,r2                   ; save cache pointer
+#endif
+
+       lwz     r11,MASK(r2)            ; mask = cache->mask
+       addi    r0,r2,BUCKETS           ; buckets = cache->buckets
+       sldi    r11,r11,3               ; r11 = mask << 3 
+       and     r9,$0,r11               ; bytes = sel & (mask<<3)
+
+#if defined(OBJC_INSTRUMENTED)
+       b       LLoop_$0_$1
+
+LMiss_$0_$1:
+       ; r6 = cache, r7 = probeCount
+       lwz     r9,MASK(r6)             ; entryCount = mask + 1
+       addi    r9,r9,1                 ;
+       sldi    r9,r9,2                 ; tableSize = entryCount * sizeof(entry)
+       addi    r9,r9,BUCKETS           ; offset = buckets + tableSize
+       add     r11,r6,r9               ; cacheData = &cache->buckets[mask+1]
+       ld      r9,missCount(r11)       ; cacheData->missCount += 1
+       addi    r9,r9,1                 ; 
+       std     r9,missCount(r11)       ; 
+       ld      r9,missProbes(r11)      ; cacheData->missProbes += probeCount
+       add     r9,r9,r7                ; 
+       std     r9,missProbes(r11)      ; 
+       ld      r9,maxMissProbes(r11)   ; if (probeCount > cacheData->maxMissProbes)
+       cmpld   r7,r9                   ; maxMissProbes = probeCount
+       ble     .+8                     ; 
+       std     r7,maxMissProbes(r11)   ;
+
+       ld      r6,72(r1)               ; restore r6
+       ld      r7,80(r1)               ; restore r7
+
+       b       $1                      ; goto cacheMissLabel
+#endif
+       
+; search the cache
+LLoop_$0_$1:
+#if defined(OBJC_INSTRUMENTED)
+       addi    r7,r7,1                 ; probeCount += 1
+#endif
+
+       ldx     r2,r9,r0                ; method = buckets[bytes/8]
+       addi    r9,r9,8                 ; bytes += 8
+       cmpldi  r2,0                    ; if (method == NULL)
+#if defined(OBJC_INSTRUMENTED)
+       beq-    LMiss_$0_$1
+#else
+       beq-    $1                      ; goto cacheMissLabel
+#endif
+
+       ld      r12,METHOD_NAME(r2)     ; name  = method->method_name
+       and     r9,r9,r11               ; bytes &= (mask<<3)
+       cmpld   r12,$0                  ; if (name != selector)
+       bne-    LLoop_$0_$1             ; goto loop
+
+; cache hit, r2 == method triplet address
+; Return triplet in r2 and imp in r12
+       ld      r12,METHOD_IMP(r2)      ; imp = method->method_imp
+
+#if defined(OBJC_INSTRUMENTED)
+       ; r6 = cache, r7 = probeCount
+       lwz     r9,MASK(r6)             ; entryCount = mask + 1
+       addi    r9,r9,1                 ;
+       sldi    r9,r9,2                 ; tableSize = entryCount * sizeof(entry)
+       addi    r9,r9,BUCKETS           ; offset = buckets + tableSize
+       add     r11,r6,r9               ; cacheData = &cache->buckets[mask+1]
+       lwz     r9,hitCount(r11)        ; cache->hitCount += 1
+       addi    r9,r9,1                 ; 
+       stw     r9,hitCount(r11)        ; 
+       lwz     r9,hitProbes(r11)       ; cache->hitProbes += probeCount
+       add     r9,r9,r7                ; 
+       stw     r9,hitProbes(r11)       ; 
+       lwz     r9,maxHitProbes(r11)    ; if (probeCount > cache->maxMissProbes)
+       cmplw   r7,r9                   ;maxMissProbes = probeCount
+       ble     .+8                     ; 
+       stw     r7,maxHitProbes(r11)    ; 
+
+       ld      r6,72(r1)               ; restore r6
+       ld      r7,80(r1)               ; restore r7
+#endif
+
+       ld      r9,96(r1)               ; restore r9
+
+.endmacro
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;
+; CacheLookup cache locking - 2001-11-12
+; The collecting cache mechanism precludes the need for a cache lock 
+; in objc_msgSend. The cost of the collecting cache is small: a few 
+; K of memory for uncollected caches, and less than 1 ms per collection. 
+; A large app will only run collection a few times.
+; Using the code below to lock the cache almost doubles messaging time, 
+; costing several seconds of CPU across several minutes of operation.
+; The code below probably could be improved, but almost all of the 
+; locking slowdown is in the sync and isync.
+;
+; 40 million message test times (G4 1x667):
+;   no lock  4.390u 0.030s 0:04.59 96.2%     0+0k 0+1io 0pf+0w
+; with lock  9.120u 0.010s 0:09.83 92.8%     0+0k 0+0io 0pf+0w
+;
+;; LockCache mask_dest, cache
+;.macro LockCache
+;        ; LOCKED mask is NEGATIVE
+;        lwarx   $0, mask, $1    ; mask = reserve(cache->mask)
+;        cmpwi   $0, 0           ;
+;        blt     .-8             ; try again if mask < 0
+;        neg     r0, $0          ;
+;        stwcx.  r0, mask, $1    ; cache->mask = -mask ($0 keeps +mask)
+;        bne     .-20            ; try again if lost reserve
+;        isync                   ; flush prefetched instructions after locking
+;.endmacro
+;        
+;; UnlockCache (mask<<2), cache
+;.macro UnlockCache
+;        sync                    ; finish previous instructions before unlocking
+;        srwi    r0, $0, 2       ; r0 = (mask<<2) >> 2
+;        stw     r0, mask($1)    ; cache->mask = +mask
+;.endmacro
+;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;
+;
+; MethodTableLookup WORD_RETURN | STRUCT_RETURN, MSG_SEND | MSG_SENDSUPER
+;
+; 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)
+;
+; Eats: r0, r2, r11, r12
+; On exit: restores r9 saved by CacheLookup
+;          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
+       std     r0,  16(r1)     ;
+
+       std     r3,  48(r1)     ; save arguments
+       std     r4,  56(r1)     ; 
+       std     r5,  64(r1)     ;
+       std     r6,  72(r1)     ;
+       std     r7,  80(r1)     ;
+       std     r8,  88(r1)     ;
+       ; r9 was saved by CacheLookup
+       std     r10, 104(r1)    ;
+
+; Save the FP parameter registers.
+; We do not spill vector argument registers. This is 
+; harmless because vector parameters are unsupported.
+       stfd    f1, -104(r1)    ;
+       stfd    f2,  -96(r1)    ;
+       stfd    f3,  -88(r1)    ;
+       stfd    f4,  -80(r1)    ;
+       stfd    f5,  -72(r1)    ;
+       stfd    f6,  -64(r1)    ;
+       stfd    f7,  -56(r1)    ;
+       stfd    f8,  -48(r1)    ;
+       stfd    f9,  -40(r1)    ;
+       stfd    f10, -32(r1)    ;
+       stfd    f11, -24(r1)    ;
+       stfd    f12, -16(r1)    ;
+       stfd    f13,  -8(r1)    ;
+
+       stdu    r1,-120-(13*8)(r1)      ; grow the stack. Must be 16-byte-aligned.
+
+; Pass parameters to __class_lookupMethodAndLoadCache.  First parameter is
+; the class pointer.  Second parameter is the selector.  Where they come
+; from depends on who called us.  In the int return case, the selector is
+; already in r4.
+.if $0 == WORD_RETURN          ; WORD_RETURN
+.if $1 == MSG_SEND                             ; MSG_SEND
+       ld      r3,ISA(r3)              ; class = receiver->isa
+.else                                                  ; MSG_SENDSUPER
+       ld      r3,CLASS(r3)    ; class = super->class
+.endif
+
+.else                                          ; STRUCT_RETURN
+.if $1 == MSG_SEND                             ; MSG_SEND
+       ld      r3,ISA(r4)              ; class = receiver->isa
+.else                                                  ; MSG_SENDSUPER
+       ld      r3,CLASS(r4)    ; class = super->class
+.endif
+       mr      r4,r5                   ; selector = selector 
+.endif
+
+       ; We code the call inline rather than using the CALL_EXTERN macro because
+       ; that leads to a lot of extra unnecessary and inefficient instructions.
+       CALL_EXTERN(__class_lookupMethodAndLoadCache)
+
+       mr      r12,r3                  ; copy implementation to r12
+       mtctr   r3                              ; copy imp to ctr
+       ld      r1,0(r1)                ; restore the stack pointer
+       ld      r0,16(r1)               ;
+       mtlr    r0                              ; restore return pc
+
+; Restore FP parameter registers
+       lfd     f1, -104(r1)    ;
+       lfd     f2,  -96(r1)    ;
+       lfd     f3,  -88(r1)    ;
+       lfd     f4,  -80(r1)    ;
+       lfd     f5,  -72(r1)    ;
+       lfd     f6,  -64(r1)    ;
+       lfd     f7,  -56(r1)    ;
+       lfd     f8,  -48(r1)    ;
+       lfd     f9,  -40(r1)    ;
+       lfd     f10, -32(r1)    ;
+       lfd     f11, -24(r1)    ;
+       lfd     f12, -16(r1)    ;
+       lfd     f13, -8(r1)             ;
+
+       ld      r3,  48(r1)             ; restore parameter registers
+       ld      r4,  56(r1)             ;
+       ld      r5,  64(r1)             ;
+       ld      r6,  72(r1)             ;
+       ld      r7,  80(r1)             ;
+       ld      r8,  88(r1)             ;
+       ld      r9,  96(r1)             ; r9 was saved by CacheLookup
+       ld      r10, 104(r1)            ;
+
+.endmacro
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;
+; CALL_MCOUNT
+;
+; Macro to call mcount function in profiled builds.
+;
+; NOTE: Makes sure to save/restore r11 and r12, even though they
+; are not defined to be volatile, because they are used during
+; forwarding.
+;
+; Takes: lr                        Callers return PC
+;
+; Eats: r0
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+       .macro CALL_MCOUNT
+#if defined(PROFILE)
+       mflr    r0                              ; save return pc
+       std     r0, 16(r1)              ;
+
+       stdu    r1,-304(r1)             ; push aligned areas, set stack link
+
+       std     r3, 112(r1)             ; save all volatile registers
+       std     r4, 120(r1)             ; 
+       std     r5, 128(r1)             ;
+       std     r6, 136(r1)             ; 
+       std     r7, 144(r1)             ;
+       std     r8, 152(r1)             ;
+       std     r9, 160(r1)             ;
+       std     r10,168(r1)             ;
+       std     r11,176(r1)             ; save r11 and r12, too
+       std     r12,184(r1)             ;
+
+       stfd    f1, 192(r1)             ;
+       stfd    f2, 200(r1)             ;
+       stfd    f3, 208(r1)             ;
+       stfd    f4, 216(r1)             ;
+       stfd    f5, 224(r1)             ;
+       stfd    f6, 232(r1)             ;
+       stfd    f7, 240(r1)             ;
+       stfd    f8, 248(r1)             ;
+       stfd    f9, 256(r1)             ;
+       stfd    f10,264(r1)             ;
+       stfd    f11,272(r1)             ;
+       stfd    f12,280(r1)             ;
+       stfd    f13,288(r1)             ;
+
+       mr      r3, r0                  ; pass our callers address
+
+       CALL_EXTERN(mcount)
+
+       ld      r3, 112(r1)             ; restore all volatile registers
+       ld      r4, 120(r1)             ; 
+       ld      r5, 128(r1)             ;
+       ld      r6, 136(r1)             ; 
+       ld      r7, 144(r1)             ;
+       ld      r8, 152(r1)             ;
+       ld      r9, 160(r1)             ;
+       ld      r10,168(r1)             ;
+       ld      r11,176(r1)             ; restore r11 and r12, too
+       ld      r12,184(r1)             ;
+
+       lfd     f1, 192(r1)             ;
+       lfd     f2, 200(r1)             ;
+       lfd     f3, 208(r1)             ;
+       lfd     f4, 216(r1)             ;
+       lfd     f5, 224(r1)             ;
+       lfd     f6, 232(r1)             ;
+       lfd     f7, 240(r1)             ;
+       lfd     f8, 248(r1)             ;
+       lfd     f9, 256(r1)             ;
+       lfd     f10,264(r1)             ;
+       lfd     f11,272(r1)             ;
+       lfd     f12,280(r1)             ;
+       lfd     f13,288(r1)             ;
+
+       ld      r1, 0(r1)               ; restore the stack pointer
+       ld      r0, 16(r1)              ;
+       mtlr    r0                              ; restore return pc
+#endif
+       .endmacro
+
+
+/********************************************************************
+ * Method _cache_getMethod(Class cls, SEL sel, IMP objc_msgForward_imp)
+ *
+ * On entry:    r3 = class whose cache is to be searched
+ *              r4 = selector to search for
+ *              r5 = _objc_msgForward IMP
+ *
+ * If found, returns method triplet pointer.
+ * If not found, returns NULL.
+ *
+ * NOTE: _cache_getMethod never returns any cache entry whose implementation
+ * is _objc_msgForward. It returns NULL instead. This prevents thread-
+ * safety and memory management bugs in _class_lookupMethodAndLoadCache. 
+ * See _class_lookupMethodAndLoadCache for details.
+ *
+ * _objc_msgForward is passed as a parameter because it's more efficient
+ * to do the (PIC) lookup once in the caller than repeatedly here.
+ ********************************************************************/
+
+    .private_extern __cache_getMethod
+    ENTRY __cache_getMethod
+; do profiling if enabled
+    CALL_MCOUNT
+
+; do lookup
+    mr      r12,r3     ; move class to r12 for CacheLookup
+    CacheLookup r4, LGetMethodMiss
+
+; cache hit, method triplet in r2 and imp in r12
+    cmpld   r12, r5                 ; check for _objc_msgForward
+    mr      r3, r2                  ; optimistically get the return value
+    bnelr                           ; Not _objc_msgForward, return the triplet address
+
+LGetMethodMiss:
+    li      r3, 0                   ; cache miss or _objc_msgForward, return nil
+    blr
+
+LGetMethodExit: 
+    END_ENTRY __cache_getMethod
+
+
+/********************************************************************
+ * IMP _cache_getImp(Class cls, SEL sel)
+ *
+ * On entry:    r3 = class whose cache is to be searched
+ *              r4 = selector to search for
+ *
+ * If found, returns method implementation.
+ * If not found, returns NULL.
+ ********************************************************************/
+
+    .private_extern __cache_getImp
+    ENTRY __cache_getImp
+; do profiling if enabled
+    CALL_MCOUNT
+
+; do lookup
+    mr     r12,r3      ; move class to r12 for CacheLookup
+    CacheLookup r4, LGetImpMiss
+
+; cache hit, method triplet in r2 and imp in r12
+    mr      r3, r12    ; return method imp address
+    blr
+
+LGetImpMiss:
+; cache miss, return nil
+    li      r3, 0           ; return nil
+    blr
+
+LGetImpExit: 
+    END_ENTRY __cache_getImp
+
+
+/********************************************************************
+ * id          objc_msgSend(id self,
+ *                     SEL     op,
+ *                     ...);
+ *
+ * On entry: r3 is the message receiver,
+ *           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 = 0xfffffffffffeff00
+_objc_msgSend_rtp_exit = 0xfffffffffffeff00+0x100
+       
+       ENTRY _objc_msgSend
+; check whether receiver is nil or selector is to be ignored
+       cmpldi  r3,0            ; receiver nil?
+         not     r11, r4
+         xoris   r11, r11, ((~kIgnore >> 16) & 0xffff)
+       beq-    LMsgSendNilSelf ; if nil receiver, call handler or return nil
+       ld      r12,ISA(r3)     ; class = receiver->isa
+         cmpldi  r11, (~kIgnore & 0xffff)
+         beqlr-                ; if ignored selector, return self immediately
+
+; guaranteed non-nil entry point (disabled for now)
+; .globl _objc_msgSendNonNil
+; _objc_msgSendNonNil:
+
+; do profiling when enabled
+       CALL_MCOUNT
+
+; receiver is non-nil: search the cache
+LMsgSendReceiverOk:
+       ; 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;
+
+; 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:
+       ; 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)
+       ld      r11,lo16(__objc_nilReceiver-1b)(r11)
+       mtlr    r0                      ; restore return address
+       ; DO NOT CHANGE THE PREVIOUS SIX INSTRUCTIONS - see note above
+
+       cmpldi  r11,0                   ; return nil if no new receiver
+       beq     LMsgSendReturnZero
+
+       mr      r3,r11                  ; send to new receiver
+       ld      r12,ISA(r11)            ; class = receiver->isa
+       b       LMsgSendReceiverOk
+
+LMsgSendReturnZero:
+       li      r3, 0
+       li      r4, 0
+       ; fixme this breaks RTP
+       LEA_STATIC_DATA r11, L_zero, LOCAL_SYMBOL
+       lfd     f1, 0(r11)
+       lfd     f2, 0(r11)
+
+; 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
+
+
+#if __OBJC2__
+       ENTRY _objc_msgSend_fixup
+       
+       cmpldi  r3, 0
+       li      r2, 0
+       beq-    LMsgSendFixupNilSelf    
+
+       ; r3 = receiver
+       ; r2 = 0 (not msgSend_super)
+       ; r4 = address of message ref
+       FixupMessageRef REG3, REG2, REG4
+
+       ; imp is in r12 and ctr
+       ; Load _cmd from the message_ref
+       ld      r4, 8(r4)
+       ; Be ready for objc_msgForward
+       li      r11, kFwdMsgSend
+       bctr
+
+LMsgSendFixupNilSelf:
+       li      r3, 0
+       li      r4, 0
+       LEA_STATIC_DATA r11, L_zero, LOCAL_SYMBOL
+       lfd     f1, 0(r11)
+       lfd     f2, 0(r11)
+       blr
+       
+       END_ENTRY _objc_msgSend_fixup
+
+
+       ENTRY _objc_msgSend_fixedup
+       ; Load _cmd from the message_ref
+       ld      r4, 8(r4)
+       b       _objc_msgSend
+       END_ENTRY _objc_msgSend_fixedup
+#endif
+
+
+/********************************************************************
+ *
+ * double objc_msgSend_fpret(id self, SEL op, ...);
+ *
+ ********************************************************************/
+
+       ENTRY _objc_msgSend_fpret
+       b       _objc_msgSend
+       END_ENTRY _objc_msgSend_fpret
+
+/********************************************************************
+ * struct_type objc_msgSend_stret(id   self,
+ *                             SEL     op,
+ *                                     ...);
+ *
+ * objc_msgSend_stret is the struct-return form of msgSend.
+ * The ABI calls for r3 to be used as the address of the structure
+ * being returned, with the parameters in the succeeding registers.
+ *
+ * On entry: r3 is the address where the structure is returned,
+ *           r4 is the message receiver,
+ *           r5 is the selector
+ ********************************************************************/
+
+       ENTRY _objc_msgSend_stret
+; check whether receiver is nil
+       cmpldi  r4,0                    ; receiver nil?
+       beq     LMsgSendStretNilSelf    ; if so, call handler or just return
+
+; guaranteed non-nil entry point (disabled for now)
+; .globl _objc_msgSendNonNil_stret
+; _objc_msgSendNonNil_stret:
+
+; do profiling when enabled
+       CALL_MCOUNT
+
+; receiver is non-nil: search the cache
+LMsgSendStretReceiverOk:
+       ld      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;
+
+; cache miss: go search the method lists
+LMsgSendStretCacheMiss:
+       MethodTableLookup STRUCT_RETURN, MSG_SEND
+       li      r11,kFwdMsgSendStret    ; indicate struct-return to _objc_msgForward
+       bctr                                    ; goto *imp;
+
+; message sent to nil: redirect to nil receiver, if any
+LMsgSendStretNilSelf:
+       mflr    r0                      ; load new receiver
+       bcl     20,31,1f                ; 31 is cr7[so]
+1:     mflr    r11
+       addis   r11,r11,ha16(__objc_nilReceiver-1b)
+       ld      r11,lo16(__objc_nilReceiver-1b)(r11)
+       mtlr    r0
+
+       cmpldi  r11,0                   ; return nil if no new receiver
+       beqlr
+
+       mr      r4,r11                  ; send to new receiver
+       b       LMsgSendStretReceiverOk
+
+LMsgSendStretExit:
+       END_ENTRY _objc_msgSend_stret
+
+
+#if __OBJC2__
+       ENTRY _objc_msgSend_stret_fixup
+       
+       cmpldi  r4, 0
+       li      r2, 0
+       beqlr-  ; return if nil receiver
+
+       ; r4 = receiver
+       ; r2 = 0 (not msgSend_super)
+       ; r5 = address of message ref
+       FixupMessageRef REG4, REG2, REG5
+
+       ; imp is in r12 and ctr
+       ; Load _cmd from the message_ref
+       ld      r5, 8(r5)
+       ; Be ready for objc_msgForward
+       li      r11, kFwdMsgSendStret
+       bctr
+       
+       END_ENTRY _objc_msgSend_stret_fixup
+
+
+       ENTRY _objc_msgSend_stret_fixedup
+       ; Load _cmd from the message_ref
+       ld      r5, 8(r5)
+       b       _objc_msgSend_stret
+       END_ENTRY _objc_msgSend_stret_fixedup
+#endif
+
+
+/********************************************************************
+ * id  objc_msgSendSuper(struct objc_super     *super,
+ *                     SEL                     op,
+ *                                             ...);
+ *
+ * struct objc_super {
+ *     id      receiver;
+ *     Class   class;
+ * };
+ ********************************************************************/
+
+
+       ENTRY _objc_msgSendSuper
+; do profiling when enabled
+       CALL_MCOUNT
+
+; check whether selector is to be ignored
+       not     r11, r4
+       xoris   r11, r11, ((~kIgnore >> 16) & 0xffff)
+         ld      r12,CLASS(r3)                 ;     class = super->class
+       cmpldi  r11, (~kIgnore & 0xffff)
+       beqlr-          ; if ignored selector, return self immediately
+
+; search the cache
+       ; class is already in r12
+       CacheLookup r4, LMsgSendSuperCacheMiss
+       ; CacheLookup placed imp in r12
+       mtctr   r12
+       ld      r3,RECEIVER(r3)         ; receiver is the first arg
+       ; r11 guaranteed non-zero after cache hit
+       ; li      r11,kFwdMsgSend               ; indicate word-return to _objc_msgForward
+       bctr                                    ; goto *imp;
+
+; cache miss: go search the method lists
+LMsgSendSuperCacheMiss:
+       MethodTableLookup WORD_RETURN, MSG_SENDSUPER
+       ld      r3,RECEIVER(r3)         ; receiver is the first arg
+       li      r11,kFwdMsgSend         ; indicate word-return to _objc_msgForward
+       bctr                                    ; goto *imp;
+
+; ignored selector: return self
+LMsgSendSuperIgnored:
+       ld      r3,RECEIVER(r3)
+       blr
+
+LMsgSendSuperExit:
+       END_ENTRY _objc_msgSendSuper
+
+
+#if __OBJC2__
+       ENTRY _objc_msgSendSuper2_fixup
+
+       ld      r2, RECEIVER(r3)
+
+       ; r2 = receiver
+       ; r3 = address of objc_super2 
+       ; r4 = address of message ref
+       FixupMessageRef REG2, REG3, REG4
+
+       ; imp is in r12 and ctr
+       ; Load _cmd from the message_ref
+       ld      r4, 8(r4)
+       ; Load receiver from objc_super2
+       ld      r3, RECEIVER(r3)
+       bctr
+       
+       END_ENTRY _objc_msgSendSuper2_fixup
+
+       
+       ENTRY _objc_msgSendSuper2_fixedup
+       ; objc_super->class is superclass of the class to search
+       ld      r11, CLASS(r3)          ; cls = objc_super->class
+       ld      r4, 8(r4)               ; load _cmd from message_ref
+       ld      r11, 8(r11)             ; cls = cls->superclass
+       std     r11, CLASS(r3)          ; objc_super->class = cls
+       ; objc_super->class is now the class to search
+       b       _objc_msgSendSuper
+       END_ENTRY _objc_msgSendSuper2_fixedup
+#endif
+
+
+/********************************************************************
+ * struct_type objc_msgSendSuper_stret(objc_super      *super,
+ *                                     SEL             op,
+ *                                                     ...);
+ *
+ * struct objc_super {
+ *     id      receiver;
+ *     Class   class;
+ * };
+ *
+ *
+ * objc_msgSendSuper_stret is the struct-return form of msgSendSuper.
+ * The ABI calls for r3 to be used as the address of the structure
+ * being returned, with the parameters in the succeeding registers.
+ *
+ * On entry:   r3 is the address to which to copy the returned structure,
+ *             r4 is the address of the objc_super structure,
+ *             r5 is the selector
+ ********************************************************************/
+
+       ENTRY _objc_msgSendSuper_stret
+; do profiling when enabled
+       CALL_MCOUNT
+
+; search the cache
+       ld      r12,CLASS(r4)                   ; class = super->class
+       CacheLookup r5, LMsgSendSuperStretCacheMiss
+       ; CacheLookup placed imp in r12
+       mtctr   r12
+       ld      r4,RECEIVER(r4)         ; receiver is the first arg
+       li      r11,kFwdMsgSendStret    ; indicate struct-return to _objc_msgForward
+       bctr                                    ; goto *imp;
+
+; cache miss: go search the method lists
+LMsgSendSuperStretCacheMiss:
+       MethodTableLookup STRUCT_RETURN, MSG_SENDSUPER
+       ld      r4,RECEIVER(r4)         ; receiver is the first arg
+       li      r11,kFwdMsgSendStret    ; indicate struct-return to _objc_msgForward
+       bctr                                    ; goto *imp;
+
+LMsgSendSuperStretExit:
+       END_ENTRY _objc_msgSendSuper_stret
+
+
+#if __OBJC2__
+       ENTRY _objc_msgSendSuper2_stret_fixup
+
+       ld      r2, RECEIVER(r4)
+       
+       ; r2 = receiver
+       ; r4 = address of objc_super2
+       ; r5 = address of message ref
+       FixupMessageRef REG2, REG4, REG5
+
+       ; imp is in r12 and ctr
+       ; Load _cmd from the message_ref
+       ld      r5, 8(r5)
+       ; Load receiver from objc_super2
+       ld      r4, RECEIVER(r4)
+       bctr
+
+       END_ENTRY _objc_msgSendSuper2_stret_fixup
+
+
+       ENTRY _objc_msgSendSuper2_stret_fixedup
+       ; objc_super->class is superclass of the class to search
+       ld      r11, CLASS(r4)          ; cls = objc_super->class
+       ld      r5, 8(r5)               ; load _cmd from message_ref
+       ld      r11, 8(r11)             ; cls = cls->superclass
+       std     r11, CLASS(r4)          ; objc_super->class = cls
+       ; objc_super->class is now the class to search
+       b       _objc_msgSendSuper_stret
+       END_ENTRY _objc_msgSendSuper2_stret_fixedup
+#endif
+
+
+/********************************************************************
+ *
+ * Out-of-band parameter r11 indicates whether it was objc_msgSend or
+ * objc_msgSend_stret that triggered the message forwarding.  The 
+ *
+ * Iff r11 == kFwdMsgSend, it is the word-return (objc_msgSend) case,
+ * and the interface is:
+ *
+ * id          _objc_msgForward(id     self,
+ *                             SEL     sel,
+ *                                     ...);
+ *
+ * Iff r11 == kFwdMsgSendStret, it is the structure-return
+ * (objc_msgSend_stret) case, and the interface is:
+ *
+ * struct_type _objc_msgForward(id     self,
+ *                             SEL     sel,
+ *                                     ...);
+ *
+ * There are numerous reasons why it is better to have one
+ * _objc_msgForward, rather than adding _objc_msgForward_stret.
+ * The best one is that _objc_msgForward is the method that
+ * gets cached when respondsToMethod returns false, and it
+ * wouldnt know which one to use.
+ * 
+ * Sends the message to a method having the signature
+ *
+ *      - forward:(SEL)sel :(marg_list)args;
+ * 
+ * But the marg_list is prepended with the 13 double precision
+ * floating point registers that could be used as parameters into
+ * the method (fortunately, the same registers are used for either
+ * single or double precision floats).  These registers are layed
+ * down by _objc_msgForward, and picked up by _objc_msgSendv.  So
+ * the "marg_list" is actually:
+ *
+ * typedef struct objc_sendv_margs {
+ *     double          floatingPointArgs[13];
+ *     intptr_t        linkageArea[6];
+ *     intptr_t        registerArgs[8];
+ *     intptr_t        stackArgs[variable];
+ * };
+ *
+ ********************************************************************/
+
+; _FwdSel is @selector(forward::), set up in map_images().
+; ALWAYS dereference _FwdSel to get to "forward::" !!
+       .data
+       .align 3
+       .private_extern _FwdSel
+_FwdSel: .quad 0
+
+       .cstring
+       .align 3
+LUnkSelStr: .ascii "Does not recognize selector %s\0"
+
+       .data
+       .align 3
+       .private_extern __objc_forward_handler
+__objc_forward_handler:        .quad 0
+
+       .data
+       .align 3
+       .private_extern __objc_forward_stret_handler
+__objc_forward_stret_handler:  .quad 0
+
+       ENTRY __objc_msgForward
+; do profiling when enabled
+       CALL_MCOUNT
+
+       ; Check return type (stret or not)
+       cmpldi  r11, kFwdMsgSendStret
+       beq     LMsgForwardStretSel
+
+       ; Non-stret return
+       ; Call user handler, if any
+       LOAD_STATIC_WORD r12, __objc_forward_handler, LOCAL_SYMBOL
+       cmpldi  r12, 0
+       mtctr   r12
+       bnectr                  ; call _objc_forward_handler if not NULL
+       ; No user handler
+       mr      r11, r3         ; r11 = receiver
+       mr      r12, r4         ; r12 = SEL
+       b       LMsgForwardSelCmp
+
+LMsgForwardStretSel:
+       ; Stret return
+       ; Call user handler, if any
+       LOAD_STATIC_WORD r12, __objc_forward_stret_handler, LOCAL_SYMBOL
+       cmpldi  r12, 0
+       mtctr   r12
+       bnectr                  ; call _objc_forward_stret_handler if not NULL
+       ; No user handler
+       mr      r11, r4         ; r11 = receiver
+       mr      r12, r5         ; r12 = SEL
+
+LMsgForwardSelCmp:
+       ; r11 is the receiver
+       ; r12 is the selector
+       
+       ; Die if forwarding "forward::"
+       LOAD_STATIC_WORD r2, _FwdSel, LOCAL_SYMBOL
+       cmpld   r2, r12
+       beq     LMsgForwardError
+
+       ; Save registers to margs
+       ; Link register
+       mflr    r0
+       std     r0, 16(r1)
+
+       ; GPR parameters
+       std     r3, 48(r1)
+       std     r4, 56(r1)
+       std     r5, 64(r1)
+       std     r6, 72(r1)
+       std     r7, 80(r1)
+       std     r8, 88(r1)
+       std     r9, 96(r1)
+       std     r10,104(r1)
+
+       ; FP parameters
+       stfd    f1, -104(r1)
+       stfd    f2,  -96(r1)
+       stfd    f3,  -88(r1)
+       stfd    f4,  -80(r1)
+       stfd    f5,  -72(r1)
+       stfd    f6,  -64(r1)
+       stfd    f7,  -56(r1)
+       stfd    f8,  -48(r1)
+       stfd    f9,  -40(r1)
+       stfd    f10, -32(r1)
+       stfd    f11, -24(r1)
+       stfd    f12, -16(r1)
+       stfd    f13,  -8(r1)
+
+       ; Call [receiver forward:sel :margs]
+       mr      r3, r11                 ; receiver
+       mr      r4, r2                  ; forward::
+       mr      r5, r12                 ; sel
+       subi    r6,r1,13*8              ; &margs (on stack)
+
+       stdu    r1,-120-(13*8)(r1)      ; push stack frame
+       bl      _objc_msgSend           ; [self forward:sel :objc_sendv_margs]
+       addi    r1,r1,120+13*8          ; pop stack frame
+
+       ld      r0,16(r1)               ; restore lr
+       mtlr    r0                      ;
+       blr                             ;
+
+
+LMsgForwardError:
+       ; Call __objc_error(receiver, "unknown selector %s", "forward::")
+       mr      r3, r11
+       LEA_STATIC_DATA r4, LUnkSelStr, LOCAL_SYMBOL
+       mr      r5, r2
+       CALL_EXTERN(___objc_error)      ; never returns
+       trap
+
+       END_ENTRY __objc_msgForward
+
+
+       ENTRY _method_invoke
+       
+       ld      r12, METHOD_IMP(r4)
+       ld      r4, METHOD_NAME(r4)
+       mtctr   r12
+       bctr
+       
+       END_ENTRY _method_invoke
+
+
+       ENTRY _method_invoke_stret
+       
+       ld      r12, METHOD_IMP(r5)
+       ld      r5, METHOD_NAME(r5)
+       mtctr   r12
+       bctr
+       
+       END_ENTRY _method_invoke_stret
index ff8549aa56d3a54dceae33ef2e8ce1f390c624ed..c91ba5badb80d3eafc48365047e6aa3f82f9b7e3 100644 (file)
@@ -1,10 +1,8 @@
 /*
- * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2004, 2006 Apple 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
@@ -44,7 +42,7 @@ L_objc_msgSend$stub:
        call    L_get_pc_thunk.edx
 1:
        movl    L_objc_msgSend$lz-1b(%edx),%ecx
-       jmp     %ecx
+       jmp     *%ecx
 L_objc_msgSend$stub_binder:
        lea     L_objc_msgSend$lz-1b(%edx),%eax
        pushl   %eax
@@ -59,6 +57,6 @@ L_objc_msgSend$lz:
 
        .text
        .align 4, 0x90
-       .globl _objc_msgSend_stub               
+       .private_extern _objc_msgSend_stub              
 _objc_msgSend_stub:
        jmp     L_objc_msgSend$stub
index 9b2a768a821b05cd424841cba594ddcbf67f3b68..8cc525b20658667c38b219abe59c2194bd7d43f6 100644 (file)
@@ -1,10 +1,8 @@
 /*
- * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2004, 2006 Apple 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
@@ -54,7 +52,7 @@ L_objc_msgSend$lazy_ptr:
        
        .text
        .align 4
-       .globl _objc_msgSend_stub
+       .private_extern _objc_msgSend_stub
 
 _objc_msgSend_stub:
        b       L_objc_msgSend$stub
diff --git a/runtime/Messengers.subproj/objc-msg-stub-ppc64.s b/runtime/Messengers.subproj/objc-msg-stub-ppc64.s
new file mode 100644 (file)
index 0000000..9376960
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2004-2006 Apple Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * 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
+       .section __TEXT, __picsymbol_stub, symbol_stubs, pure_instructions, 32
+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
+       ldu     r12,lo16(L_objc_msgSend$lazy_ptr-1b)(r11)
+       mtctr   r12
+       bctr
+
+       .data
+       .lazy_symbol_pointer
+L_objc_msgSend$lazy_ptr:
+       .indirect_symbol _objc_msgSend
+       .quad dyld_stub_binding_helper
+       
+       .text
+       .align 4
+       .private_extern _objc_msgSend_stub
+
+_objc_msgSend_stub:
+       b       L_objc_msgSend$stub
diff --git a/runtime/Messengers.subproj/objc-msg-stub-x86_64.s b/runtime/Messengers.subproj/objc-msg-stub-x86_64.s
new file mode 100644 (file)
index 0000000..1295567
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2004-2006 Apple Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * 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.
+ */
+
+#warning x86_64 interposing stub not implemented
+
+       .text
+       .align 2, 0x90
+       .globl _objc_msgSend_stub               
+_objc_msgSend_stub:
+       jmp     _objc_msgSend
index 9111c26fe1ef41d47582861afad63fae14d596be..2e1859c11904759bf93b518d0f7dd66b7dc38fbf 100644 (file)
@@ -1,10 +1,8 @@
 /*
- * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2004-2006 Apple 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
     #include "objc-msg-stub-i386.s"
 #elif defined (__ppc__) || defined(ppc)
     #include "objc-msg-stub-ppc.s"
-
+#elif defined (__ppc64__) || defined(ppc64)
+    #include "objc-msg-stub-ppc64.s"
+#elif defined (__x86_64__)
+    #include "objc-msg-stub-x86_64.s"
 #else
     #error Architecture not supported
 #endif
diff --git a/runtime/Messengers.subproj/objc-msg-x86_64.s b/runtime/Messengers.subproj/objc-msg-x86_64.s
new file mode 100644 (file)
index 0000000..a74f421
--- /dev/null
@@ -0,0 +1,1279 @@
+/*
+ * Copyright (c) 1999-2007 Apple Inc.  All Rights Reserved.
+ * 
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * 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-msg-x86_64.s - x86-64 code to support objc messaging.
+ **
+ ********************************************************************
+ ********************************************************************/
+
+#define __OBJC2__ 1
+       
+#undef  OBJC_ASM
+#define OBJC_ASM
+#include "objc-rtp.h"
+
+
+/********************************************************************
+* Data used by the ObjC runtime.
+*
+********************************************************************/
+
+.data
+// Substitute receiver for messages sent to nil (usually also nil)
+// id _objc_nilReceiver
+.align 4
+.globl __objc_nilReceiver
+__objc_nilReceiver:
+       .quad   0
+
+// _objc_entryPoints and _objc_exitPoints are used by objc
+// to get the critical regions for which method caches 
+// cannot be garbage collected.
+
+.globl         _objc_entryPoints
+_objc_entryPoints:
+       .quad   __cache_getImp
+       .quad   __cache_getMethod
+       .quad   _objc_msgSend
+       .quad   _objc_msgSend_fpret
+       .quad   _objc_msgSend_fp2ret
+       .quad   _objc_msgSend_stret
+       .quad   _objc_msgSendSuper
+       .quad   _objc_msgSendSuper_stret
+       .quad   0
+
+.globl         _objc_exitPoints
+_objc_exitPoints:
+       .quad   LGetImpExit
+       .quad   LGetMethodExit
+       .quad   LMsgSendExit
+       .quad   LMsgSendFpretExit
+       .quad   LMsgSendFp2retExit
+       .quad   LMsgSendStretExit
+       .quad   LMsgSendSuperExit
+       .quad   LMsgSendSuperStretExit
+       .quad   0
+
+
+/********************************************************************
+ *
+ * Names for parameter registers.
+ *
+ ********************************************************************/
+
+#define a1 rdi
+#define a2 rsi
+#define a3 rdx
+#define a4 rcx
+#define a5 r8
+#define a6 r9
+#define a6d r9d
+
+
+/********************************************************************
+ *
+ * Structure definitions.
+ *
+ ********************************************************************/
+
+// objc_super parameter to sendSuper
+       receiver        = 0
+       class           = 8
+
+// Selected field offsets in class structure
+       isa             = 0
+#if __OBJC2__
+       cache           = 16
+#else
+       cache           = 64
+#endif
+
+// Method descriptor
+       method_name     = 0
+       method_imp      = 16
+
+// Cache header
+       mask            = 0
+       occupied        = 4
+       buckets         = 8             // variable length array
+
+// typedef struct {
+//     uint128_t floatingPointArgs[8]; // xmm0..xmm7
+//     long linkageArea[4];            // r10, rax, ebp, ret
+//     long registerArgs[6];           // a1..a6
+//     long stackArgs[0];              // variable-size
+// } *marg_list;
+#define FP_AREA 0
+#define LINK_AREA (FP_AREA+8*16)
+#define REG_AREA (LINK_AREA+4*8)
+#define STACK_AREA (REG_AREA+6*8)
+
+
+#if defined(OBJC_INSTRUMENTED)
+// Cache instrumentation data, follows buckets
+       hitCount        = 0
+       hitProbes       = hitCount + 4
+       maxHitProbes    = hitProbes + 4
+       missCount       = maxHitProbes + 4
+       missProbes      = missCount + 4
+       maxMissProbes   = missProbes + 4
+       flushCount      = maxMissProbes + 4
+       flushedEntries  = flushCount + 4
+
+// Buckets in CacheHitHistogram and CacheMissHistogram
+       CACHE_HISTOGRAM_SIZE = 512
+#endif
+
+
+//////////////////////////////////////////////////////////////////////
+//
+// ENTRY               functionName
+//
+// Assembly directives to begin an exported function.
+//
+// Takes: functionName - name of the exported function
+//////////////////////////////////////////////////////////////////////
+
+.macro ENTRY
+       .text
+       .globl  $0
+       .align  2, 0x90
+$0:
+.endmacro
+
+//////////////////////////////////////////////////////////////////////
+//
+// END_ENTRY   functionName
+//
+// Assembly directives to end an exported function.  Just a placeholder,
+// a close-parenthesis for ENTRY, until it is needed for something.
+//
+// Takes: functionName - name of the exported function
+//////////////////////////////////////////////////////////////////////
+
+.macro END_ENTRY
+.endmacro
+
+//////////////////////////////////////////////////////////////////////
+//
+// CALL_MCOUNTER
+//
+// Calls mcount() profiling routine. Must be called immediately on
+// function entry, before any prologue executes.
+//
+//////////////////////////////////////////////////////////////////////
+
+.macro CALL_MCOUNTER
+#ifdef PROFILE
+       // Current stack contents: ret
+       pushq   %rbp
+       movq    %rsp,%rbp
+       // Current stack contents: ret, rbp
+       call    mcount
+       movq    %rbp,%rsp
+       popq    %rbp
+#endif
+.endmacro
+
+
+/////////////////////////////////////////////////////////////////////
+//
+// SaveRegisters
+//
+// Pushes a stack frame and saves all registers that might contain
+// parameter values.
+//
+// On entry:
+//         $0 = 0 if normal, 1 if CacheLookup already saved a4, a5, a6
+//         stack = ret
+//
+// On exit: 
+//         %rsp is 16-byte aligned
+//     
+/////////////////////////////////////////////////////////////////////
+/*
+ * old->ret 0   +208
+ * 16 ->rbp -8  +200
+ *     a6  -16 +192
+ *     a5  -24 +184
+ *     a4  -32 +176
+ *     a3  -40 +168
+ *     a2  -48 +160
+ *     a1  -56 +152
+ *     rax -64 +144
+ *     r10 -72 +136
+ *     pad -80 +128
+ *     xmm7 -88 +112 
+ *     xmm6 -104 +96
+ *     xmm5 -120 +80
+ *     xmm4 -136 +64
+ *     xmm3 -152 +48
+ *     xmm2 -168 +32
+ *     xmm1 -184 +16
+ * new->xmm0 -200 +0
+ */
+.macro SaveRegisters
+.if $0 == 0
+       movq    %a6, -16(%rsp)
+       movq    %a5, -24(%rsp)
+       movq    %a4, -32(%rsp)
+.else
+       // a4-a6 already saved by CacheLookup
+.endif
+       movq    %a3, -40(%rsp)
+       movq    %a2, -48(%rsp)
+       movq    %a1, -56(%rsp)
+       movq    %rax, -64(%rsp)         // might be xmm parameter count
+       movq    %r10, -72(%rsp)         // fixme needed?
+       // movq pad, -80(%rsp)
+       
+       subq    $$ 128+88, %rsp
+
+       // stack is now 16-byte aligned
+       movdqa  %xmm0, 0(%rsp)
+       movdqa  %xmm1, 16(%rsp)
+       movdqa  %xmm2, 32(%rsp)
+       movdqa  %xmm3, 48(%rsp)
+       movdqa  %xmm4, 64(%rsp)
+       movdqa  %xmm5, 80(%rsp)
+       movdqa  %xmm6, 96(%rsp)
+       movdqa  %xmm7, 112(%rsp)
+.endmacro
+
+/////////////////////////////////////////////////////////////////////
+//
+// RestoreRegisters
+//
+// Pops a stack frame pushed by SaveRegisters
+//
+// On entry:
+//         %rsp is unchanged since SaveRegisters
+//
+// On exit: 
+//         stack = ret
+//     
+/////////////////////////////////////////////////////////////////////
+
+.macro RestoreRegisters
+       movdqa  0(%rsp), %xmm0
+       movdqa  16(%rsp), %xmm1
+       movdqa  32(%rsp), %xmm2
+       movdqa  48(%rsp), %xmm3
+       movdqa  64(%rsp), %xmm4
+       movdqa  80(%rsp), %xmm5
+       movdqa  96(%rsp), %xmm6
+       movdqa  112(%rsp), %xmm7
+
+       addq    $$ 128+88, %rsp
+
+       movq    -16(%rsp), %a6
+       movq    -24(%rsp), %a5
+       movq    -32(%rsp), %a4
+       movq    -40(%rsp), %a3
+       movq    -48(%rsp), %a2
+       movq    -56(%rsp), %a1
+       movq    -64(%rsp), %rax
+       movq    -72(%rsp), %r10
+       // movq -80(%rsp), pad
+.endmacro
+
+
+/////////////////////////////////////////////////////////////////////
+//
+//
+// CacheLookup selectorRegister, cacheMissLabel, name
+//
+// Locate the implementation for a selector in a class method cache.
+//
+// Takes: 
+//       $0 = register containing selector (%a1 or %a2 ONLY)
+//       cacheMissLabel = label to branch to iff method is not cached
+//       %r11 = class whose cache is to be searched
+//       stack = ret
+//
+// On exit: (found) method triplet in %r11
+//         (not found) jumps to cacheMissLabel
+//         stack = ret
+//     
+/////////////////////////////////////////////////////////////////////
+
+
+.macro CacheLookup
+
+// load variables and save caller registers.
+
+       movq    %a4, -32(%rsp)          // save scratch registers in red zone
+       movq    %a5, -24(%rsp)
+       movq    %a6, -16(%rsp)
+
+       movq    cache(%r11), %a4        // cache = class->cache
+
+#if defined(OBJC_INSTRUMENTED)
+       pushl   %ebx                    // save non-volatile register
+       pushl   %eax                    // save cache pointer
+       xorl    %ebx, %ebx              // probeCount = 0
+#endif
+
+       leaq    buckets(%a4), %a5       // buckets = &cache->buckets
+       movl    mask(%a4), %a6d
+       shlq    $$3, %a6                // %a6 = cache->mask << 3
+       mov     $0, %a4                 // bytes = sel
+       andq    %a6, %a4                // bytes &= (mask << 3)
+       
+// search the receiver's cache
+// r11 = method (soon)
+// a4 = bytes
+// a5 = buckets
+// a6 = mask << 3
+// $0 = sel
+LMsgSendProbeCache_$1:
+#if defined(OBJC_INSTRUMENTED)
+       addl    $$1, %ebx                       // probeCount += 1
+#endif
+       movq    (%a5, %a4, 1), %r11             // method = buckets[bytes/8]
+       testq   %r11, %r11                      // if (method == NULL)
+#if defined(OBJC_INSTRUMENTED)
+       je      LMsgSendCacheMiss_$1
+#else
+       je      $1                              //   goto cacheMissLabel
+#endif
+
+       addq    $$8, %a4                        // bytes += 8
+       andq    %a6, %a4                        // bytes &= (mask << 3)
+       cmpq    method_name(%r11), $0           // if (method_name != sel)
+       jne     LMsgSendProbeCache_$1   //   goto loop
+
+       // cache hit, r11 = method triplet
+#if defined(OBJC_INSTRUMENTED)
+       jmp     LMsgSendInstrumentCacheHit_$1
+LMsgSendCacheHit2_$1:
+#endif
+
+       // restore saved registers
+       movq    -32(%rsp), %a4
+       movq    -24(%rsp), %a5
+       movq    -16(%rsp), %a6
+
+       // Done. Only instrumentation follows.
+       
+#if defined(OBJC_INSTRUMENTED)
+       jmp     LMsgSendCacheDone_$1
+
+LMsgSendInstrumentCacheHit_$1:
+       popl    %edx                    // retrieve cache pointer
+       movl    mask(%edx), %esi                // mask = cache->mask
+       testl   %esi, %esi              // a mask of zero is only for the...
+       je      LMsgSendHitInstrumentDone_$1    // ... emptyCache, do not record anything
+
+       // locate and update the CacheInstrumentation structure
+       addl    $$1, %esi                       // entryCount = mask + 1
+       shll    $$2, %esi               // tableSize = entryCount * sizeof(entry)
+       addl    $buckets, %esi          // offset = buckets + tableSize
+       addl    %edx, %esi              // cacheData = &cache->buckets[mask+1]
+
+       movl    hitCount(%esi), %edi
+       addl    $$1, %edi
+       movl    %edi, hitCount(%esi)    // cacheData->hitCount += 1
+       movl    hitProbes(%esi), %edi
+       addl    %ebx, %edi
+       movl    %edi, hitProbes(%esi)   // cacheData->hitProbes += probeCount
+       movl    maxHitProbes(%esi), %edi// if (cacheData->maxHitProbes < probeCount)
+       cmpl    %ebx, %edi
+       jge     LMsgSendMaxHitProbeOK_$1
+       movl    %ebx, maxHitProbes(%esi)// cacheData->maxHitProbes = probeCount
+LMsgSendMaxHitProbeOK_$1:
+
+       // update cache hit probe histogram
+       cmpl    $CACHE_HISTOGRAM_SIZE, %ebx     // pin probeCount to max index
+       jl      LMsgSendHitHistoIndexSet_$1
+       movl    $(CACHE_HISTOGRAM_SIZE-1), %ebx
+LMsgSendHitHistoIndexSet_$1:
+       LEA_STATIC_DATA %esi, _CacheHitHistogram, EXTERNAL_SYMBOL
+       shll    $$2, %ebx               // convert probeCount to histogram index
+       addl    %ebx, %esi              // calculate &CacheHitHistogram[probeCount<<2]
+       movl    0(%esi), %edi           // get current tally
+       addl    $$1, %edi                       // 
+       movl    %edi, 0(%esi)           // tally += 1
+LMsgSendHitInstrumentDone_$1:
+       popl    %ebx                    // restore non-volatile register
+       jmp     LMsgSendCacheHit2_$1
+
+
+LMsgSendCacheMiss_$1:
+       popl    %edx                    // retrieve cache pointer
+       movl    mask(%edx), %esi                // mask = cache->mask
+       testl   %esi, %esi              // a mask of zero is only for the...
+       je      LMsgSendMissInstrumentDone_$1   // ... emptyCache, do not record anything
+
+       // locate and update the CacheInstrumentation structure
+       addl    $$1, %esi                       // entryCount = mask + 1
+       shll    $$2, %esi               // tableSize = entryCount * sizeof(entry)
+       addl    $buckets, %esi          // offset = buckets + tableSize
+       addl    %edx, %esi              // cacheData = &cache->buckets[mask+1]
+
+       movl    missCount(%esi), %edi   // 
+       addl    $$1, %edi                       // 
+       movl    %edi, missCount(%esi)   // cacheData->missCount += 1
+       movl    missProbes(%esi), %edi  // 
+       addl    %ebx, %edi              // 
+       movl    %edi, missProbes(%esi)  // cacheData->missProbes += probeCount
+       movl    maxMissProbes(%esi), %edi// if (cacheData->maxMissProbes < probeCount)
+       cmpl    %ebx, %edi              // 
+       jge     LMsgSendMaxMissProbeOK_$1       // 
+       movl    %ebx, maxMissProbes(%esi)// cacheData->maxMissProbes = probeCount
+LMsgSendMaxMissProbeOK_$1:
+
+       // update cache miss probe histogram
+       cmpl    $CACHE_HISTOGRAM_SIZE, %ebx     // pin probeCount to max index
+       jl      LMsgSendMissHistoIndexSet_$1
+       movl    $(CACHE_HISTOGRAM_SIZE-1), %ebx
+LMsgSendMissHistoIndexSet_$1:
+       LEA_STATIC_DATA %esi, _CacheMissHistogram, EXTERNAL_SYMBOL
+       shll    $$2, %ebx               // convert probeCount to histogram index
+       addl    %ebx, %esi              // calculate &CacheMissHistogram[probeCount<<2]
+       movl    0(%esi), %edi           // get current tally
+       addl    $$1, %edi                       // 
+       movl    %edi, 0(%esi)           // tally += 1
+LMsgSendMissInstrumentDone_$1:
+       popl    %ebx                    // restore non-volatile register
+       jmp     $0
+
+LMsgSendCacheDone_$1:  
+#endif
+
+       
+.endmacro
+
+
+/////////////////////////////////////////////////////////////////////
+//
+// MethodTableLookup classRegister, selectorRegister
+//
+// Takes: $0 = class to search (%a1 or %a2 or %r11 ONLY)
+//       $1 = selector to search for (%a2 or %a3 ONLY)
+//
+// Stack: ret (%rsp+0), pad, %a4, %a5, %a6 (saved by CacheLookup)
+//
+// On exit: restores registers saved by CacheLookup
+//       imp in %r11
+//
+/////////////////////////////////////////////////////////////////////
+.macro MethodTableLookup
+
+       SaveRegisters 1
+
+       // _class_lookupMethodAndLoadCache(class, selector)
+       movq    $0, %a1
+       movq    $1, %a2
+       call    __class_lookupMethodAndLoadCache
+
+       // IMP is now in %rax
+       movq    %rax, %r11
+
+       RestoreRegisters
+
+.endmacro
+
+
+/********************************************************************
+ * Method _cache_getMethod(Class cls, SEL sel, IMP objc_msgForward_imp)
+ *
+ * On entry:   a1 = class whose cache is to be searched
+ *             a2 = selector to search for
+ *             a3 = _objc_msgForward IMP
+ *
+ * If found, returns method triplet pointer.
+ * If not found, returns NULL.
+ *
+ * NOTE: _cache_getMethod never returns any cache entry whose implementation
+ * is _objc_msgForward. It returns NULL instead. This prevents thread-
+ * safety and memory management bugs in _class_lookupMethodAndLoadCache. 
+ * See _class_lookupMethodAndLoadCache for details.
+ *
+ * _objc_msgForward is passed as a parameter because it's more efficient
+ * to do the (PIC) lookup once in the caller than repeatedly here.
+ ********************************************************************/
+        
+       ENTRY __cache_getMethod
+
+// do lookup
+       movq    %a1, %r11               // move class to r11 for CacheLookup
+       CacheLookup %a2, LGetMethodMiss
+
+// cache hit, method triplet in %r11
+       cmpq    method_imp(%r11), %a3   // if (imp == _objc_msgForward)
+       je      LGetMethodMiss          //     return nil
+       movq    %r11, %rax              // return method triplet address
+       ret
+
+LGetMethodMiss:
+// cache miss, return nil
+       xorq    %rax, %rax      // erase %rax
+       ret
+
+LGetMethodExit:
+       END_ENTRY __cache_getMethod
+
+
+/********************************************************************
+ * IMP _cache_getImp(Class cls, SEL sel)
+ *
+ * On entry:   a1 = class whose cache is to be searched
+ *             a2 = selector to search for
+ *
+ * If found, returns method implementation.
+ * If not found, returns NULL.
+ ********************************************************************/
+
+       ENTRY __cache_getImp
+
+// do lookup
+       movq    %a1, %r11               // move class to r11 for CacheLookup
+       CacheLookup %a2, LGetImpMiss
+
+// cache hit, method triplet in %r11
+       movq    method_imp(%r11), %rax  // return method imp address
+       ret
+
+LGetImpMiss:
+// cache miss, return nil
+       xorq    %rax, %rax      // erase %rax
+       ret
+
+LGetImpExit:
+       END_ENTRY __cache_getImp
+
+
+/********************************************************************
+ *
+ * id objc_msgSend(id self, SEL        _cmd,...);
+ *
+ ********************************************************************/
+       
+       ENTRY   _objc_msgSend
+       CALL_MCOUNTER
+
+// check whether selector is ignored
+       cmpq    $ kIgnore, %a2
+       je      LMsgSendReturnSelf      // ignore and return self
+
+// check whether receiver is nil 
+       testq   %a1, %a1
+       je      LMsgSendNilSelf
+
+// receiver (in %a1) is non-nil: search the cache
+LMsgSendReceiverOk:
+       movq    isa(%a1), %r11          // class = self->isa
+       CacheLookup %a2, LMsgSendCacheMiss
+       // CacheLookup placed method in r11
+       movq    method_imp(%r11), %r11
+       jmp     *%r11                   // goto *imp
+
+// cache miss: go search the method lists
+LMsgSendCacheMiss:
+       MethodTableLookup isa(%a1), %a2
+       // MethodTableLookup placed IMP in r11
+       jmp     *%r11                   // goto *imp
+
+// message sent to nil: redirect to nil receiver, if any
+LMsgSendNilSelf:
+       movq    __objc_nilReceiver(%rip), %a1
+       testq   %a1, %a1                // if (receiver != nil)
+       jne     LMsgSendReceiverOk      //   send to new receiver
+
+       // message sent to nil - return 0
+       movq    $0, %rax
+       movq    $0, %rdx
+       xorps   %xmm0, %xmm0
+       xorps   %xmm1, %xmm1
+       ret
+       
+LMsgSendReturnSelf:
+       movq    %a1, %rax
+       ret
+
+LMsgSendExit:
+       END_ENTRY       _objc_msgSend
+
+#if __OBJC2__
+       ENTRY _objc_msgSend_fixup
+
+       testq   %a1, %a1
+       je      LMsgSendFixupNilSelf
+
+       SaveRegisters 0
+       // a1 = receiver
+       // a2 = address of message ref
+       movq    %a2, %a3
+       movq    $0, %a2
+       // __objc_fixupMessageRef(receiver, 0, ref)
+       call    __objc_fixupMessageRef
+       movq    %rax, %r11
+       RestoreRegisters
+
+       // imp is in r11
+       // Load _cmd from the message_ref
+       movq    8(%a2), %a2
+       jmp     *%r11
+
+LMsgSendFixupNilSelf:
+       // message sent to nil - return 0
+       movq    $0, %rax
+       movq    $0, %rdx
+       xorps   %xmm0, %xmm0
+       xorps   %xmm1, %xmm1
+       ret
+       
+       END_ENTRY _objc_msgSend_fixup
+
+
+       ENTRY _objc_msgSend_fixedup
+       // Load _cmd from the message_ref
+       movq    8(%a2), %a2
+       jmp     _objc_msgSend
+       END_ENTRY _objc_msgSend_fixedup
+#endif
+
+       
+/********************************************************************
+ *
+ * id objc_msgSendSuper(struct objc_super *super, SEL _cmd,...);
+ *
+ * struct objc_super {
+ *             id      receiver;
+ *             Class   class;
+ * };
+ ********************************************************************/
+       
+       ENTRY   _objc_msgSendSuper
+       CALL_MCOUNTER
+
+// check whether selector is ignored
+       cmpq    $ kIgnore, %a2
+       je      LMsgSendSuperReturnSelf
+
+// search the cache (objc_super in %a1)
+       movq    class(%a1), %r11        // class = objc_super->class
+       CacheLookup %a2, LMsgSendSuperCacheMiss
+       // CacheLookup placed method in r11
+       movq    method_imp(%r11), %r11
+       movq    receiver(%a1), %a1      // load real receiver
+       jmp     *%r11                   // goto *imp
+
+// cache miss: go search the method lists
+LMsgSendSuperCacheMiss:
+       MethodTableLookup class(%a1), %a2
+       // MethodTableLookup placed IMP in r11
+       movq    receiver(%a1), %a1      // load real receiver
+       jmp     *%r11                   // goto *imp
+
+LMsgSendSuperReturnSelf:
+       movq    receiver(%a1), %rax
+       ret
+       
+LMsgSendSuperExit:
+       END_ENTRY       _objc_msgSendSuper
+
+#if __OBJC2__
+       ENTRY _objc_msgSendSuper2_fixup
+
+       SaveRegisters 0
+       // a1 = address of objc_super2
+       // a2 = address of message ref
+       movq    %a2, %a3
+       movq    %a1, %a2
+       movq    receiver(%a1), %a1
+       // __objc_fixupMessageRef(receiver, objc_super, ref)
+       call    __objc_fixupMessageRef
+       movq    %rax, %r11
+       RestoreRegisters
+
+       // imp is in r11
+       // Load _cmd from the message_ref
+       movq    8(%a2), %a2
+       // Load receiver from objc_super2
+       movq    receiver(%a1), %a1
+       jmp     *%r11
+       
+       END_ENTRY _objc_msgSendSuper2_fixup
+
+
+       ENTRY _objc_msgSendSuper2_fixedup
+       // objc_super->class is superclass of class to search
+       movq    class(%a1), %r11        // cls = objc_super->class
+       movq    8(%a2), %a2             // load _cmd from message_ref
+       movq    8(%r11), %r11           // cls = cls->superclass
+       movq    %r11, class(%a1)
+       // objc_super->class is now the class to search
+       jmp     _objc_msgSendSuper
+       END_ENTRY _objc_msgSendSuper2_fixedup
+#endif
+
+
+/********************************************************************
+ *
+ * double objc_msgSend_fpret(id self, SEL _cmd,...);
+ * Used for `long double` return only. `float` and `double` use objc_msgSend.
+ *
+ ********************************************************************/
+
+       ENTRY   _objc_msgSend_fpret
+       CALL_MCOUNTER
+
+// check whether selector is ignored
+       cmpq    $ kIgnore, %a2
+       je      LMsgSendFpretReturnZero
+
+// check whether receiver is nil 
+       testq   %a1, %a1
+       je      LMsgSendFpretNilSelf
+
+// receiver (in %a1) is non-nil: search the cache
+LMsgSendFpretReceiverOk:
+       movq    isa(%a1), %r11          // class = self->isa
+       CacheLookup %a2, LMsgSendFpretCacheMiss
+       // CacheLookup placed method in r11
+       movq    method_imp(%r11), %r11
+       jmp     *%r11                   // goto *imp
+
+// cache miss: go search the method lists
+LMsgSendFpretCacheMiss:
+       MethodTableLookup isa(%a1), %a2
+       // MethodTableLookup placed IMP in r11
+       jmp     *%r11                   // goto *imp
+
+// message sent to nil: redirect to nil receiver, if any
+LMsgSendFpretNilSelf:
+1:     movq    __objc_nilReceiver(%rip),%a1
+       testq   %a1, %a1                // if (receiver != nil)
+       jne     LMsgSendFpretReceiverOk //   send to new receiver
+
+LMsgSendFpretReturnZero:
+       // Long double return.
+       fldz
+       // Clear int and float/double return too.
+       movq    $0, %rax
+       movq    $0, %rdx
+       xorps   %xmm0, %xmm0
+       xorps   %xmm1, %xmm1
+       ret
+
+LMsgSendFpretExit:
+       END_ENTRY       _objc_msgSend_fpret
+       
+#if __OBJC2__
+       ENTRY _objc_msgSend_fpret_fixup
+
+       testq   %a1, %a1
+       je      LMsgSendFpretFixupNilSelf
+
+       SaveRegisters 0
+       // a1 = receiver
+       // a2 = address of message ref
+       movq    %a2, %a3
+       movq    $0, %a2
+       // __objc_fixupMessageRef(receiver, 0, ref)
+       call    __objc_fixupMessageRef
+       movq    %rax, %r11
+       RestoreRegisters
+
+       // imp is in r11
+       // Load _cmd from the message_ref
+       movq    8(%a2), %a2
+       jmp     *%r11
+
+LMsgSendFpretFixupNilSelf:
+       // Long double return.
+       fldz
+       // Clear int and float/double return too.
+       movq    $0, %rax
+       movq    $0, %rdx
+       xorps   %xmm0, %xmm0
+       xorps   %xmm1, %xmm1
+       ret
+       
+       END_ENTRY _objc_msgSend_fpret_fixup
+
+
+       ENTRY _objc_msgSend_fpret_fixedup
+       // Load _cmd from the message_ref
+       movq    8(%a2), %a2
+       jmp     _objc_msgSend_fpret
+       END_ENTRY _objc_msgSend_fpret_fixedup
+#endif
+
+
+/********************************************************************
+ *
+ * double objc_msgSend_fp2ret(id self, SEL _cmd,...);
+ * Used for `complex long double` return only.
+ *
+ ********************************************************************/
+
+       ENTRY   _objc_msgSend_fp2ret
+       CALL_MCOUNTER
+
+// check whether selector is ignored
+       cmpq    $ kIgnore, %a2
+       je      LMsgSendFp2retReturnZero
+
+// check whether receiver is nil 
+       testq   %a1, %a1
+       je      LMsgSendFp2retNilSelf
+
+// receiver (in %a1) is non-nil: search the cache
+LMsgSendFp2retReceiverOk:
+       movq    isa(%a1), %r11          // class = self->isa
+       CacheLookup %a2, LMsgSendFp2retCacheMiss
+       // CacheLookup placed method in r11
+       movq    method_imp(%r11), %r11
+       jmp     *%r11                   // goto *imp
+
+// cache miss: go search the method lists
+LMsgSendFp2retCacheMiss:
+       MethodTableLookup isa(%a1), %a2
+       // MethodTableLookup placed IMP in r11
+       jmp     *%r11                   // goto *imp
+
+// message sent to nil: redirect to nil receiver, if any
+LMsgSendFp2retNilSelf:
+1:     movq    __objc_nilReceiver(%rip),%a1
+       testq   %a1, %a1                // if (receiver != nil)
+       jne     LMsgSendFp2retReceiverOk        //   send to new receiver
+
+LMsgSendFp2retReturnZero:
+       // complex long double return.
+       fldz
+       fldz
+       // Clear int and float/double return too.
+       movq    $0, %rax
+       movq    $0, %rdx
+       xorps   %xmm0, %xmm0
+       xorps   %xmm1, %xmm1
+       ret
+
+LMsgSendFp2retExit:
+       END_ENTRY       _objc_msgSend_fp2ret
+
+#if __OBJC2__
+       ENTRY _objc_msgSend_fp2ret_fixup
+
+       testq   %a1, %a1
+       je      LMsgSendFp2retFixupNilSelf
+
+       SaveRegisters 0
+       // a1 = receiver
+       // a2 = address of message ref
+       movq    %a2, %a3
+       movq    $0, %a2
+       // __objc_fixupMessageRef(receiver, 0, ref)
+       call    __objc_fixupMessageRef
+       movq    %rax, %r11
+       RestoreRegisters
+
+       // imp is in r11
+       // Load _cmd from the message_ref
+       movq    8(%a2), %a2
+       jmp     *%r11
+
+LMsgSendFp2retFixupNilSelf:
+       // complex long double return.
+       fldz
+       fldz
+       // Clear int and float/double return too.
+       movq    $0, %rax
+       movq    $0, %rdx
+       xorps   %xmm0, %xmm0
+       xorps   %xmm1, %xmm1
+       ret
+       
+       END_ENTRY _objc_msgSend_fp2ret_fixup
+
+
+       ENTRY _objc_msgSend_fp2ret_fixedup
+       // Load _cmd from the message_ref
+       movq    8(%a2), %a2
+       jmp     _objc_msgSend_fp2ret
+       END_ENTRY _objc_msgSend_fp2ret_fixedup
+#endif
+
+
+/********************************************************************
+ *
+ * void        objc_msgSend_stret(void *st_addr, id self, SEL _cmd, ...);
+ *
+ * objc_msgSend_stret is the struct-return form of msgSend.
+ * The ABI calls for %a1 to be used as the address of the structure
+ * being returned, with the parameters in the succeeding locations.
+ *
+ * On entry:   %a1 is the address where the structure is returned,
+ *             %a2 is the message receiver,
+ *             %a3 is the selector
+ ********************************************************************/
+
+       ENTRY   _objc_msgSend_stret
+       CALL_MCOUNTER
+
+// check whether receiver is nil 
+       testq   %a2, %a2
+       je      LMsgSendStretNilSelf
+
+// receiver (in %a2) is non-nil: search the cache
+LMsgSendStretReceiverOk:
+       movq    isa(%a2), %r11                  //   class = self->isa
+       CacheLookup %a3, LMsgSendStretCacheMiss
+       // CacheLookup placed method in %r11
+       movq    method_imp(%r11), %r11
+LMsgSendStretCallImp:
+       cmpq    %r11, L_objc_msgForward(%rip)   // if imp == _objc_msgForward
+       je      __objc_msgForward_stret         //   call struct-returning fwd
+       jmp     *%r11                           // else goto *imp
+
+// cache miss: go search the method lists
+LMsgSendStretCacheMiss:
+       MethodTableLookup isa(%a2), %a3
+       // MethodTableLookup placed IMP in r11
+       jmp     LMsgSendStretCallImp
+
+// message sent to nil: redirect to nil receiver, if any
+LMsgSendStretNilSelf:
+       movq    __objc_nilReceiver(%rip), %a2
+       testq   %a2, %a2                        // if (receiver != nil)
+       jne     LMsgSendStretReceiverOk         //   send to new receiver
+       ret                                     // else just return
+
+LMsgSendStretExit:
+       END_ENTRY       _objc_msgSend_stret
+
+#if __OBJC2__
+       ENTRY _objc_msgSend_stret_fixup
+
+       testq   %a2, %a2
+       je      LMsgSendStretFixupNilSelf
+
+       SaveRegisters 0
+       // a2 = receiver
+       // a3 = address of message ref
+       movq    %a2, %a1
+       movq    $0, %a2
+       // __objc_fixupMessageRef(receiver, 0, ref)
+       call    __objc_fixupMessageRef
+       movq    %rax, %r11
+       RestoreRegisters
+
+       // imp is in r11
+       // Load _cmd from the message_ref
+       movq    8(%a3), %a3
+       cmpq    %r11, L_objc_msgForward(%rip)   // if imp == _objc_msgForward
+       je      __objc_msgForward_stret         //   call struct-returning fwd
+       jmp     *%r11                           // else goto *imp
+
+LMsgSendStretFixupNilSelf:
+       ret
+       
+       END_ENTRY _objc_msgSend_stret_fixup
+
+
+       ENTRY _objc_msgSend_stret_fixedup
+       // Load _cmd from the message_ref
+       movq    8(%a3), %a3
+       jmp     _objc_msgSend_stret
+       END_ENTRY _objc_msgSend_stret_fixedup
+#endif
+
+
+/********************************************************************
+ *
+ * void objc_msgSendSuper_stret(void *st_addr, struct objc_super *super, SEL _cmd, ...);
+ *
+ * struct objc_super {
+ *             id      receiver;
+ *             Class   class;
+ * };
+ *
+ * objc_msgSendSuper_stret is the struct-return form of msgSendSuper.
+ * The ABI calls for (sp+4) to be used as the address of the structure
+ * being returned, with the parameters in the succeeding registers.
+ *
+ * On entry:   %a1 is the address where the structure is returned,
+ *             %a2 is the address of the objc_super structure,
+ *             %a3 is the selector
+ *
+ ********************************************************************/
+
+       ENTRY   _objc_msgSendSuper_stret
+       CALL_MCOUNTER
+
+// search the cache (objc_super in %a2)
+       movq    class(%a2), %r11                // class = objc_super->class
+       CacheLookup %a3, LMsgSendSuperStretCacheMiss
+       // CacheLookup placed method in %r11
+       movq    method_imp(%r11), %r11
+LMsgSendSuperStretCallImp:
+       movq    receiver(%a2), %a2              // load real receiver
+       cmpq    %r11, L_objc_msgForward(%rip)   // if imp == _objc_msgForward
+       je      __objc_msgForward_stret         //   call struct-returning fwd
+       jmp     *%r11                           // else goto *imp
+
+// cache miss: go search the method lists
+LMsgSendSuperStretCacheMiss:
+       MethodTableLookup class(%a2), %a3
+       // MethodTableLookup placed IMP in r11
+       jmp     LMsgSendSuperStretCallImp
+
+LMsgSendSuperStretExit:
+       END_ENTRY       _objc_msgSendSuper_stret
+
+#if __OBJC2__
+       ENTRY _objc_msgSendSuper2_stret_fixup
+
+       SaveRegisters 0
+       // a2 = address of objc_super2
+       // a3 = address of message ref
+       movq    receiver(%a2), %a1
+       // __objc_fixupMessageRef(receiver, objc_super, ref)
+       call    __objc_fixupMessageRef
+       movq    %rax, %r11
+       RestoreRegisters
+
+       // imp is in r11
+       // Load _cmd from the message_ref
+       movq    8(%a3), %a3
+       // Load receiver from objc_super2
+       movq    receiver(%a2), %a2
+       cmpq    %r11, L_objc_msgForward(%rip)   // if imp == _objc_msgForward
+       je      __objc_msgForward_stret         //   call struct-returning fwd
+       jmp     *%r11                           // else goto *imp
+       
+       END_ENTRY _objc_msgSendSuper2_stret_fixup
+
+       
+       ENTRY _objc_msgSendSuper2_stret_fixedup
+       // objc_super->class is superclass of class to search
+       movq    class(%a2), %r11        // cls = objc_super->class
+       movq    8(%a3), %a3             // load _cmd from message_ref
+       movq    8(%r11), %r11           // cls = cls->superclass
+       movq    %r11, class(%a2)
+       // objc_super->class is now the class to search
+       jmp     _objc_msgSendSuper_stret
+       END_ENTRY _objc_msgSendSuper2_stret_fixedup
+#endif
+
+
+/********************************************************************
+ *
+ * id _objc_msgForward(id self, SEL _cmd,...);
+ *
+ ********************************************************************/
+
+// _FwdSel is @selector(forward::), set up in map_images().
+// ALWAYS dereference _FwdSel to get to "forward::" !!
+       .data
+       .align 3
+       .private_extern _FwdSel
+_FwdSel: .quad 0
+
+       .cstring
+       .align 3
+LUnkSelStr: .ascii "Does not recognize selector %s\0"
+
+       .data
+       .align 3
+       .private_extern __objc_forward_handler
+__objc_forward_handler:        .quad 0
+
+       .data
+       .align 3
+       .private_extern __objc_forward_stret_handler
+__objc_forward_stret_handler:  .quad 0
+
+       // GrP fixme don't know how to cmpq reg, _objc_msgForward
+L_objc_msgForward:     .quad __objc_msgForward
+
+       ENTRY   __objc_msgForward
+
+       // Non-struct return only!
+
+       // Call user handler, if any
+       movq    __objc_forward_handler(%rip), %r11
+       testq   %r11, %r11              // if (handler == NULL)
+       je      1f                      //   skip handler
+       jmp     *%r11                   // else goto handler
+1:     
+       // No user handler
+
+       // Die if forwarding "forward::"
+       cmpq    %a2, _FwdSel(%rip)
+       je      LMsgForwardError
+
+       // Record current return address. It will be copied elsewhere in 
+       // the marg_list because this location is needed for register args
+       movq    (%rsp), %r11
+
+       // Push stack frame
+       // Space for: fpArgs + regArgs + linkage - ret (already on stack)
+       subq    $ 8*16 + 6*8 + (4-1)*8, %rsp
+
+       // Save return address in linkage area.
+       movq    %r11, 16+LINK_AREA(%rsp)
+       
+       // Save parameter registers
+       movq    %a1,  0+REG_AREA(%rsp)
+       movq    %a2,  8+REG_AREA(%rsp)
+       movq    %a3, 16+REG_AREA(%rsp)
+       movq    %a4, 24+REG_AREA(%rsp)
+       movq    %a5, 32+REG_AREA(%rsp)
+       movq    %a6, 40+REG_AREA(%rsp)
+
+       // Save side parameter registers
+       movq    %r10, 0+LINK_AREA(%rsp) // static chain (fixme needed?)
+       movq    %rax, 8+LINK_AREA(%rsp) // xmm count
+       // 16+LINK_AREA is return address
+
+       // Save xmm registers
+       movdqa  %xmm0, 0+FP_AREA(%rsp)
+       movdqa  %xmm1, 16+FP_AREA(%rsp)
+       movdqa  %xmm2, 32+FP_AREA(%rsp)
+       movdqa  %xmm3, 48+FP_AREA(%rsp)
+       movdqa  %xmm4, 64+FP_AREA(%rsp)
+       movdqa  %xmm5, 80+FP_AREA(%rsp)
+       movdqa  %xmm6, 96+FP_AREA(%rsp)
+       movdqa  %xmm7, 112+FP_AREA(%rsp)
+
+       // Call [receiver forward:sel :margs]
+       movq    %rsp, %a4               // marg_list
+       movq    %a2, %a3                // sel
+       movq    _FwdSel(%rip), %a2      // forward::
+       // %a1 is already the receiver
+
+       call    _objc_msgSend
+       
+       // Retrieve return address from linkage area
+       movq    16+LINK_AREA(%rsp), %r11
+       // Pop stack frame
+       subq    $ 8*16 + 6*8 + (4-1)*8, %rsp
+       // Put return address back
+       movq    %r11, (%rsp)
+       ret
+
+LMsgForwardError:
+       // Tail-call __objc_error(receiver, "unknown selector %s", "forward::")
+       // %a1 is already the receiver
+       leaq    LUnkSelStr(%rip), %a2   // "unknown selector %s"
+       movq    _FwdSel(%rip), %a3      // forward::
+       jmp     ___objc_error           // never returns
+
+       END_ENTRY       __objc_msgForward
+
+
+       ENTRY   __objc_msgForward_stret
+
+       // Call user handler, if any
+       movq    __objc_forward_stret_handler(%rip), %r11
+       testq   %r11, %r11              // if (handler == NULL)
+       je      1f                      //   skip handler
+       jmp     *%r11                   // else goto handler
+1:     
+       // No user handler
+       // Die if forwarding "forward::"
+       cmpq    %a3, _FwdSel(%rip)
+       je      LMsgForwardStretError
+
+       // Record current return address. It will be copied elsewhere in 
+       // the marg_list because this location is needed for register args
+       movq    (%rsp), %r11
+
+       // Push stack frame
+       // Space for: fpArgs + regArgs + linkage - ret (already on stack)
+       subq    $ 8*16 + 6*8 + (4-1)*8, %rsp
+
+       // Save return address in linkage area.
+       movq    %r11, 16+LINK_AREA(%rsp)
+       
+       // Save parameter registers
+       movq    %a1,  0+REG_AREA(%rsp)
+       movq    %a2,  8+REG_AREA(%rsp)
+       movq    %a3, 16+REG_AREA(%rsp)
+       movq    %a4, 24+REG_AREA(%rsp)
+       movq    %a5, 32+REG_AREA(%rsp)
+       movq    %a6, 40+REG_AREA(%rsp)
+
+       // Save side parameter registers
+       movq    %r10, 0+LINK_AREA(%rsp) // static chain (fixme needed?)
+       movq    %rax, 8+LINK_AREA(%rsp) // xmm count
+       // 16+LINK_AREA is return address
+
+       // Save xmm registers
+       movdqa  %xmm0, 0+FP_AREA(%rsp)
+       movdqa  %xmm1, 16+FP_AREA(%rsp)
+       movdqa  %xmm2, 32+FP_AREA(%rsp)
+       movdqa  %xmm3, 48+FP_AREA(%rsp)
+       movdqa  %xmm4, 64+FP_AREA(%rsp)
+       movdqa  %xmm5, 80+FP_AREA(%rsp)
+       movdqa  %xmm6, 96+FP_AREA(%rsp)
+       movdqa  %xmm7, 112+FP_AREA(%rsp)
+
+       // Call [receiver forward:sel :margs]
+       movq    %a2, %a1                // receiver
+       movq    _FwdSel(%rip), %a2      // forward::
+       // %a3 is already the selector
+       movq    %rsp, %a4               // marg_list
+
+       call    _objc_msgSend           // forward:: is NOT struct-return
+       
+       // Retrieve return address from linkage area
+       movq    16+LINK_AREA(%rsp), %r11
+       // Pop stack frame
+       subq    $ 8*16 + 6*8 + (4-1)*8, %rsp
+       // Put return address back
+       movq    %r11, (%rsp)
+       ret
+
+LMsgForwardStretError:
+       // Tail-call __objc_error(receiver, "unknown selector %s", "forward::")
+       movq    %a2, %a1                // receiver
+       leaq    LUnkSelStr(%rip), %a2   // "unknown selector %s"
+       movq    _FwdSel(%rip), %a3      // forward::
+       jmp     ___objc_error           // never returns
+
+       END_ENTRY       __objc_msgForward_stret
+
+
+       ENTRY _method_invoke
+
+       movq    method_imp(%a2), %r11
+       movq    method_name(%a2), %a2
+       jmp     *%r11
+       
+       END_ENTRY _method_invoke
+
+
+       ENTRY _method_invoke_stret
+
+       movq    method_imp(%a3), %r11
+       movq    method_name(%a3), %a3
+       jmp     *%r11
+       
+       END_ENTRY _method_invoke_stret
index 02399ecfccda319316a370cb3358382c1a5d1076..e2f5cac5488fc0176719d9b32fb903511bc56847 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
+ * Copyright (c) 1999-2001, 2005-2006 Apple Inc.  All Rights Reserved.
  * 
- * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
+ * @APPLE_LICENSE_HEADER_START@
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
     #include "objc-msg-i386.s"
 #elif defined (__ppc__) || defined(ppc)
     #include "objc-msg-ppc.s"
-
+#elif defined (__ppc64__)
+    #include "objc-msg-ppc64.s"
+#elif defined (__x86_64__)
+    #include "objc-msg-x86_64.s"
 #else
     #error Architecture not supported
 #endif
index 31ceb2f6b5dab3a64f2574e502d30f24ba262765..3a2580b3c7dcd6224020267dea18e2f56ebddc59 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
+ * Copyright (c) 1999-2003, 2005-2007 Apple Inc.  All Rights Reserved.
  * 
- * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
+ * @APPLE_LICENSE_HEADER_START@
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
 #ifndef _OBJC_OBJECT_H_
 #define _OBJC_OBJECT_H_
 
-#include <objc/objc-runtime.h>
+#include <stdarg.h>
+#import <objc/objc-runtime.h>
+
+#if __OBJC2__
+
+@interface Object
+{
+       Class isa;      /* A pointer to the instance's class structure */
+}
+
++class;
+-(BOOL) isEqual:anObject;
+
+@end
 
-@class Protocol;
+#else
 
 @interface Object
 {
 
 @end
 
-OBJC_EXPORT id object_dispose(Object *anObject);
-OBJC_EXPORT id object_copy(Object *anObject, unsigned nBytes);
-OBJC_EXPORT id object_copyFromZone(Object *anObject, unsigned nBytes, void *z);
-OBJC_EXPORT id object_realloc(Object *anObject, unsigned nBytes);
-OBJC_EXPORT id object_reallocFromZone(Object *anObject, unsigned nBytes, void *z);
+#endif
 
 #endif /* _OBJC_OBJECT_H_ */
index 8abc26ea926879275e4717fe6813f16c3cf2a20d..1990ccf5d34e7fb1fa7c1e5cb0a3fd59f5cc8574 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
+ * Copyright (c) 1999-2007 Apple Inc.  All Rights Reserved.
  * 
- * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
+ * @APPLE_LICENSE_HEADER_START@
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
        Copyright 1988-1996 NeXT Software, Inc.
 */
 
-#import <objc/Object.h>
-#import "objc-private.h"
-#import <objc/objc-auto.h>
-#import <objc/objc-runtime.h>
-#import <objc/Protocol.h>
+#if __OBJC2__
+
+#import "Object.h"
+
+@implementation Object 
+
++ initialize
+{
+    return self; 
+}
+
++ class 
+{
+    return self;
+}
+
+@end
+
+#else
+
+#import <stdlib.h>
 #import <stdarg.h> 
 #import <string.h> 
+#import <malloc/malloc.h>
+
+#define OLD 1
+#import "Object.h"
+#import "Protocol.h"
+#import "objc-runtime.h"
+#import "objc-auto.h"
 
-OBJC_EXPORT id (*_cvtToId)(const char *);
-OBJC_EXPORT id (*_poseAs)();
+// hack
+extern void _objc_error(id, const char *, va_list);
 
 
 // Error Messages
 static const char
-       _errNoMem[] = "failed -- out of memory(%s, %u)",
-       _errReAllocNil[] = "reallocating nil object",
-       _errReAllocFreed[] = "reallocating freed object",
-       _errReAllocTooSmall[] = "(%s, %u) requested size too small",
        _errShouldHaveImp[] = "should have implemented the '%s' method.",
        _errShouldNotImp[] = "should NOT have implemented the '%s' method.",
        _errLeftUndone[] = "method '%s' not implemented",
@@ -67,14 +84,14 @@ static const char
 
 + poseAs: aFactory
 { 
-       return (*_poseAs)(self, aFactory); 
+       return class_poseAs(self, aFactory); 
 }
 
 + new
 {
        id newObject = (*_alloc)((Class)self, 0);
-       struct objc_class * metaClass = ((struct objc_class *) self)->isa;
-       if (metaClass->version > 1)
+       Class metaClass = self->isa;
+       if (class_getVersion(metaClass) > 1)
            return [newObject init];
        else
            return newObject;
@@ -97,17 +114,17 @@ static const char
 
 - (const char *)name
 {
-       return ((struct objc_class *)isa)->name
+       return class_getName(isa)
 }
 
 + (const char *)name
 {
-       return ((struct objc_class *)self)->name
+       return class_getName((Class)self)
 }
 
 - (unsigned)hash
 {
-       return ((uarith_t)self) >> 2;
+       return (unsigned)(((uintptr_t)self) >> 2);
 }
 
 - (BOOL)isEqual:anObject
@@ -148,31 +165,29 @@ static const char
 
 + superclass 
 { 
-       return ((struct objc_class *)self)->super_class
+       return class_getSuperclass((Class)self)
 }
 
 - superclass 
 { 
-       return ((struct objc_class *)isa)->super_class
+       return class_getSuperclass(isa)
 }
 
 + (int) version
 {
-       struct objc_class *     class = (struct objc_class *) self;
-       return class->version;
+       return class_getVersion((Class)self);
 }
 
 + setVersion: (int) aVersion
 {
-       struct objc_class *     class = (struct objc_class *) self;
-       class->version = aVersion;
+        class_setVersion((Class)self, aVersion);
        return self;
 }
 
 - (BOOL)isKindOf:aClass
 {
        register Class cls;
-       for (cls = isa; cls; cls = ((struct objc_class *)cls)->super_class
+       for (cls = isa; cls; cls = class_getSuperclass(cls)
                if (cls == (Class)aClass)
                        return YES;
        return NO;
@@ -186,15 +201,15 @@ static const char
 - (BOOL)isKindOfClassNamed:(const char *)aClassName
 {
        register Class cls;
-       for (cls = isa; cls; cls = ((struct objc_class *)cls)->super_class
-               if (strcmp(aClassName, ((struct objc_class *)cls)->name) == 0)
+       for (cls = isa; cls; cls = class_getSuperclass(cls)
+               if (strcmp(aClassName, class_getName(cls)) == 0)
                        return YES;
        return NO;
 }
 
 - (BOOL)isMemberOfClassNamed:(const char *)aClassName 
 {
-       return strcmp(aClassName, ((struct objc_class *)isa)->name) == 0;
+       return strcmp(aClassName, class_getName(isa)) == 0;
 }
 
 + (BOOL)instancesRespondTo:(SEL)aSelector 
@@ -227,292 +242,12 @@ static const char
        return class_lookupMethod(self, aSelector);
 }
 
-#if defined(__alpha__)
-#define MAX_RETSTRUCT_SIZE 256
-
-typedef struct _foolGCC {
-       char c[MAX_RETSTRUCT_SIZE];
-} _variableStruct;
-
-typedef _variableStruct (*callReturnsStruct)();
-
-OBJC_EXPORT long sizeOfReturnedStruct(char **);
-
-long sizeOfType(char **pp)
-{
-  char *p = *pp;
-  long stack_size = 0, n = 0;
-  switch(*p) {
-  case 'c':
-  case 'C':
-    stack_size += sizeof(char); // Alignment ?
-    break;
-  case 's':
-  case 'S':
-    stack_size += sizeof(short);// Alignment ?
-    break;
-  case 'i':
-  case 'I':
-  case '!':
-    stack_size += sizeof(int);
-    break;
-  case 'l':
-  case 'L':
-    stack_size += sizeof(long int);
-    break;
-  case 'f':
-    stack_size += sizeof(float);
-    break;
-  case 'd':
-    stack_size += sizeof(double);
-    break;
-  case '*':
-  case ':':
-  case '@':
-  case '%':
-    stack_size += sizeof(char*);
-    break;
-  case '{':
-    stack_size += sizeOfReturnedStruct(&p);
-    while(*p!='}') p++;
-    break;
-  case '[':
-    p++;
-    while(isdigit(*p))
-      n = 10 * n + (*p++ - '0');
-    stack_size += (n * sizeOfType(&p));
-    break;
-  default:
-    break;
-  }
-  *pp = p;
-  return stack_size;
-}
-
-long
-sizeOfReturnedStruct(char **pp)
-{
-  char *p = *pp;
-  long stack_size = 0, n = 0;
-  while(p!=NULL && *++p!='=') ; // skip the struct name
-  while(p!=NULL && *++p!='}')
-    stack_size += sizeOfType(&p);
-  return stack_size + 8;       // Add 8 as a 'forfait value'
-                               // to take alignment into account
-}
-
-- perform:(SEL)aSelector 
-{
-  char *p;
-  long stack_size;
-  _variableStruct *dummyRetVal;
-  Method       method;
-
-  if (aSelector) {
-    method = class_getInstanceMethod((Class)self->isa,
-                                    aSelector);
-    if(method==NULL)
-      method = class_getClassMethod((Class)self->isa,
-                                   aSelector);
-    if(method!=NULL) {
-      p = &method->method_types[0];
-      if(*p=='{') {
-       // Method returns a structure
-       stack_size = sizeOfReturnedStruct(&p);
-       if(stack_size<MAX_RETSTRUCT_SIZE)
-         {
-           //
-           // The MAX_RETSTRUCT_SIZE value allow us to support methods that
-           // return structures whose size is not grater than
-           // MAX_RETSTRUCT_SIZE.
-           // This is because the compiler allocates space on the stack
-           // for the size of the return structure, and when the method
-           // returns, the structure is copied on the space allocated
-           // on the stack: if the structure is greater than the space
-           // allocated... bang! (the stack is gone:-)
-           //
-           ((callReturnsStruct)objc_msgSend)(self, aSelector);
-         }
-       else
-         {
-           dummyRetVal  = (_variableStruct*) malloc(stack_size);
-
-           // Following asm code is equivalent to:
-           // *dummyRetVal=((callReturnsStruct)objc_msgSend)(self,aSelector);
-#if 0
-           asm("ldq $16,%0":"=g" (dummyRetVal):);
-           asm("ldq $17,%0":"=g" (self):);
-           asm("ldq $18,%0":"=g" (aSelector):);
-           asm("bis $31,1,$25");
-           asm("lda $27,objc_msgSend");
-           asm("jsr $26,($27),objc_msgSend");
-           asm("ldgp $29,0($26)");
-#else
-*dummyRetVal=((callReturnsStruct)objc_msgSend)(self,aSelector);
-#endif
-           free(dummyRetVal);
-         }
-       // When the method return a structure, we cannot return it here
-       // becuse we're not called in the right way, so we must return
-       // something else: wether it is self or NULL is a matter of taste.
-       return (id)NULL;
-      }
-    }
-    // We fall back here either because the method doesn't return
-    // a structure, or because method is NULL: in this latter
-    // case the call to msgSend will try to forward the message.
-    return objc_msgSend(self, aSelector);
-  }
-
-  // We fallback here only when aSelector is NULL
-  return [self error:_errBadSel, SELNAME(_cmd), aSelector];
-}
-
-- perform:(SEL)aSelector with:anObject 
-{
-  char *p;
-  long stack_size;
-  _variableStruct *dummyRetVal;
-  Method       method;
-
-  if (aSelector) {
-    method = class_getInstanceMethod((Class)self->isa,
-                                    aSelector);
-    if(method==NULL)
-      method = class_getClassMethod((Class)self->isa,
-                                   aSelector);
-    if(method!=NULL) {
-      p = &method->method_types[0];
-      if(*p=='{') {
-       // Method returns a structure
-       stack_size = sizeOfReturnedStruct(&p);
-       if(stack_size<MAX_RETSTRUCT_SIZE)
-         {
-           //
-           // The MAX_RETSTRUCT_SIZE value allow us to support methods that
-           // return structures whose size is not grater than
-           // MAX_RETSTRUCT_SIZE.
-           // This is because the compiler allocates space on the stack
-           // for the size of the return structure, and when the method
-           // returns, the structure is copied on the space allocated
-           // on the stack: if the structure is greater than the space
-           // allocated... bang! (the stack is gone:-)
-           //
-           ((callReturnsStruct)objc_msgSend)(self, aSelector, anObject);
-         }
-       else
-         {
-           dummyRetVal  = (_variableStruct*) malloc(stack_size);
-
-           // Following asm code is equivalent to:
-           // *dummyRetVal=((callReturnsStruct)objc_msgSend)(self,aSelector,anObject);
-#if 0
-           asm("ldq $16,%0":"=g" (dummyRetVal):);
-           asm("ldq $17,%0":"=g" (self):);
-           asm("ldq $18,%0":"=g" (aSelector):);
-           asm("ldq $19,%0":"=g" (anObject):);
-           asm("bis $31,1,$25");
-           asm("lda $27,objc_msgSend");
-           asm("jsr $26,($27),objc_msgSend");
-           asm("ldgp $29,0($26)");
-#else
- *dummyRetVal=((callReturnsStruct)objc_msgSend)(self,aSelector,anObject);
-#endif
-           free(dummyRetVal);
-         }
-       // When the method return a structure, we cannot return it here
-       // becuse we're not called in the right way, so we must return
-       // something else: wether it is self or NULL is a matter of taste.
-       return (id)NULL;
-      }
-    }
-    // We fall back here either because the method doesn't return
-    // a structure, or because method is NULL: in this latter
-    // case the call to msgSend will try to forward the message.
-    return objc_msgSend(self, aSelector, anObject);
-  }
-
-  // We fallback here only when aSelector is NULL
-  return [self error:_errBadSel, SELNAME(_cmd), aSelector];
-}
-
-- perform:(SEL)aSelector with:obj1 with:obj2 
-{
-  char *p;
-  long stack_size;
-  _variableStruct *dummyRetVal;
-  Method       method;
-
-  if (aSelector) {
-    method = class_getInstanceMethod((Class)self->isa,
-                                    aSelector);
-    if(method==NULL)
-      method = class_getClassMethod((Class)self->isa,
-                                   aSelector);
-    if(method!=NULL) {
-      p = &method->method_types[0];
-      if(*p=='{') {
-       // Method returns a structure
-       stack_size = sizeOfReturnedStruct(&p);
-       if(stack_size<MAX_RETSTRUCT_SIZE)
-         {
-           //
-           // The MAX_RETSTRUCT_SIZE value allow us to support methods that
-           // return structures whose size is not grater than
-           // MAX_RETSTRUCT_SIZE.
-           // This is because the compiler allocates space on the stack
-           // for the size of the return structure, and when the method
-           // returns, the structure is copied on the space allocated
-           // on the stack: if the structure is greater than the space
-           // allocated... bang! (the stack is gone:-)
-           //
-           ((callReturnsStruct)objc_msgSend)(self, aSelector, obj1, obj2);
-         }
-       else
-         {
-           dummyRetVal  = (_variableStruct*) malloc(stack_size);
-
-           // Following asm code is equivalent to:
-           // *dummyRetVal=((callReturnsStruct)objc_msgSend)(self,aSelector,obj1,obj2);
-
-#if 0
-           asm("ldq $16,%0":"=g" (dummyRetVal):);
-           asm("ldq $17,%0":"=g" (self):);
-           asm("ldq $18,%0":"=g" (aSelector):);
-           asm("ldq $19,%0":"=g" (obj1):);
-           asm("ldq $20,%0":"=g" (obj2):);
-           asm("bis $31,1,$25");
-           asm("lda $27,objc_msgSend");
-           asm("jsr $26,($27),objc_msgSend");
-           asm("ldgp $29,0($26)");
-#else
-*dummyRetVal=((callReturnsStruct)objc_msgSend)(self,aSelector,obj1,obj2);
-#endif
-           free(dummyRetVal);
-         }
-       // When the method return a structure, we cannot return it here
-       // becuse we're not called in the right way, so we must return
-       // something else: wether it is self or NULL is a matter of taste.
-       return (id)NULL;
-      }
-    }
-    // We fall back here either because the method doesn't return
-    // a structure, or because method is NULL: in this latter
-    // case the call to msgSend will try to forward the message.
-    return objc_msgSend(self, aSelector, obj1, obj2);
-  }
-
-  // We fallback here only when aSelector is NULL
-  return [self error:_errBadSel, SELNAME(_cmd), aSelector];
-
-}
-#else
 - perform:(SEL)aSelector 
 { 
        if (aSelector)
                return objc_msgSend(self, aSelector); 
        else
-               return [self error:_errBadSel, SELNAME(_cmd), aSelector];
+               return [self error:_errBadSel, sel_getName(_cmd), aSelector];
 }
 
 - perform:(SEL)aSelector with:anObject 
@@ -520,7 +255,7 @@ sizeOfReturnedStruct(char **pp)
        if (aSelector)
                return objc_msgSend(self, aSelector, anObject); 
        else
-               return [self error:_errBadSel, SELNAME(_cmd), aSelector];
+               return [self error:_errBadSel, sel_getName(_cmd), aSelector];
 }
 
 - perform:(SEL)aSelector with:obj1 with:obj2 
@@ -528,9 +263,8 @@ sizeOfReturnedStruct(char **pp)
        if (aSelector)
                return objc_msgSend(self, aSelector, obj1, obj2); 
        else
-               return [self error:_errBadSel, SELNAME(_cmd), aSelector];
+               return [self error:_errBadSel, sel_getName(_cmd), aSelector];
 }
-#endif
 
 - subclassResponsibility:(SEL)aSelector 
 {
@@ -545,7 +279,7 @@ sizeOfReturnedStruct(char **pp)
 - doesNotRecognize:(SEL)aMessage
 {
        return [self error:_errDoesntRecognize, 
-               ISMETA (isa) ? '+' : '-', SELNAME(aMessage)];
+               class_isMetaClass(isa) ? '+' : '-', sel_getName(aMessage)];
 }
 
 - error:(const char *)aCStr, ... 
@@ -586,112 +320,9 @@ sizeOfReturnedStruct(char **pp)
     return method_getSizeOfArguments(method);
 }
 
-#if defined(__alpha__)
-
-typedef struct {
-       unsigned long int i16;
-       unsigned long int i17;
-       unsigned long int i18;
-       unsigned long int i19;
-       unsigned long int i20;
-       unsigned long int i21;
-       unsigned long int i25;
-       unsigned long int f16;
-       unsigned long int f17;
-       unsigned long int f18;
-       unsigned long int f19;
-       unsigned long int f20;
-       unsigned long int f21;
-       unsigned long int sp;
- } *_m_args_p;
-
-- performv: (SEL) sel : (marg_list) args 
-{
-    char *             p;
-    long               stack_size;
-    Method             method;
-    unsigned long int  size;
-    char               scratchMem[MAX_RETSTRUCT_SIZE];
-    char *             scratchMemP;
-
-    // Messages to nil object always return nil
-    if (! self) return nil;
-
-    // Got to have a selector
-    if (!sel)
-        return [self error:_errBadSel, SELNAME(_cmd), sel];
-
-    // Handle a method which returns a structure and
-    // has been called as such
-    if (((_m_args_p)args)->i25){
-        // Calculate size of the marg_list from the method's
-        // signature.  This looks for the method in self
-        // and its superclasses.
-        size = [self methodArgSize: sel];
-
-        // If neither self nor its superclasses implement
-        // the method, forward the message because self
-        // might know someone who does.  This is a
-        // "chained" forward...
-        if (! size) return [self forward: sel: args];
-
-        // Message self with the specified selector and arguments
-        return objc_msgSendv (self, sel, size, args);
-    }
-
-    // Look for instance method in self's class and superclasses
-    method = class_getInstanceMethod((Class)self->isa,sel);
-
-    // Look for class method in self's class and superclass
-    if(method==NULL)
-        method = class_getClassMethod((Class)self->isa,sel);
-
-    // If neither self nor its superclasses implement
-    // the method, forward the message because self
-    // might know someone who does.  This is a
-    // "chained" forward...
-    if(method==NULL)
-        return [self forward: sel: args];
-
-    // Calculate size of the marg_list from the method's
-    // signature.
-    size = method_getSizeOfArguments(method);
-
-    // Ready to send message now if the return type
-    // is not a structure
-    p = &method->method_types[0];
-    if(*p!='{')
-        return objc_msgSendv(self, sel, size, args);
-
-    // Method returns a structure
-    stack_size = sizeOfReturnedStruct(&p);
-    if(stack_size>=MAX_RETSTRUCT_SIZE)
-        scratchMemP = (char*)malloc(stack_size);
-    else
-        scratchMemP = &scratchMem[0];
-
-    // Set i25 so objc_msgSendv will know that method returns a structure
-    ((_m_args_p)args)->i25 = 1;
-    
-    // Set first param of method to be called to safe return address
-    ((_m_args_p)args)->i16 = (unsigned long int) scratchMemP;
-    objc_msgSendv(self, sel, size, args);
-
-    if(stack_size>=MAX_RETSTRUCT_SIZE)
-      free(scratchMemP);
-
-    return (id)NULL;
- }
-#else
 - performv: (SEL) sel : (marg_list) args 
 {
     unsigned   size;
-#if hppa && 0
-    void *ret;
-   
-    // Save ret0 so methods that return a struct might work.
-    asm("copy %%r28, %0": "=r"(ret): );
-#endif hppa
 
     // Messages to nil object always return nil
     if (! self) return nil;
@@ -706,16 +337,9 @@ typedef struct {
     // someone who does.  This is a "chained" forward...
     if (! size) return [self forward: sel: args];
 
-#if hppa && 0
-    // Unfortunately, it looks like the compiler puts something else in
-    // r28 right after this instruction, so this is all for naught.
-    asm("copy %0, %%r28": : "r"(ret));
-#endif hppa
-
     // Message self with the specified selector and arguments
     return objc_msgSendv (self, sel, size, args); 
 }
-#endif
 
 /* Testing protocol conformance */
 
@@ -726,32 +350,10 @@ typedef struct {
 
 + (BOOL) conformsTo: (Protocol *)aProtocolObj
 {
-  struct objc_class * class;
-
-  for (class = self; class; class = class->super_class)
+  Class class;
+  for (class = self; class; class = class_getSuperclass(class))
     {
-      if (class->isa->version >= 3)
-        {
-         struct objc_protocol_list *protocols = class->protocols;
-
-         while (protocols)
-           {
-             int i;
-
-             for (i = 0; i < protocols->count; i++)
-               {
-                 Protocol *p = protocols->list[i];
-    
-                 if ([p conformsTo:aProtocolObj])
-                   return YES;
-               }
-
-             if (class->isa->version <= 4)
-               break;
-
-             protocols = protocols->next;
-           }
-       }
+      if (class_conformsToProtocol(class, aProtocolObj)) return YES;
     }
   return NO;
 }
@@ -761,7 +363,7 @@ typedef struct {
 
 - (struct objc_method_description *) descriptionForMethod:(SEL)aSelector
 {
-  struct objc_class * cls;
+  Class cls;
   struct objc_method_description *m;
 
   /* Look in the protocols first. */
@@ -779,7 +381,7 @@ typedef struct {
                {
                  Protocol *p = protocols->list[i];
 
-                 if (ISMETA (cls))
+                 if (class_isMetaClass(cls))
                    m = [p descriptionForClassMethod:aSelector];
                  else
                    m = [p descriptionForInstanceMethod:aSelector];
@@ -811,13 +413,12 @@ typedef struct {
                }
         }
     }
   return 0;
 }
 
 + (struct objc_method_description *) descriptionForInstanceMethod:(SEL)aSelector
 {
-  struct objc_class * cls;
+  Class cls;
 
   /* Look in the protocols first. */
   for (cls = self; cls; cls = cls->super_class)
@@ -861,7 +462,6 @@ typedef struct {
                }
         }
     }
-
   return 0;
 }
 
@@ -900,7 +500,7 @@ typedef struct {
 
 - findClass:(const char *)aClassName
 {
-       return (*_cvtToId)(aClassName);
+       return objc_lookUpClass(aClassName);
 }
 
 - shouldNotImplement:(SEL)aSelector
@@ -908,139 +508,7 @@ typedef struct {
        return [self error:_errShouldNotImp, sel_getName(aSelector)];
 }
 
-@end
-
-static id _internal_object_copyFromZone(Object *anObject, unsigned nBytes, void *z) 
-{
-       id obj;
-       register unsigned siz;
-
-       if (anObject == nil)
-               return nil;
-
-       obj = (*_zoneAlloc)(anObject->isa, nBytes, z);
-       siz = ((struct objc_class *)anObject->isa)->instance_size + nBytes;
-       bcopy((const char*)anObject, (char*)obj, siz);
-       return obj;
-}
-
-static id _internal_object_copy(Object *anObject, unsigned nBytes) 
-{
-    void *z= malloc_zone_from_ptr(anObject);
-    return _internal_object_copyFromZone(anObject, 
-                                        nBytes,
-                                        z ? z : malloc_default_zone());
-}
-
-static id _internal_object_dispose(Object *anObject) 
-{
-       if (anObject==nil) return nil;
-       object_cxxDestruct((id)anObject);
-       anObject->isa = _objc_getFreedObjectClass (); 
-       free(anObject);
-       return nil;
-}
-
-static id _internal_object_reallocFromZone(Object *anObject, unsigned nBytes, void *z) 
-{
-       Object *newObject; 
-       struct objc_class * tmp;
-
-       if (anObject == nil)
-               __objc_error(nil, _errReAllocNil, 0);
-
-       if (anObject->isa == _objc_getFreedObjectClass ())
-               __objc_error(anObject, _errReAllocFreed, 0);
-
-       if (nBytes < ((struct objc_class *)anObject->isa)->instance_size)
-               __objc_error(anObject, _errReAllocTooSmall, 
-                               object_getClassName(anObject), nBytes);
-
-       // Make sure not to modify space that has been declared free
-       tmp = anObject->isa; 
-       anObject->isa = _objc_getFreedObjectClass ();
-       newObject = (Object*)malloc_zone_realloc(z, (void*)anObject, (size_t)nBytes);
-       if (newObject) {
-               newObject->isa = tmp;
-               return newObject;
-       }
-       else
-            {
-               __objc_error(anObject, _errNoMem, 
-                               object_getClassName(anObject), nBytes);
-                return nil;
-            }
-}
-
-static id _internal_object_realloc(Object *anObject, unsigned nBytes) 
-{
-    void *z= malloc_zone_from_ptr(anObject);
-    return _internal_object_reallocFromZone(anObject,
-                                           nBytes,
-                                           z ? z : malloc_default_zone());
-}
-
-/* Functional Interface to system primitives */
-
-id object_copy(Object *anObject, unsigned nBytes) 
-{
-       return (*_copy)(anObject, nBytes); 
-}
-
-id object_copyFromZone(Object *anObject, unsigned nBytes, void *z) 
-{
-       return (*_zoneCopy)(anObject, nBytes, z); 
-}
-
-id object_dispose(Object *anObject) 
-{
-       return (*_dealloc)(anObject); 
-}
-
-id object_realloc(Object *anObject, unsigned nBytes) 
-{
-       return (*_realloc)(anObject, nBytes); 
-}
-
-id object_reallocFromZone(Object *anObject, unsigned nBytes, void *z) 
-{
-       return (*_zoneRealloc)(anObject, nBytes, z); 
-}
-
-Ivar object_setInstanceVariable(id obj, const char *name, void *value)
-{
-       Ivar ivar = 0;
-
-       if (obj && name) {
-               if ((ivar = class_getInstanceVariable(((Object*)obj)->isa, name))) {
-                       objc_assign_ivar((id)value, obj, ivar->ivar_offset);
-               }
-       }
-       return ivar;
-}
-
-Ivar object_getInstanceVariable(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);
-                      *value = *ivaridx;
-               } else
-                      *value = 0;
-       }
-       return ivar;
-}
 
+@end
 
-id (*_copy)(id, unsigned) = _internal_object_copy;
-id (*_realloc)(id, unsigned) = _internal_object_realloc;
-id (*_dealloc)(id) = _internal_object_dispose;
-id (*_cvtToId)(const char *) = objc_lookUpClass;
-SEL (*_cvtToSel)(const char *) = sel_getUid;
-void (*_error)() = (void(*)())_objc_error;
-id (*_zoneCopy)(id, unsigned, void *) = _internal_object_copyFromZone;
-id (*_zoneRealloc)(id, unsigned, void *) = _internal_object_reallocFromZone;
+#endif
index 489188b4f1ef470f63137815c7710daee1d0083e..71f57068c87b99d97b384f0859dcb5047bd29411 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
+ * Copyright (c) 1999-2002, 2005-2007 Apple Inc.  All Rights Reserved.
  * 
- * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
+ * @APPLE_LICENSE_HEADER_START@
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
 
 */
 
-#warning The API in this header is obsoleted by NSArray.
-
 #ifndef _OBJC_LIST_H_
 #define _OBJC_LIST_H_
 
+#if defined(__LP64__)
+
+#warning class List unavailable in 64-bit Objective-C
+
+#else
+
+#warning The API in this header is obsoleted by NSArray.
+
 #import <objc/Object.h>
+#import <AvailabilityMacros.h>
 
+DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER 
 @interface List : Object
 {
 @public
-    id                 *dataPtr;       /* data of the List object */
-    unsigned   numElements;    /* Actual number of elements */
-    unsigned   maxElements;    /* Total allocated elements */
+    id                 *dataPtr  DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER ;       /* data of the List object */
+    unsigned   numElements  DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER ;    /* Actual number of elements */
+    unsigned   maxElements  DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER ;    /* Total allocated elements */
 }
 
 /* Creating, freeing */
 
-- free;
-- freeObjects;
-- copyFromZone:(void *)z;
+- free  DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER;
+- freeObjects  DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER;
+- copyFromZone:(void *)z  DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER;
   
 /* Initializing */
 
-- init;
-- initCount:(unsigned)numSlots;
+- init  DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER;
+- initCount:(unsigned)numSlots  DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER;
 
 /* Comparing two lists */
 
-- (BOOL)isEqual: anObject;
+- (BOOL)isEqual: anObject  DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER;
   
 /* Managing the storage capacity */
 
-- (unsigned)capacity;
-- setAvailableCapacity:(unsigned)numSlots;
+- (unsigned)capacity  DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER;
+- setAvailableCapacity:(unsigned)numSlots  DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER;
 
 /* Manipulating objects by index */
 
-- (unsigned)count;
-- objectAt:(unsigned)index;
-- lastObject;
-- addObject:anObject;
-- insertObject:anObject at:(unsigned)index;
-- removeObjectAt:(unsigned)index;
-- removeLastObject;
-- replaceObjectAt:(unsigned)index with:newObject;
-- appendList: (List *)otherList;
+- (unsigned)count  DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER;
+- objectAt:(unsigned)index  DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER;
+- lastObject  DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER;
+- addObject:anObject  DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER;
+- insertObject:anObject at:(unsigned)index  DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER;
+- removeObjectAt:(unsigned)index  DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER;
+- removeLastObject  DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER;
+- replaceObjectAt:(unsigned)index with:newObject  DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER;
+- appendList: (List *)otherList  DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER;
 
 /* Manipulating objects by id */
 
-- (unsigned)indexOf:anObject;
-- addObjectIfAbsent:anObject;
-- removeObject:anObject;
-- replaceObject:anObject with:newObject;
+- (unsigned)indexOf:anObject  DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER;
+- addObjectIfAbsent:anObject  DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER;
+- removeObject:anObject  DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER;
+- replaceObject:anObject with:newObject  DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER;
 
 /* Emptying the list */
 
-- empty;
+- empty  DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER;
 
 /* Sending messages to elements of the list */
 
-- makeObjectsPerform:(SEL)aSelector;
-- makeObjectsPerform:(SEL)aSelector with:anObject;
+- makeObjectsPerform:(SEL)aSelector  DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER;
+- makeObjectsPerform:(SEL)aSelector with:anObject  DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER;
 
 /*
  * The following new... methods are now obsolete.  They remain in this 
  * and the init... methods defined in this class instead.
  */
 
-+ new;
-+ newCount:(unsigned)numSlots;
++ new  DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER;
++ newCount:(unsigned)numSlots  DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER;
 
 @end
 
 typedef struct {
     @defs(List)
-} NXListId;
+} NXListId  DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER;
 
 #define NX_ADDRESS(x) (((NXListId *)(x))->dataPtr)
 
 #define NX_NOT_IN_LIST 0xffffffff
 
+#endif
+
 #endif /* _OBJC_LIST_H_ */
index 79ac889d24327b1ea3484a244791c728d42d2aea..4ed5a016ae5197b5909dd479e257a840969820ca 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
+ * Copyright (c) 1999-2001, 2005-2006 Apple Inc.  All Rights Reserved.
  * 
- * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
+ * @APPLE_LICENSE_HEADER_START@
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
        Responsibility: Bertrand Serlet
 */
 
+#ifndef __LP64__
 
 #import <stdlib.h>
 #import <stdio.h>
 #import <string.h>
+
+#define OLD 1
 #import <objc/List.h>
 
 #define DATASIZE(count) ((count) * sizeof(id))
 }
 
 @end
+
+#endif
index b5e494335daef35f03e05574712f295d7d78cb57..5b1c56e550efbb6fdf8842c7ec0ea80491f92492 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
+ * Copyright (c) 1999-2003, 2006-2007 Apple Inc.  All Rights Reserved.
  * 
- * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
+ * @APPLE_LICENSE_HEADER_START@
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
 
 #import <objc/Object.h>
 
-struct objc_method_description {
-       SEL name;
-       char *types;
-};
-struct objc_method_description_list {
-        int count;
-        struct objc_method_description list[1];
-};
+/* Warning: All of these methods will disappear in 64-bit. */
 
 @interface Protocol : Object
 {
 @private
-       char *protocol_name;
-       struct objc_protocol_list *protocol_list;
-       struct objc_method_description_list *instance_methods, *class_methods;
+    char *protocol_name OBJC2_UNAVAILABLE;
+    struct objc_protocol_list *protocol_list OBJC2_UNAVAILABLE;
+    struct objc_method_description_list *instance_methods OBJC2_UNAVAILABLE;
+    struct objc_method_description_list *class_methods OBJC2_UNAVAILABLE;
 }
 
 /* Obtaining attributes intrinsic to the protocol */
 
-- (const char *)name;
+- (const char *)name OBJC2_UNAVAILABLE;
 
 /* Testing protocol conformance */
 
-- (BOOL) conformsTo: (Protocol *)aProtocolObject;
+- (BOOL) conformsTo: (Protocol *)aProtocolObject OBJC2_UNAVAILABLE;
 
 /* Looking up information specific to a protocol */
 
-- (struct objc_method_description *) descriptionForInstanceMethod:(SEL)aSel;
-- (struct objc_method_description *) descriptionForClassMethod:(SEL)aSel;
+- (struct objc_method_description *) descriptionForInstanceMethod:(SEL)aSel DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER;
+- (struct objc_method_description *) descriptionForClassMethod:(SEL)aSel DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER;
 
 @end
 
index d0c3cd9cdcf2d5682f9038fc86b93da7100b555b..4b6ab623b506a7a28dedeef14897cbad43ed59b2 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
+ * Copyright (c) 1999-2001, 2005-2007 Apple Inc.  All Rights Reserved.
  * 
- * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
+ * @APPLE_LICENSE_HEADER_START@
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
 */
 
 
-#include "objc-private.h"
-#import <objc/Protocol.h>
-
-#include <objc/objc-runtime.h>
 #include <stdlib.h>
-
+#include <string.h>
 #include <mach-o/dyld.h>
 #include <mach-o/ldsyms.h>
 
-/* some forward declarations */
-
-static struct objc_method_description *
-lookup_method(struct objc_method_description_list *mlist, SEL aSel);
+#define OLD 1
+#import "objc-private.h"
+#import "Protocol.h"
 
-static struct objc_method_description *
-lookup_class_method(struct objc_protocol_list *plist, SEL aSel);
 
-static struct objc_method_description *
-lookup_instance_method(struct objc_protocol_list *plist, SEL aSel);
+/* some forward declarations */
 
-@implementation Protocol 
+#if !__OBJC2__
+__private_extern__ struct objc_method_description * lookup_protocol_method(Protocol *proto, SEL aSel, BOOL isRequiredMethod, BOOL isInstanceMethod);
+#else
+__private_extern__ Method _protocol_getMethod(Protocol *p, SEL sel, BOOL isRequiredMethod, BOOL isInstanceMethod);
+#endif
 
 
-+ _fixup: (OBJC_PROTOCOL_PTR)protos numElements: (int) nentries
-{
-  int i;
-  for (i = 0; i < nentries; i++)
-    {
-      /* isa has been overloaded by the compiler to indicate version info */
-      protos[i] OBJC_PROTOCOL_DEREF isa = self;        // install the class descriptor.    
-    }
+@implementation Protocol 
 
-  return self;
-}
+#if __OBJC2__
+// fixme hack - make Protocol a non-lazy class
++ (void) load { } 
+#endif
 
-+ load
-{
-  OBJC_PROTOCOL_PTR p;
-  int size;
-  headerType **hp;
-  headerType **hdrs;
-  hdrs = _getObjcHeaders();
-
-  for (hp = hdrs; *hp; hp++) 
-    {
-      p = (OBJC_PROTOCOL_PTR)_getObjcProtocols((headerType*)*hp, &size);
-      if (p && size) { [self _fixup:p numElements: size]; }
-    }
-  free (hdrs);
 
-  return self;
-}
+typedef struct {
+    uintptr_t count;
+    Protocol *list[0];
+} protocol_list_t;
 
 - (BOOL) conformsTo: (Protocol *)aProtocolObj
 {
-  if (!aProtocolObj)
-    return NO;
-
-  if (strcmp(aProtocolObj->protocol_name, protocol_name) == 0)
-    return YES;
-  else if (protocol_list)
-    {
-    int i;
-    
-    for (i = 0; i < protocol_list->count; i++)
-      {
-      Protocol *p = protocol_list->list[i];
-
-      if (strcmp(aProtocolObj->protocol_name, p->protocol_name) == 0)
-        return YES;
-   
-      if ([p conformsTo:aProtocolObj])
-       return YES;
-      }
-    return NO;
-    }
-  else
-    return NO;
+    return protocol_conformsToProtocol(self, aProtocolObj);
 }
 
 - (struct objc_method_description *) descriptionForInstanceMethod:(SEL)aSel
 {
-   struct objc_method_description *m = lookup_method(instance_methods, aSel);
-
-   if (!m && protocol_list)
-     m = lookup_instance_method(protocol_list, aSel);
-
-   return m;
+#if !__OBJC2__
+    return lookup_protocol_method(self,aSel, YES/*required*/, YES/*instance*/);
+#else
+    return method_getDescription(_protocol_getMethod(self, aSel, YES, YES));
+#endif
 }
 
 - (struct objc_method_description *) descriptionForClassMethod:(SEL)aSel
 {
-   struct objc_method_description *m = lookup_method(class_methods, aSel);
-
-   if (!m && protocol_list)
-     m = lookup_class_method(protocol_list, aSel);
-
-   return m;
+#if !__OBJC2__
+    return lookup_protocol_method(self, aSel, YES/*required*/, NO/*instance*/);
+#else
+    return method_getDescription(_protocol_getMethod(self, aSel, YES, NO));
+#endif
 }
 
 - (const char *)name
 {
-  return protocol_name;
+    return protocol_getName(self);
 }
 
 - (BOOL)isEqual:other
 {
+#if __OBJC2__
+    // check isKindOf:
+    Class cls;
+    Class protoClass = objc_getClass("Protocol");
+    for (cls = other->isa; cls; cls = class_getSuperclass(cls)) {
+        if (cls == protoClass) break;
+    }
+    if (!cls) return NO;
+    // check equality
+    return protocol_isEqual(self, other);
+#else
     return [other isKindOf:[Protocol class]] && [self conformsTo: other] && [other conformsTo: self];
+#endif
 }
 
 - (unsigned int)hash
@@ -143,62 +108,4 @@ lookup_instance_method(struct objc_protocol_list *plist, SEL aSel);
     return 23;
 }
 
-static 
-struct objc_method_description *
-lookup_method(struct objc_method_description_list *mlist, SEL aSel)
-{
-   if (mlist)
-     {
-     int i;
-     for (i = 0; i < mlist->count; i++)
-       if (mlist->list[i].name == aSel)
-         return mlist->list+i;
-     }
-   return 0;
-}
-
-static 
-struct objc_method_description *
-lookup_instance_method(struct objc_protocol_list *plist, SEL aSel)
-{
-   int i;
-   struct objc_method_description *m = 0;
-
-   for (i = 0; i < plist->count; i++)
-     {
-     if (plist->list[i]->instance_methods)
-       m = lookup_method(plist->list[i]->instance_methods, aSel);
-   
-     /* depth first search */  
-     if (!m && plist->list[i]->protocol_list)
-       m = lookup_instance_method(plist->list[i]->protocol_list, aSel);
-
-     if (m)
-       return m;
-     }
-   return 0;
-}
-
-static 
-struct objc_method_description *
-lookup_class_method(struct objc_protocol_list *plist, SEL aSel)
-{
-   int i;
-   struct objc_method_description *m = 0;
-
-   for (i = 0; i < plist->count; i++)
-     {
-     if (plist->list[i]->class_methods)
-       m = lookup_method(plist->list[i]->class_methods, aSel);
-   
-     /* depth first search */  
-     if (!m && plist->list[i]->protocol_list)
-       m = lookup_class_method(plist->list[i]->protocol_list, aSel);
-
-     if (m)
-       return m;
-     }
-   return 0;
-}
-
 @end
index 6c979c37667620b7a4a916cdd4156a7b57e7d292..1b7dbdf3472437a63e7e163ac53319f7d100ddd9 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
+ * Copyright (c) 1999-2003, 2007 Apple Inc.  All Rights Reserved.
  * 
- * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
+ * @APPLE_LICENSE_HEADER_START@
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
     All rights reserved.
 */
 
+#if defined(__LP64__)
+
+// This header contains definitions for Libstreams, which will never be 64-bit.
+#warning objc/error.h is unavailable in 64-bit.
+
+#endif
+
 #warning The API in this header is obsoleted by NSException et al.
 
 #ifndef _OBJC_ERROR_H_
index 25d6e7971e68b065e3fb91b8a76f675a2f218a8e..fda0728087f7d024cfbb09c73a7507842c0cc99c 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
+ * Copyright (c) 1999-2006 Apple Inc.  All Rights Reserved.
  * 
- * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
+ * @APPLE_LICENSE_HEADER_START@
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
     Copyright 1989-1996 NeXT Software, Inc.
 */
 
-#warning The API in this header is obsoleted by NSHashtable.h
-
 #ifndef _OBJC_LITTLE_HASHTABLE_H_
 #define _OBJC_LITTLE_HASHTABLE_H_
 
+#ifndef _OBJC_PRIVATE_H_
+#warning The API in this header is obsoleted by NSHashtable.h
+#endif
+
 #import <objc/objc.h>
+#include <stdint.h>
 
 /*************************************************************************
  *     Hash tables of arbitrary data
@@ -44,7 +45,7 @@ The objective C class HashTable is preferred when dealing with (key, values) ass
 As well-behaved scalable data structures, hash tables double in size when they start becoming full, thus guaranteeing both average constant time access and linear size. */
 
 typedef struct {
-    uarith_t   (*hash)(const void *info, const void *data);
+    uintptr_t  (*hash)(const void *info, const void *data);
     int                (*isEqual)(const void *info, const void *data1, const void *data2);
     void       (*free)(const void *info, void *data);
     int                style; /* reserved for future expansion; currently 0 */
@@ -144,9 +145,9 @@ OBJC_EXPORT int NXNextHashState(NXHashTable *table, NXHashState *state, void **d
  *     and common prototypes
  *************************************************************************/
 
-OBJC_EXPORT uarith_t NXPtrHash(const void *info, const void *data);
+OBJC_EXPORT uintptr_t NXPtrHash(const void *info, const void *data);
     /* scrambles the address bits; info unused */
-OBJC_EXPORT uarith_t NXStrHash(const void *info, const void *data);
+OBJC_EXPORT uintptr_t NXStrHash(const void *info, const void *data);
     /* string hashing; info unused */
 OBJC_EXPORT int NXPtrIsEqual(const void *info, const void *data1, const void *data2);
     /* pointer comparison; info unused */
index 451455e350515c3fee4426debcdc73aa2bbd6299..d05b28eb3aaeb54ae4d8cee31a3a132ac3a0c652 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
+ * Copyright (c) 1999-2006 Apple Inc.  All Rights Reserved.
  * 
- * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
+ * @APPLE_LICENSE_HEADER_START@
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
        Created by Bertrand Serlet, Feb 89
  */
 
-#import <objc/hashtable2.h>
-#import "objc-private.h"
 
-/* Is this in the right spot ? <jf> */
-#if defined(__osf__)
-    #include <stdarg.h>
-#endif
+#include <mach/mach.h>
+#include <pthread.h>
 
-    #import <mach/mach.h>
-    #import <pthread.h>
+#import "objc-private.h"
+#import "hashtable2.h"
 
 /* In order to improve efficiency, buckets contain a pointer to an array or directly the data when the array size is 1 */
 typedef union {
@@ -58,7 +52,7 @@ typedef struct        {
  *     
  *************************************************************************/
 
-static unsigned log2 (unsigned x) { return (x<2) ? 0 : log2 (x>>1)+1; };
+static unsigned log2u (unsigned x) { return (x<2) ? 0 : log2u (x>>1)+1; };
 
 static unsigned exp2m1 (unsigned x) { return (1 << x) - 1; };
 
@@ -87,10 +81,10 @@ static int isEqualPrototype (const void *info, const void *data1, const void *da
     return (proto1->hash == proto2->hash) && (proto1->isEqual == proto2->isEqual) && (proto1->free == proto2->free) && (proto1->style == proto2->style);
     };
     
-static uarith_t hashPrototype (const void *info, const void *data) {
+static uintptr_t hashPrototype (const void *info, const void *data) {
     NXHashTablePrototype       *proto = (NXHashTablePrototype *) data;
     
-    return NXPtrHash(info, proto->hash) ^ NXPtrHash(info, proto->isEqual) ^ NXPtrHash(info, proto->free) ^ (uarith_t) proto->style;
+    return NXPtrHash(info, proto->hash) ^ NXPtrHash(info, proto->isEqual) ^ NXPtrHash(info, proto->free) ^ (uintptr_t) proto->style;
     };
 
 void NXNoEffectFree (const void *info, void *data) {};
@@ -138,7 +132,7 @@ NXHashTable *NXCreateHashTableFromZone (NXHashTablePrototype prototype, unsigned
     if (! prototype.isEqual) prototype.isEqual = NXPtrIsEqual;
     if (! prototype.free) prototype.free = NXNoEffectFree;
     if (prototype.style) {
-       _objc_syslog ("*** NXCreateHashTable: invalid style\n");
+       _objc_inform ("*** NXCreateHashTable: invalid style\n");
        return NULL;
        };
     proto = NXHashGet (prototypes, &prototype); 
@@ -150,12 +144,12 @@ NXHashTable *NXCreateHashTableFromZone (NXHashTablePrototype prototype, unsigned
        (void) NXHashInsert (prototypes, proto);
        proto = NXHashGet (prototypes, &prototype);
        if (! proto) {
-           _objc_syslog ("*** NXCreateHashTable: bug\n");
+           _objc_inform ("*** NXCreateHashTable: bug\n");
            return NULL;
            };
        };
     table->prototype = proto; table->count = 0; table->info = info;
-    table->nbBuckets = exp2m1 (log2 (capacity)+1);
+    table->nbBuckets = exp2m1 (log2u (capacity)+1);
     table->buckets = ALLOCBUCKETS(z, table->nbBuckets);
     return table;
     }
@@ -206,19 +200,6 @@ void NXResetHashTable (NXHashTable *table) {
     table->count = 0;
 }
 
-BOOL NXIsEqualHashTable (NXHashTable *table1, NXHashTable *table2) {
-    if (table1 == table2) return YES;
-    if (NXCountHashTable (table1) != NXCountHashTable (table2)) return NO;
-    else {
-       void            *data;
-       NXHashState     state = NXInitHashState (table1);
-       while (NXNextHashState (table1, &state, &data)) {
-           if (! NXHashMember (table2, data)) return NO;
-       }
-       return YES;
-    }
-}
-
 BOOL NXCompareHashTables (NXHashTable *table1, NXHashTable *table2) {
     if (table1 == table2) return YES;
     if (NXCountHashTable (table1) != NXCountHashTable (table2)) return NO;
@@ -311,7 +292,7 @@ __private_extern__ void _NXHashRehashToCapacity (NXHashTable *table, unsigned ne
        (void) NXHashInsert (table, aux);
     freeBuckets (old, NO);
     if (old->count != table->count)
-       _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");
+       _objc_inform("*** 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);
     }
@@ -482,24 +463,24 @@ int NXNextHashState (NXHashTable *table, NXHashState *state, void **data) {
  *     
  *************************************************************************/
 
-uarith_t NXPtrHash (const void *info, const void *data) {
-    return (((uarith_t) data) >> 16) ^ ((uarith_t) data);
+uintptr_t NXPtrHash (const void *info, const void *data) {
+    return (((uintptr_t) data) >> 16) ^ ((uintptr_t) data);
     };
     
-uarith_t NXStrHash (const void *info, const void *data) {
-    register uarith_t  hash = 0;
+uintptr_t NXStrHash (const void *info, const void *data) {
+    register uintptr_t hash = 0;
     register unsigned char     *s = (unsigned char *) data;
     /* unsigned to avoid a sign-extend */
     /* unroll the loop */
     if (s) for (; ; ) { 
        if (*s == '\0') break;
-       hash ^= (uarith_t) *s++;
+       hash ^= (uintptr_t) *s++;
        if (*s == '\0') break;
-       hash ^= (uarith_t) *s++ << 8;
+       hash ^= (uintptr_t) *s++ << 8;
        if (*s == '\0') break;
-       hash ^= (uarith_t) *s++ << 16;
+       hash ^= (uintptr_t) *s++ << 16;
        if (*s == '\0') break;
-       hash ^= (uarith_t) *s++ << 24;
+       hash ^= (uintptr_t) *s++ << 24;
        }
     return hash;
     };
@@ -517,7 +498,7 @@ void NXReallyFree (const void *info, void *data) {
     };
 
 /* All the following functions are really private, made non-static only for the benefit of shlibs */
-static uarith_t hashPtrStructKey (const void *info, const void *data) {
+static uintptr_t hashPtrStructKey (const void *info, const void *data) {
     return NXPtrHash(info, *((void **) data));
     };
 
@@ -525,7 +506,7 @@ static int isEqualPtrStructKey (const void *info, const void *data1, const void
     return NXPtrIsEqual (info, *((void **) data1), *((void **) data2));
     };
 
-static uarith_t hashStrStructKey (const void *info, const void *data) {
+static uintptr_t hashStrStructKey (const void *info, const void *data) {
     return NXStrHash(info, *((char **) data));
     };
 
@@ -564,11 +545,11 @@ static NXHashTable *uniqueStrings = NULL;
 static int accessUniqueString = 0;
 
 static char            *z = NULL;
-static vm_size_t       zSize = 0;
+static size_t  zSize = 0;
 static mutex_t         lock = (mutex_t)0;
 
 static const char *CopyIntoReadOnly (const char *str) {
-    unsigned int       len = strlen (str) + 1;
+    size_t     len = strlen (str) + 1;
     char       *new;
     
     if (len > CHUNK_SIZE/2) {  /* dont let big strings waste space */
@@ -608,7 +589,7 @@ NXAtom NXUniqueString (const char *buffer) {
     if (previous) return previous;
     previous = CopyIntoReadOnly (buffer);
     if (NXHashInsert (uniqueStrings, previous)) {
-       _objc_syslog ("*** NXUniqueString: invariant broken\n");
+       _objc_inform ("*** NXUniqueString: invariant broken\n");
        return NULL;
        };
     return previous;
diff --git a/runtime/lookupa.h b/runtime/lookupa.h
new file mode 100644 (file)
index 0000000..0b27db6
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+------------------------------------------------------------------------------
+By Bob Jenkins, September 1996.
+lookupa.h, a hash function for table lookup, same function as lookup.c.
+Use this code in any way you wish.  Public Domain.  It has no warranty.
+Source is http://burtleburtle.net/bob/c/lookupa.h
+------------------------------------------------------------------------------
+*/
+
+#ifndef STANDARD
+#include "standard.h"
+#endif
+
+#ifndef LOOKUPA
+#define LOOKUPA
+
+#define CHECKSTATE 8
+#define hashsize(n) ((ub4)1<<(n))
+#define hashmask(n) (hashsize(n)-1)
+
+ub4  lookup(/*_ ub1 *k, ub4 length, ub4 level _*/);
+void checksum(/*_ ub1 *k, ub4 length, ub4 *state _*/);
+
+#endif /* LOOKUPA */
diff --git a/runtime/lookupa.m b/runtime/lookupa.m
new file mode 100644 (file)
index 0000000..ae86708
--- /dev/null
@@ -0,0 +1,244 @@
+/*
+--------------------------------------------------------------------
+lookupa.c, by Bob Jenkins, December 1996.  Same as lookup2.c
+Use this code however you wish.  Public Domain.  No warranty.
+Source is http://burtleburtle.net/bob/c/lookupa.c
+--------------------------------------------------------------------
+*/
+#ifndef STANDARD
+#include "standard.h"
+#endif
+#ifndef LOOKUPA
+#include "lookupa.h"
+#endif
+
+/*
+--------------------------------------------------------------------
+mix -- mix 3 32-bit values reversibly.
+For every delta with one or two bit set, and the deltas of all three
+  high bits or all three low bits, whether the original value of a,b,c
+  is almost all zero or is uniformly distributed,
+* If mix() is run forward or backward, at least 32 bits in a,b,c
+  have at least 1/4 probability of changing.
+* If mix() is run forward, every bit of c will change between 1/3 and
+  2/3 of the time.  (Well, 22/100 and 78/100 for some 2-bit deltas.)
+mix() was built out of 36 single-cycle latency instructions in a 
+  structure that could supported 2x parallelism, like so:
+      a -= b; 
+      a -= c; x = (c>>13);
+      b -= c; a ^= x;
+      b -= a; x = (a<<8);
+      c -= a; b ^= x;
+      c -= b; x = (b>>13);
+      ...
+  Unfortunately, superscalar Pentiums and Sparcs can't take advantage 
+  of that parallelism.  They've also turned some of those single-cycle
+  latency instructions into multi-cycle latency instructions.  Still,
+  this is the fastest good hash I could find.  There were about 2^^68
+  to choose from.  I only looked at a billion or so.
+--------------------------------------------------------------------
+*/
+#define mix(a,b,c) \
+{ \
+  a -= b; a -= c; a ^= (c>>13); \
+  b -= c; b -= a; b ^= (a<<8); \
+  c -= a; c -= b; c ^= (b>>13); \
+  a -= b; a -= c; a ^= (c>>12);  \
+  b -= c; b -= a; b ^= (a<<16); \
+  c -= a; c -= b; c ^= (b>>5); \
+  a -= b; a -= c; a ^= (c>>3);  \
+  b -= c; b -= a; b ^= (a<<10); \
+  c -= a; c -= b; c ^= (b>>15); \
+}
+
+/*
+--------------------------------------------------------------------
+lookup() -- hash a variable-length key into a 32-bit value
+  k     : the key (the unaligned variable-length array of bytes)
+  len   : the length of the key, counting by bytes
+  level : can be any 4-byte value
+Returns a 32-bit value.  Every bit of the key affects every bit of
+the return value.  Every 1-bit and 2-bit delta achieves avalanche.
+About 6len+35 instructions.
+
+The best hash table sizes are powers of 2.  There is no need to do
+mod a prime (mod is sooo slow!).  If you need less than 32 bits,
+use a bitmask.  For example, if you need only 10 bits, do
+  h = (h & hashmask(10));
+In which case, the hash table should have hashsize(10) elements.
+
+If you are hashing n strings (ub1 **)k, do it like this:
+  for (i=0, h=0; i<n; ++i) h = lookup( k[i], len[i], h);
+
+By Bob Jenkins, 1996.  bob_jenkins@burtleburtle.net.  You may use this
+code any way you wish, private, educational, or commercial.
+
+See http://burtleburtle.net/bob/hash/evahash.html
+Use for hash table lookup, or anything where one collision in 2^32 is
+acceptable.  Do NOT use for cryptographic purposes.
+--------------------------------------------------------------------
+*/
+
+__private_extern__ ub4 lookup( k, length, level)
+register ub1 *k;        /* the key */
+register ub4  length;   /* the length of the key */
+register ub4  level;    /* the previous hash, or an arbitrary value */
+{
+   register ub4 a,b,c,len;
+
+   /* Set up the internal state */
+   len = length;
+   a = b = 0x9e3779b9;  /* the golden ratio; an arbitrary value */
+   c = level;           /* the previous hash value */
+
+   /*---------------------------------------- handle most of the key */
+   while (len >= 12)
+   {
+      a += (k[0] +((ub4)k[1]<<8) +((ub4)k[2]<<16) +((ub4)k[3]<<24));
+      b += (k[4] +((ub4)k[5]<<8) +((ub4)k[6]<<16) +((ub4)k[7]<<24));
+      c += (k[8] +((ub4)k[9]<<8) +((ub4)k[10]<<16)+((ub4)k[11]<<24));
+      mix(a,b,c);
+      k += 12; len -= 12;
+   }
+
+   /*------------------------------------- handle the last 11 bytes */
+   c += length;
+   switch(len)              /* all the case statements fall through */
+   {
+   case 11: c+=((ub4)k[10]<<24);
+   case 10: c+=((ub4)k[9]<<16);
+   case 9 : c+=((ub4)k[8]<<8);
+      /* the first byte of c is reserved for the length */
+   case 8 : b+=((ub4)k[7]<<24);
+   case 7 : b+=((ub4)k[6]<<16);
+   case 6 : b+=((ub4)k[5]<<8);
+   case 5 : b+=k[4];
+   case 4 : a+=((ub4)k[3]<<24);
+   case 3 : a+=((ub4)k[2]<<16);
+   case 2 : a+=((ub4)k[1]<<8);
+   case 1 : a+=k[0];
+     /* case 0: nothing left to add */
+   }
+   mix(a,b,c);
+   /*-------------------------------------------- report the result */
+   return c;
+}
+
+
+/*
+--------------------------------------------------------------------
+mixc -- mixc 8 4-bit values as quickly and thoroughly as possible.
+Repeating mix() three times achieves avalanche.
+Repeating mix() four times eliminates all funnels and all
+  characteristics stronger than 2^{-11}.
+--------------------------------------------------------------------
+*/
+#define mixc(a,b,c,d,e,f,g,h) \
+{ \
+   a^=b<<11; d+=a; b+=c; \
+   b^=c>>2;  e+=b; c+=d; \
+   c^=d<<8;  f+=c; d+=e; \
+   d^=e>>16; g+=d; e+=f; \
+   e^=f<<10; h+=e; f+=g; \
+   f^=g>>4;  a+=f; g+=h; \
+   g^=h<<8;  b+=g; h+=a; \
+   h^=a>>9;  c+=h; a+=b; \
+}
+
+/*
+--------------------------------------------------------------------
+checksum() -- hash a variable-length key into a 256-bit value
+  k     : the key (the unaligned variable-length array of bytes)
+  len   : the length of the key, counting by bytes
+  state : an array of CHECKSTATE 4-byte values (256 bits)
+The state is the checksum.  Every bit of the key affects every bit of
+the state.  There are no funnels.  About 112+6.875len instructions.
+
+If you are hashing n strings (ub1 **)k, do it like this:
+  for (i=0; i<8; ++i) state[i] = 0x9e3779b9;
+  for (i=0, h=0; i<n; ++i) checksum( k[i], len[i], state);
+
+(c) Bob Jenkins, 1996.  bob_jenkins@burtleburtle.net.  You may use this
+code any way you wish, private, educational, or commercial, as long
+as this whole comment accompanies it.
+
+See http://burtleburtle.net/bob/hash/evahash.html
+Use to detect changes between revisions of documents, assuming nobody
+is trying to cause collisions.  Do NOT use for cryptography.
+--------------------------------------------------------------------
+*/
+__private_extern__ void  checksum( k, len, state)
+register ub1 *k;
+register ub4  len;
+register ub4 *state;
+{
+   register ub4 a,b,c,d,e,f,g,h,length;
+
+   /* Use the length and level; add in the golden ratio. */
+   length = len;
+   a=state[0]; b=state[1]; c=state[2]; d=state[3];
+   e=state[4]; f=state[5]; g=state[6]; h=state[7];
+
+   /*---------------------------------------- handle most of the key */
+   while (len >= 32)
+   {
+      a += (k[0] +(k[1]<<8) +(k[2]<<16) +(k[3]<<24));
+      b += (k[4] +(k[5]<<8) +(k[6]<<16) +(k[7]<<24));
+      c += (k[8] +(k[9]<<8) +(k[10]<<16)+(k[11]<<24));
+      d += (k[12]+(k[13]<<8)+(k[14]<<16)+(k[15]<<24));
+      e += (k[16]+(k[17]<<8)+(k[18]<<16)+(k[19]<<24));
+      f += (k[20]+(k[21]<<8)+(k[22]<<16)+(k[23]<<24));
+      g += (k[24]+(k[25]<<8)+(k[26]<<16)+(k[27]<<24));
+      h += (k[28]+(k[29]<<8)+(k[30]<<16)+(k[31]<<24));
+      mixc(a,b,c,d,e,f,g,h);
+      mixc(a,b,c,d,e,f,g,h);
+      mixc(a,b,c,d,e,f,g,h);
+      mixc(a,b,c,d,e,f,g,h);
+      k += 32; len -= 32;
+   }
+
+   /*------------------------------------- handle the last 31 bytes */
+   h += length;
+   switch(len)
+   {
+   case 31: h+=(k[30]<<24);
+   case 30: h+=(k[29]<<16);
+   case 29: h+=(k[28]<<8);
+   case 28: g+=(k[27]<<24);
+   case 27: g+=(k[26]<<16);
+   case 26: g+=(k[25]<<8);
+   case 25: g+=k[24];
+   case 24: f+=(k[23]<<24);
+   case 23: f+=(k[22]<<16);
+   case 22: f+=(k[21]<<8);
+   case 21: f+=k[20];
+   case 20: e+=(k[19]<<24);
+   case 19: e+=(k[18]<<16);
+   case 18: e+=(k[17]<<8);
+   case 17: e+=k[16];
+   case 16: d+=(k[15]<<24);
+   case 15: d+=(k[14]<<16);
+   case 14: d+=(k[13]<<8);
+   case 13: d+=k[12];
+   case 12: c+=(k[11]<<24);
+   case 11: c+=(k[10]<<16);
+   case 10: c+=(k[9]<<8);
+   case 9 : c+=k[8];
+   case 8 : b+=(k[7]<<24);
+   case 7 : b+=(k[6]<<16);
+   case 6 : b+=(k[5]<<8);
+   case 5 : b+=k[4];
+   case 4 : a+=(k[3]<<24);
+   case 3 : a+=(k[2]<<16);
+   case 2 : a+=(k[1]<<8);
+   case 1 : a+=k[0];
+   }
+   mixc(a,b,c,d,e,f,g,h);
+   mixc(a,b,c,d,e,f,g,h);
+   mixc(a,b,c,d,e,f,g,h);
+   mixc(a,b,c,d,e,f,g,h);
+
+   /*-------------------------------------------- report the result */
+   state[0]=a; state[1]=b; state[2]=c; state[3]=d;
+   state[4]=e; state[5]=f; state[6]=g; state[7]=h;
+}
index 4bfdf57be1e86f47e7540562ff737f14d95db44f..b83cd946f83ae37536fd7896cb62f52418c4d9b5 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
+ * Copyright (c) 1999-2003, 2006-2007 Apple Inc.  All Rights Reserved.
  * 
- * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
+ * @APPLE_LICENSE_HEADER_START@
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
        Copyright 1990-1996 NeXT Software, Inc.
 */
 
-#warning the API in this header is obsolete
-
 #ifndef _OBJC_MAPTABLE_H_
 #define _OBJC_MAPTABLE_H_
 
+
+#ifndef _OBJC_PRIVATE_H_
+#warning the API in this header is obsolete
+#endif
+
 #import <objc/objc.h>
 
 /***************       Definitions             ***************/
@@ -124,7 +125,7 @@ OBJC_EXPORT const NXMapTablePrototype NXStrValueMapPrototype;
     /* hashing is string hashing;
       isEqual is strcmp;
       free is no-op. */
-OBJC_EXPORT const NXMapTablePrototype NXObjectMapPrototype;
+OBJC_EXPORT const NXMapTablePrototype NXObjectMapPrototype  OBJC2_UNAVAILABLE;
     /* for objects; uses methods: hash, isEqual:, free, all for key. */
 
 #endif /* _OBJC_MAPTABLE_H_ */
index 1cdaa724fd8be5d662d5c4c1b5d43869322fa531..4437df53481b24908788ae71521d5e87f0298b87 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
+ * Copyright (c) 1999-2003, 2005-2007 Apple Inc.  All Rights Reserved.
  * 
- * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
+ * @APPLE_LICENSE_HEADER_START@
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
  */
 
 
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+
 #import "objc-private.h"
 #import "maptable.h"
-
-#import <string.h>
-#import <stdlib.h>
-#import <stdio.h>
-#import <objc/Object.h>
-#import <objc/hashtable2.h>
+#import "Object.h"
+#import "hashtable2.h"
 
 
 /******                Macros and utilities    ****************************/
@@ -51,7 +49,7 @@ typedef struct _MapPair {
     const void *value;
 } MapPair;
 
-static unsigned log2(unsigned x) { return (x<2) ? 0 : log2(x>>1)+1; };
+static unsigned log2u(unsigned x) { return (x<2) ? 0 : log2u(x>>1)+1; };
 
 static INLINE unsigned exp2m1(unsigned x) { return (1 << x) - 1; };
 
@@ -86,10 +84,10 @@ static int isEqualPrototype (const void *info, const void *data1, const void *da
     return (proto1->hash == proto2->hash) && (proto1->isEqual == proto2->isEqual) && (proto1->free == proto2->free) && (proto1->style == proto2->style);
     };
 
-static uarith_t hashPrototype (const void *info, const void *data) {
+static uintptr_t hashPrototype (const void *info, const void *data) {
     NXHashTablePrototype        *proto = (NXHashTablePrototype *) data;
 
-    return NXPtrHash(info, proto->hash) ^ NXPtrHash(info, proto->isEqual) ^ NXPtrHash(info, proto->free) ^ (uarith_t) proto->style;
+    return NXPtrHash(info, proto->hash) ^ NXPtrHash(info, proto->isEqual) ^ NXPtrHash(info, proto->free) ^ (uintptr_t) proto->style;
     };
 
 static NXHashTablePrototype protoPrototype = {
@@ -106,7 +104,7 @@ NXMapTable *NXCreateMapTableFromZone(NXMapTablePrototype prototype, unsigned cap
     NXMapTablePrototype                *proto;
     if (! prototypes) prototypes = NXCreateHashTable(protoPrototype, 0, NULL);
     if (! prototype.hash || ! prototype.isEqual || ! prototype.free || prototype.style) {
-       _objc_syslog("*** NXCreateMapTable: invalid creation parameters\n");
+       _objc_inform("*** NXCreateMapTable: invalid creation parameters\n");
        return NULL;
     }
     proto = NXHashGet(prototypes, &prototype); 
@@ -116,7 +114,7 @@ NXMapTable *NXCreateMapTableFromZone(NXMapTablePrototype prototype, unsigned cap
        (void)NXHashInsert(prototypes, proto);
     }
     table->prototype = proto; table->count = 0;
-    table->nbBuckets = exp2m1(log2(capacity)+1);
+    table->nbBuckets = exp2m1(log2u(capacity)+1);
     table->buckets = allocBuckets(z, table->nbBuckets);
     return table;
 }
@@ -219,7 +217,7 @@ static void _NXMapRehash(NXMapTable *table) {
        pair++;
     }
     if (oldCount != table->count)
-       _objc_syslog("*** maptable: 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");
+       _objc_inform("*** maptable: 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(pairs); 
 }
 
@@ -232,7 +230,7 @@ void *NXMapInsert(NXMapTable *table, const void *key, const void *value) {
     unsigned   index = bucketOf(table, key);
     MapPair    *pair = pairs + index;
     if (key == NX_MAPNOTAKEY) {
-       _objc_syslog("*** NXMapInsert: invalid key: -1\n");
+       _objc_inform("*** NXMapInsert: invalid key: -1\n");
        return NULL;
     }
     mapInsert ++;
@@ -282,7 +280,7 @@ void *NXMapInsert(NXMapTable *table, const void *key, const void *value) {
            }
        }
        /* no room: can't happen! */
-       _objc_syslog("**** NXMapInsert: bug\n");
+       _objc_inform("**** NXMapInsert: bug\n");
        return NULL;
     }
 }
@@ -310,7 +308,7 @@ void *NXMapRemove(NXMapTable *table, const void *key) {
        }
     }
     if (! found) return NULL;
-    if (found != 1) _objc_syslog("**** NXMapRemove: incorrect table\n");
+    if (found != 1) _objc_inform("**** NXMapRemove: incorrect table\n");
     /* remove then reinsert */
     {
        MapPair buffer[16];
@@ -325,7 +323,7 @@ void *NXMapRemove(NXMapTable *table, const void *key) {
            index2 = nextIndex(table, index2);
        }
        table->count -= chain;
-       if (auxnb != chain-1) _objc_syslog("**** NXMapRemove: bug\n");
+       if (auxnb != chain-1) _objc_inform("**** NXMapRemove: bug\n");
        while (auxnb--) NXMapInsert(table, aux[auxnb].key, aux[auxnb].value);
        if (chain > 16) free(aux);
     }
@@ -350,10 +348,53 @@ int NXNextMapState(NXMapTable *table, NXMapState *state, const void **key, const
     return NO;
 }
 
+
+/***********************************************************************
+* NXMapKeyCopyingInsert
+* Like NXMapInsert, but strdups the key if necessary.
+* Used to prevent stale pointers when bundles are unloaded.
+**********************************************************************/
+__private_extern__ 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.
+**********************************************************************/
+__private_extern__ 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;
+    }
+}
+
+
 /****          Conveniences            *************************************/
 
 static unsigned _mapPtrHash(NXMapTable *table, const void *key) {
-    return (((uarith_t) key) >> ARITH_SHIFT) ^ ((uarith_t) key);
+    return (unsigned)((((uintptr_t) key) >> (sizeof(uintptr_t)/2*8)) ^ ((uintptr_t) key));
 }
     
 static unsigned _mapStrHash(NXMapTable *table, const void *key) {
@@ -374,10 +415,6 @@ static unsigned _mapStrHash(NXMapTable *table, const void *key) {
     return hash;
 }
     
-static unsigned _mapObjectHash(NXMapTable *table, const void *key) {
-    return [(id)key hash];
-}
-    
 static int _mapPtrIsEqual(NXMapTable *table, const void *key1, const void *key2) {
     return key1 == key2;
 }
@@ -390,16 +427,8 @@ static int _mapStrIsEqual(NXMapTable *table, const void *key1, const void *key2)
     return (strcmp((char *) key1, (char *) key2)) ? NO : YES;
 }
     
-static int _mapObjectIsEqual(NXMapTable *table, const void *key1, const void *key2) {
-    return [(id)key1 isEqual:(id)key2];
-}
-    
 static void _mapNoFree(NXMapTable *table, void *key, void *value) {}
 
-static void _mapObjectFree(NXMapTable *table, void *key, void *value) {
-    [(id)key free];
-}
-
 const NXMapTablePrototype NXPtrValueMapPrototype = {
     _mapPtrHash, _mapPtrIsEqual, _mapNoFree, 0
 };
@@ -408,7 +437,24 @@ const NXMapTablePrototype NXStrValueMapPrototype = {
     _mapStrHash, _mapStrIsEqual, _mapNoFree, 0
 };
 
+
+#if !__LP64__
+
+/* This only works with class Object, which is unavailable in 64-bit. */
+static unsigned _mapObjectHash(NXMapTable *table, const void *key) {
+    return [(id)key hash];
+}
+    
+static int _mapObjectIsEqual(NXMapTable *table, const void *key1, const void *key2) {
+    return [(id)key1 isEqual:(id)key2];
+}
+
+static void _mapObjectFree(NXMapTable *table, void *key, void *value) {
+    [(id)key free];
+}
+
 const NXMapTablePrototype NXObjectMapPrototype = {
     _mapObjectHash, _mapObjectIsEqual, _mapObjectFree, 0
 };
 
+#endif
diff --git a/runtime/message.h b/runtime/message.h
new file mode 100644 (file)
index 0000000..b18ad0f
--- /dev/null
@@ -0,0 +1,173 @@
+/*
+ * Copyright (c) 1999-2007 Apple Inc.  All Rights Reserved.
+ * 
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * 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/objc.h>
+#import <objc/runtime.h>
+
+
+struct objc_super {
+    id receiver;
+#if !defined(__cplusplus)  &&  !__OBJC2__
+    Class class;  /* For compatibility with old objc-runtime.h header */
+#else
+    Class super_class;
+#endif
+    /* super_class is the first class to search */
+};
+
+
+/* Basic Messaging Primitives
+ *
+ * On some architectures, use objc_msgSend_stret for some struct return types.
+ * On some architectures, use objc_msgSend_fpret for some float return types.
+ *
+ * These functions must be cast to an appropriate function pointer type 
+ * before being called. 
+ */
+OBJC_EXPORT id objc_msgSend(id self, SEL op, ...);
+OBJC_EXPORT id objc_msgSendSuper(struct objc_super *super, SEL op, ...);
+
+
+/* Struct-returning Messaging Primitives
+ *
+ * Use these functions to call methods that return structs on the stack. 
+ * On some architectures, some structures are returned in registers. 
+ * Consult your local function call ABI documentation for details.
+ * 
+ * These functions must be cast to an appropriate function pointer type 
+ * before being called. 
+ */
+#if defined(__OBJC2__)
+OBJC_EXPORT void objc_msgSend_stret(id self, SEL op, ...);
+OBJC_EXPORT void objc_msgSendSuper_stret(struct objc_super *super, SEL op, ...);
+#elif defined(__cplusplus)
+/* For compatibility with old objc-runtime.h header */
+OBJC_EXPORT id objc_msgSend_stret(id self, SEL op, ...);
+OBJC_EXPORT id objc_msgSendSuper_stret(struct objc_super *super, SEL op, ...);
+#else
+/* For compatibility with old objc-runtime.h header */
+OBJC_EXPORT void objc_msgSend_stret(void * stretAddr, id self, SEL op, ...);
+OBJC_EXPORT void objc_msgSendSuper_stret(void * stretAddr, struct objc_super *super, SEL op, ...);
+#endif
+
+
+/* Floating-point-returning Messaging Primitives
+ * 
+ * Use these functions to call methods that return floating-point values 
+ * on the stack. 
+ * Consult your local function call ABI documentation for details.
+ * 
+ * ppc:    objc_msgSend_fpret not used
+ * ppc64:  objc_msgSend_fpret not used
+ * i386:   objc_msgSend_fpret used for `float`, `double`, `long double`.
+ * x86-64: objc_msgSend_fpret used for `long double`.
+ *
+ * These functions must be cast to an appropriate function pointer type 
+ * before being called. 
+ */
+#if defined(__i386__)
+OBJC_EXPORT double objc_msgSend_fpret(id self, SEL op, ...);
+/* Use objc_msgSendSuper() for fp-returning messages to super. */
+/* See also objc_msgSendv_fpret() below. */
+#elif defined(__x86_64__)
+OBJC_EXPORT long double objc_msgSend_fpret(id self, SEL op, ...);
+/* Use objc_msgSendSuper() for fp-returning messages to super. */
+/* See also objc_msgSendv_fpret() below. */
+#endif
+
+
+/* Direct Method Invocation Primitives
+ * Use these functions to call the implementation of a given Method.
+ * This is faster than calling method_getImplementation() and method_getName().
+ *
+ * The receiver must not be nil.
+ *
+ * These functions must be cast to an appropriate function pointer type 
+ * before being called. 
+ */
+OBJC_EXPORT id method_invoke(id receiver, Method m, ...) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT void method_invoke_stret(id receiver, Method m, ...) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+
+/* Variable-argument Messaging Primitives
+ *
+ * Use these functions to call methods with a list of arguments, such 
+ * as the one passed to forward:: .
+ *
+ * The contents of the argument list are architecture-specific. 
+ * Consult your local function call ABI documentation for details.
+ * 
+ * These functions must be cast to an appropriate function pointer type 
+ * before being called, except for objc_msgSendv_stret() which must not 
+ * be cast to a struct-returning type.
+ */
+
+typedef void* marg_list;
+
+OBJC_EXPORT id objc_msgSendv(id self, SEL op, size_t arg_size, marg_list arg_frame) OBJC2_UNAVAILABLE;
+OBJC_EXPORT void objc_msgSendv_stret(void *stretAddr, id self, SEL op, size_t arg_size, marg_list arg_frame) OBJC2_UNAVAILABLE;
+/* Note that objc_msgSendv_stret() does not return a structure type, 
+ * and should not be cast to do so. This is unlike objc_msgSend_stret() 
+ * and objc_msgSendSuper_stret().
+ */
+#if defined(__i386__)
+OBJC_EXPORT double objc_msgSendv_fpret(id self, SEL op, unsigned arg_size, marg_list arg_frame) OBJC2_UNAVAILABLE;
+#endif
+
+
+/* The following marg_list macros are of marginal utility. They
+ * are included for compatibility with the old objc-class.h header. */
+
+#if !__OBJC2__
+
+#if defined(__ppc__) || defined(ppc)
+#define marg_prearg_size       (13*sizeof(double)+6*sizeof(uintptr_t))
+#else
+#define marg_prearg_size       0
+#endif
+
+#define marg_malloc(margs, method) \
+       do { \
+               margs = (marg_list *)malloc (marg_prearg_size + ((7 + method_getSizeOfArguments(method)) & ~7)); \
+       } while (0)
+
+#define marg_free(margs) \
+       do { \
+               free(margs); \
+       } while (0)
+       
+#define marg_adjustedOffset(method, offset) \
+       (marg_prearg_size + offset)
+
+#define marg_getRef(margs, offset, type) \
+       ( (type *)((char *)margs + marg_adjustedOffset(method,offset) ) )
+
+#define marg_getValue(margs, offset, type) \
+       ( *marg_getRef(margs, offset, type) )
+
+#define marg_setValue(margs, offset, type, value) \
+       ( marg_getValue(margs, offset, type) = (value) )
+
+#endif
index 26401dc9407377295575d23df62b15cdeb18c047..5acebfe0ecd66a228d64cdd4f79a87c8f9fd7e2c 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
+ * Copyright (c) 1999-2006 Apple Inc.  All Rights Reserved.
  * 
- * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
+ * @APPLE_LICENSE_HEADER_START@
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
  */
 // Copyright 1988-1996 NeXT Software, Inc.
 
+#ifndef _OBJC_OBJC_API_H_
+#define _OBJC_OBJC_API_H_
 
-#if !defined(OBJC_EXPORT)
-#if defined(__cplusplus)
-#   define OBJC_EXPORT extern "C" 
-#else
-#   define OBJC_EXPORT extern
+#include <AvailabilityMacros.h>
+
+/*
+ * OBJC_API_VERSION 0 or undef: Tiger and earlier API only
+ * OBJC_API_VERSION 2: Leopard and later API available
+ */
+#if !defined(OBJC_API_VERSION)
+#   if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
+#       define OBJC_API_VERSION 0
+#   else
+#       define OBJC_API_VERSION 2
+#   endif
 #endif
+
+/* OBJC2_UNAVAILABLE: unavailable in objc 2.0, deprecated in Leopard */
+#if !defined(OBJC2_UNAVAILABLE)
+#   if __OBJC2__
+#       define OBJC2_UNAVAILABLE UNAVAILABLE_ATTRIBUTE
+#   else
+#       define OBJC2_UNAVAILABLE DEPRECATED_IN_MAC_OS_X_VERSION_10_5_AND_LATER
+#   endif
+#endif
+
+#if !defined(OBJC_EXPORT)
+#   if defined(__cplusplus)
+#       define OBJC_EXPORT extern "C" 
+#   else
+#       define OBJC_EXPORT extern
+#   endif
 #endif
 
 #if !defined(OBJC_IMPORT)
 #   define OBJC_IMPORT extern
 #endif
 
-
+#endif
index 4c28c0bb13bf0cdbf6a559d4adb755c95a8d54a9..002019b58c11f51846ee5a2c758d454801dc6d79 100644 (file)
@@ -1,10 +1,8 @@
 /*
- * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2004-2007 Apple 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
  * 
  * @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>
+#include <stddef.h>
+#include <stdint.h>
+#include <AvailabilityMacros.h>
 
 /* Collection utilities */
 
 enum {
-    OBJC_GENERATIONAL = (1 << 0)
+    // choose one
+    OBJC_RATIO_COLLECTION        = (0 << 0),  // run "ratio" generational collections, then a full
+    OBJC_GENERATIONAL_COLLECTION = (1 << 0),  // run fast incremental collection
+    OBJC_FULL_COLLECTION         = (2 << 0),  // run full collection.
+    OBJC_EXHAUSTIVE_COLLECTION   = (3 << 0),  // run full collections until memory available stops improving
+    
+    OBJC_COLLECT_IF_NEEDED       = (1 << 3), // run collection only if needed (allocation threshold exceeded)
+    OBJC_WAIT_UNTIL_DONE         = (1 << 4), // wait (when possible) for collection to end before returning (when collector is running on dedicated thread)
 };
 
-OBJC_EXPORT void objc_collect_if_needed(unsigned long options);
-OBJC_EXPORT unsigned int objc_numberAllocated(void);
-OBJC_EXPORT BOOL objc_collecting_enabled(void);
+OBJC_EXPORT void objc_collect(unsigned long options);
+OBJC_EXPORT BOOL objc_collectingEnabled(void);
 
-/* Memory management */
-OBJC_EXPORT id objc_allocate_object(Class cls, int extra);
 
-/* Write barriers */
+/* GC configuration */
+
+/* Tells collector to wait until specified bytes have been allocated before trying to collect again. */
+OBJC_EXPORT void objc_setCollectionThreshold(size_t threshold);
+
+/* Tells collector to run a full collection for every ratio generational collections. */
+OBJC_EXPORT void objc_setCollectionRatio(size_t ratio);
+
+/* Tells collector to start collecting on dedicated thread */
+OBJC_EXPORT void objc_startCollectorThread(void);
+
+
+// atomic update of a global variable
+OBJC_EXPORT BOOL objc_atomicCompareAndSwapGlobal(id predicate, id replacement, volatile id *objectLocation);
+OBJC_EXPORT BOOL objc_atomicCompareAndSwapGlobalBarrier(id predicate, id replacement, volatile id *objectLocation);
+// atomic update of an instance variable
+OBJC_EXPORT BOOL objc_atomicCompareAndSwapInstanceVariable(id predicate, id replacement, volatile id *objectLocation);
+OBJC_EXPORT BOOL objc_atomicCompareAndSwapInstanceVariableBarrier(id predicate, id replacement, volatile id *objectLocation);
+
+/* Write barriers.  Used by the compiler.  */
 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 id objc_assign_ivar(id value, id dest, ptrdiff_t offset);
 OBJC_EXPORT void *objc_memmove_collectable(void *dst, const void *src, size_t size);
 
-/* Testing tools */
+OBJC_EXPORT id objc_read_weak(id *location);
+OBJC_EXPORT id objc_assign_weak(id value, id *location);
+
+
+//
+// SPI. The following routines are available as debugging and transitional aides.
+//
+
+/* Tells runtime to issue finalize calls on the main thread only. */
+OBJC_EXPORT void objc_finalizeOnMainThread(Class cls)
+    AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER_BUT_DEPRECATED;
+
+
+/* ask if object is scheduled for finalization.  Safe only when called from within a finalizer.  */
 OBJC_EXPORT BOOL objc_is_finalized(void *ptr);
 
+enum {
+    OBJC_CLEAR_RESIDENT_STACK = (1 << 0)
+};
+
+/* Stack management */
+OBJC_EXPORT void objc_clear_stack(unsigned long options);
+
+//
+// Obsolete.  Present only until all uses can be migrated to newer API.
+//
+
+OBJC_EXPORT BOOL objc_collecting_enabled(void);
+OBJC_EXPORT void objc_set_collection_threshold(size_t threshold);
+OBJC_EXPORT void objc_set_collection_ratio(size_t ratio);
+OBJC_EXPORT void objc_start_collector_thread(void);
+
+/* Memory management */
+OBJC_EXPORT id objc_allocate_object(Class cls, int extra);
+
+enum {
+    OBJC_GENERATIONAL = (1 << 0)
+};
+
+OBJC_EXPORT void objc_collect_if_needed(unsigned long options);
 
 #endif
index d0d08a89bd5a70cb410c300cc57194c1b31b75c6..0f138b5af4d9cf00d5bcff712f7dde977000619d 100644 (file)
@@ -1,10 +1,8 @@
 /*
- * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2004-2007 Apple 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
  * 
  * @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 <sys/types.h>
+#import <sys/mman.h>
+#import <libkern/OSAtomic.h>
 
+#define OLD 1
 #import "objc-private.h"
+#import "auto_zone.h"
+#import "objc-auto.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 BOOL MultiThreadedGC = NO;
+static BOOL WantsMainThreadFinalization = NO;
+static BOOL NeedsMainThreadFinalization = NO;
 
-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
-**********************************************************************/
+static struct {
+    auto_zone_foreach_object_t foreach;
+    auto_zone_cursor_t cursor;
+    size_t cursor_size;
+    volatile BOOL finished;
+    volatile BOOL started;
+    pthread_mutex_t mutex;
+    pthread_cond_t condition;
+} BatchFinalizeBlock;
 
-#define ISAUTOOBJECT(x) (auto_zone_is_valid_pointer(gc_zone, (x)))
 
+__private_extern__ auto_zone_t *gc_zone = NULL;
 
-// 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;
-}
+// Pointer magic to make dyld happy. See notes in objc-private.h
+__private_extern__ id (*objc_assign_ivar_internal)(id, id, ptrdiff_t) = objc_assign_ivar;
 
 
 /***********************************************************************
@@ -207,69 +69,128 @@ static boolean_t objc_never_collect(auto_zone_t *zone, const auto_statistics_t *
 * Called by various libraries.
 **********************************************************************/
 
-void objc_collect(void) 
-{
+OBJC_EXPORT void objc_set_collection_threshold(size_t threshold) { // Old naming
     if (UseGC) {
-        auto_collect(gc_zone, AUTO_COLLECTION_FULL_COLLECTION, NULL);
+        auto_collection_parameters(gc_zone)->collection_threshold = threshold;
     }
 }
 
-void objc_collect_if_needed(unsigned long options) {
+OBJC_EXPORT void objc_setCollectionThreshold(size_t threshold) {
     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;
-        }
+        auto_collection_parameters(gc_zone)->collection_threshold = threshold;
     }
 }
 
-void objc_collect_generation(void) 
-{
+void objc_setCollectionRatio(size_t ratio) {
+    if (UseGC) {
+        auto_collection_parameters(gc_zone)->full_vs_gen_frequency = ratio;
+    }
+}
+
+void objc_set_collection_ratio(size_t ratio) {  // old naming
     if (UseGC) {
-        auto_collect(gc_zone, AUTO_COLLECTION_GENERATIONAL_COLLECTION, NULL);
+        auto_collection_parameters(gc_zone)->full_vs_gen_frequency = ratio;
     }
 }
 
+void objc_finalizeOnMainThread(Class cls) {
+    if (UseGC) {
+        WantsMainThreadFinalization = YES;
+        _class_setFinalizeOnMainThread(cls);
+    }
+}
 
-unsigned int objc_numberAllocated(void) 
-{
-    const auto_statistics_t *stats = auto_collection_statistics(gc_zone);
-    return stats->blocks_in_use;
+
+void objc_startCollectorThread(void) {
+    static int didOnce = 0;
+    if (!didOnce) {
+        didOnce = 1;
+        
+        // pretend we're done to start out with.
+        BatchFinalizeBlock.started = YES;
+        BatchFinalizeBlock.finished = YES;
+        pthread_mutex_init(&BatchFinalizeBlock.mutex, NULL);
+        pthread_cond_init(&BatchFinalizeBlock.condition, NULL);
+        auto_collect_multithreaded(gc_zone);
+        MultiThreadedGC = YES;
+    }
+}
+
+void objc_start_collector_thread(void) {
+    objc_startCollectorThread();
+}
+
+static void batchFinalizeOnMainThread(void);
+
+void objc_collect(unsigned long options) {
+    if (!UseGC) return;
+    BOOL onMainThread = pthread_main_np() ? YES : NO;
+
+    if (MultiThreadedGC || onMainThread) {
+        if (MultiThreadedGC && onMainThread) batchFinalizeOnMainThread();
+        auto_collection_mode_t amode = AUTO_COLLECT_RATIO_COLLECTION;
+        switch (options & 0x3) {
+          case OBJC_RATIO_COLLECTION:        amode = AUTO_COLLECT_RATIO_COLLECTION;        break;
+          case OBJC_GENERATIONAL_COLLECTION: amode = AUTO_COLLECT_GENERATIONAL_COLLECTION; break;
+          case OBJC_FULL_COLLECTION:         amode = AUTO_COLLECT_FULL_COLLECTION;         break;
+          case OBJC_EXHAUSTIVE_COLLECTION:   amode = AUTO_COLLECT_EXHAUSTIVE_COLLECTION;   break;
+        }
+        if (options & OBJC_COLLECT_IF_NEEDED) amode |= AUTO_COLLECT_IF_NEEDED;
+        if (options & OBJC_WAIT_UNTIL_DONE)   amode |= AUTO_COLLECT_SYNCHRONOUS;  // uses different bits
+        auto_collect(gc_zone, amode, NULL);
+    }
+    else {
+        objc_msgSend(objc_getClass("NSGarbageCollector"), @selector(_callOnMainThread:withArgs:), objc_collect, (void *)options);
+    }
+}
+
+// SPI
+// 0 - exhaustively NSGarbageCollector.m
+//   - from AppKit /Developer/Applications/Xcode.app/Contents/MacOS/Xcode via idleTimer
+// GENERATIONAL
+//   - from autoreleasepool
+//   - several other places
+void objc_collect_if_needed(unsigned long options) {
+    if (!UseGC) return;
+    BOOL onMainThread = pthread_main_np() ? YES : NO;
+
+    if (MultiThreadedGC || onMainThread) {
+        auto_collection_mode_t mode;
+        if (options & OBJC_GENERATIONAL) {
+            mode = AUTO_COLLECT_IF_NEEDED | AUTO_COLLECT_RATIO_COLLECTION;
+        }
+        else {
+            mode = AUTO_COLLECT_EXHAUSTIVE_COLLECTION;
+        }
+        if (MultiThreadedGC && onMainThread) batchFinalizeOnMainThread();
+        auto_collect(gc_zone, mode, NULL);
+    }
+    else {      // XXX could be optimized (e.g. ask auto for threshold check, if so, set ASKING if not already ASKING,...
+        objc_msgSend(objc_getClass("NSGarbageCollector"), @selector(_callOnMainThread:withArgs:), objc_collect_if_needed, (void *)options);
+    }
 }
 
+// NEVER USED.
+size_t objc_numberAllocated(void) 
+{
+    auto_statistics_t stats;
+    stats.version = 0;
+    auto_zone_statistics(gc_zone, &stats);
+    return stats.malloc_statistics.blocks_in_use;
+}
 
+// USED BY CF & ONE OTHER
 BOOL objc_isAuto(id object) 
 {
-    return UseGC && ISAUTOOBJECT(object) != 0;
+    return UseGC && auto_zone_is_valid_pointer(gc_zone, object) != 0;
 }
 
 
-BOOL objc_collecting_enabled(void) 
+BOOL objc_collectingEnabled(void) 
+{
+    return UseGC;
+}
+BOOL objc_collecting_enabled(void) // Old naming
 {
     return UseGC;
 }
@@ -283,21 +204,75 @@ BOOL objc_collecting_enabled(void)
 // 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;
+    return class_createInstance(cls, extra);
+}
+
+
+/***********************************************************************
+* 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.
+**********************************************************************/
+
+static void objc_strongCast_write_barrier(id value, id *slot) {
+    if (!auto_zone_set_write_barrier(gc_zone, (void*)slot, value)) {
+        auto_zone_root_write_barrier(gc_zone, slot, value);
+    }
+}
+
+__private_extern__ id objc_assign_strongCast_gc(id value, id *slot) 
+{
+    objc_strongCast_write_barrier(value, slot);
+    return (*slot = value);
+}
+
+static void objc_register_global(id value, id *slot)
+{
+    // use explicit root registration.
+    if (value && auto_zone_is_valid_pointer(gc_zone, value)) {
+        if (auto_zone_is_finalized(gc_zone, value)) {
+            __private_extern__ void objc_assign_global_error(id value, id *slot);
+
+            _objc_inform("GC: storing an already collected object %p into global memory at %p, break on objc_assign_global_error to debug\n", value, slot);
+            objc_assign_global_error(value, slot);
+        }
+        auto_zone_add_root(gc_zone, slot, value);
+    }
+}
+
+__private_extern__ id objc_assign_global_gc(id value, id *slot) {
+    objc_register_global(value, slot);
+    return (*slot = value);
+}
+
+
+__private_extern__ id objc_assign_ivar_gc(id value, id base, ptrdiff_t offset) 
+{
+    id *slot = (id*) ((char *)base + offset);
+
+    if (value) {
+        if (!auto_zone_set_write_barrier(gc_zone, (char *)base + offset, value)) {
+            __private_extern__  void objc_assign_ivar_error(id base, ptrdiff_t offset);
+
+            _objc_inform("GC: %p + %d isn't in the auto_zone, break on objc_assign_ivar_error to debug.\n", base, offset);
+            objc_assign_ivar_error(base, offset);
+        }
+    }
+    
+    return (*slot = value);
 }
 
 
 /***********************************************************************
 * Write barrier exports
 * Called by pretty much all GC-supporting code.
+*
+* These "generic" implementations, available in PPC, are thought to be
+* called by Rosetta when it translates the bla instruction.
 **********************************************************************/
 
-
 // Platform-independent write barriers
 // These contain the UseGC check that the platform-specific 
 // runtime-rewritten implementations do not.
@@ -322,7 +297,7 @@ id objc_assign_global_generic(id value, id *dest)
 }
 
 
-id objc_assign_ivar_generic(id value, id dest, unsigned int offset)
+id objc_assign_ivar_generic(id value, id dest, ptrdiff_t offset)
 {
     if (UseGC) {
         return objc_assign_ivar_gc(value, dest, offset);
@@ -332,19 +307,23 @@ id objc_assign_ivar_generic(id value, id dest, unsigned int offset)
     }
 }
 
-#if defined(__ppc__)
+#if defined(__ppc__) || defined(__i386__) || defined(__x86_64__)
 
 // PPC write barriers are in objc-auto-ppc.s
 // write_barrier_init conditionally stomps those to jump to the _impl versions.
 
+// These 3 functions are defined in objc-auto-i386.s and objc-auto-x86_64.s as
+// the non-GC variants. Under GC, rtp_init stomps them with jumps to
+// objc_assign_*_gc.
+
 #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); }
+id objc_assign_ivar(id value, id dest, ptrdiff_t offset) { return objc_assign_ivar_generic(value, dest, offset); }
 
-// not defined(__ppc__)
+// not (defined(__ppc__)) && not defined(__i386__) && not defined(__x86_64__)
 #endif
 
 
@@ -357,16 +336,115 @@ void *objc_memmove_collectable(void *dst, const void *src, size_t size)
     }
 }
 
+BOOL objc_atomicCompareAndSwapGlobal(id predicate, id replacement, volatile id *objectLocation) {
+    if (UseGC) objc_register_global(replacement, (id *)objectLocation);
+    return OSAtomicCompareAndSwapPtr((void *)predicate, (void *)replacement, (void * volatile *)objectLocation);
+}
+
+BOOL objc_atomicCompareAndSwapGlobalBarrier(id predicate, id replacement, volatile id *objectLocation) {
+    if (UseGC) objc_register_global(replacement, (id *)objectLocation);
+    return OSAtomicCompareAndSwapPtrBarrier((void *)predicate, (void *)replacement, (void * volatile *)objectLocation);
+}
+
+BOOL objc_atomicCompareAndSwapInstanceVariable(id predicate, id replacement, volatile id *objectLocation) {
+    if (UseGC) objc_strongCast_write_barrier(replacement, (id *)objectLocation);
+    return OSAtomicCompareAndSwapPtr((void *)predicate, (void *)replacement, (void * volatile *)objectLocation);
+}
+
+BOOL objc_atomicCompareAndSwapInstanceVariableBarrier(id predicate, id replacement, volatile id *objectLocation) {
+    if (UseGC) objc_strongCast_write_barrier(replacement, (id *)objectLocation);
+    return OSAtomicCompareAndSwapPtrBarrier((void *)predicate, (void *)replacement, (void * volatile *)objectLocation);
+}
+
+
+/***********************************************************************
+* Weak ivar support
+**********************************************************************/
+
+id objc_read_weak(id *location) {
+    id result = *location;
+    if (UseGC && result) {
+        result = auto_read_weak_reference(gc_zone, (void **)location);
+    }
+    return result;
+}
+
+id objc_assign_weak(id value, id *location) {
+    if (UseGC) {
+        auto_assign_weak_reference(gc_zone, value, (void **)location, NULL);
+    }
+    else {
+        *location = value;
+    }
+    return value;
+}
+
 
 /***********************************************************************
 * 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);
+    if (ptr != NULL && UseGC) {
+        return auto_zone_is_finalized(gc_zone, ptr);
+    }
+    return NO;
 }
 
 
+/***********************************************************************
+* Stack management
+* Used to tell clean up dirty stack frames before a thread blocks. To
+* make this more efficient, we really need better support from pthreads.
+* See <rdar://problem/4548631> for more details.
+**********************************************************************/
+
+static vm_address_t _stack_resident_base() {
+    pthread_t self = pthread_self();
+    size_t stack_size = pthread_get_stacksize_np(self);
+    vm_address_t stack_base = (vm_address_t)pthread_get_stackaddr_np(self) - stack_size;
+    size_t stack_page_count = stack_size / vm_page_size;
+    char stack_residency[stack_page_count];
+    vm_address_t stack_resident_base = 0;
+    if (mincore((void*)stack_base, stack_size, stack_residency) == 0) {
+        // we can now tell the degree to which the stack is resident, and use it as our ultimate high water mark.
+        size_t i;
+        for (i = 0; i < stack_page_count; ++i) {
+            if (stack_residency[i]) {
+                stack_resident_base = stack_base + i * vm_page_size;
+                // malloc_printf("last touched page = %lu\n", stack_page_count - i - 1);
+                break;
+            }
+        }
+    }
+    return stack_resident_base;
+}
+
+static __attribute__((noinline)) void* _get_stack_pointer() {
+#if defined(__i386__) || defined(__ppc__) || defined(__ppc64__) || defined(__x86_64__)
+    return __builtin_frame_address(0);
+#else
+    return NULL;
+#endif
+}
+
+void objc_clear_stack(unsigned long options) {
+    if (!UseGC) return;
+    if (options & OBJC_CLEAR_RESIDENT_STACK) {
+        // clear just the pages of stack that are currently resident.
+        vm_address_t stack_resident_base = _stack_resident_base();
+        vm_address_t stack_top =  (vm_address_t)_get_stack_pointer() - 2 * sizeof(void*);
+        bzero((void*)stack_resident_base, (stack_top - stack_resident_base));
+    } else {
+        // clear the entire unused stack, regardless of whether it's pages are resident or not.
+        pthread_t self = pthread_self();
+        size_t stack_size = pthread_get_stacksize_np(self);
+        vm_address_t stack_base = (vm_address_t)pthread_get_stackaddr_np(self) - stack_size;
+        vm_address_t stack_top =  (vm_address_t)_get_stack_pointer() - 2 * sizeof(void*);
+        bzero((void*)stack_base, stack_top - stack_base);
+    }
+}
+
 /***********************************************************************
 * CF-only write barrier exports
 * Called by CF only.
@@ -378,7 +456,7 @@ 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);
+            ptrdiff_t offset = (((char *)slot)-(char *)base);
             auto_zone_write_barrier(gc_zone, base, offset, value);
         }
     }
@@ -394,7 +472,7 @@ 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);
+            ptrdiff_t offset = (((char *)slot)-(char *)base);
             auto_zone_write_barrier(gc_zone, base, offset, value);
        }
     }
@@ -403,347 +481,255 @@ void* objc_assign_strongCast_CF(void* value, void **slot)
 
 
 /***********************************************************************
-* 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.
+* Finalization support
 **********************************************************************/
 
-__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);
-}
+static IMP _NSObject_finalize = NULL;
 
+// Finalizer crash debugging
+static void *finalizing_object;
+static const char *__crashreporter_info__;
 
-__private_extern__ id objc_assign_ivar_gc(id value, id base, unsigned int offset) 
-{
-    id *slot = (id*) ((char *)base + offset);
+static void finalizeOneObject(void *obj, void *sel) {
+    id object = (id)obj;
+    SEL selector = (SEL)sel;
+    finalizing_object = obj;
+    __crashreporter_info__ = object_getClassName(obj);
 
-    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);
-        }
-    }
+    /// call -finalize method.
+    objc_msgSend(object, selector);
+    // Call C++ destructors, if any.
+    object_cxxDestruct(object);
 
-    return (*slot = value);
+    finalizing_object = NULL;
+    __crashreporter_info__ = NULL;
 }
 
-
-
-/***********************************************************************
-* 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;
+static void finalizeOneMainThreadOnlyObject(void *obj, void *sel) {
+    id object = (id)obj;
+    Class cls = object->isa;
+    if (cls == NULL) {
+        _objc_fatal("object with NULL ISA passed to finalizeOneMainThreadOnlyObject:  %p\n", obj);
+    }
+    if (_class_shouldFinalizeOnMainThread(cls)) {
+        finalizeOneObject(obj, sel);
+    }
 }
-+ (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));
+static void finalizeOneAnywhereObject(void *obj, void *sel) {
+    id object = (id)obj;
+    Class cls = object->isa;
+    if (cls == NULL) {
+        _objc_fatal("object with NULL ISA passed to finalizeOneAnywhereObject:  %p\n", obj);
+    }
+    if (!_class_shouldFinalizeOnMainThread(cls)) {
+        finalizeOneObject(obj, sel);
+    }
+    else {
+        NeedsMainThreadFinalization = YES;
     }
-    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;
+static void batchFinalize(auto_zone_t *zone,
+                          auto_zone_foreach_object_t foreach,
+                          auto_zone_cursor_t cursor, 
+                          size_t cursor_size,
+                          void (*finalize)(void *, void*))
+{
+    for (;;) {
+        @try {
+            foreach(cursor, finalize, @selector(finalize));
+            // non-exceptional return means finalization is complete.
+            break;
+        } @catch (id exception) {
+            // whoops, note exception, then restart at cursor's position
+            __private_extern__ void objc_exception_during_finalize_error(void);
+            _objc_inform("GC: -finalize resulted in an exception (%p) being thrown, break on objc_exception_during_finalize_error to debug\n\t%s", exception, (const char*)[[exception description] UTF8String]);
+            objc_exception_during_finalize_error();
+        }
     }
-    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);
+static void batchFinalizeOnMainThread(void) {
+    pthread_mutex_lock(&BatchFinalizeBlock.mutex);
+    if (BatchFinalizeBlock.started) {
+        // main thread got here already
+        pthread_mutex_unlock(&BatchFinalizeBlock.mutex);
         return;
     }
+    BatchFinalizeBlock.started = YES;
+    pthread_mutex_unlock(&BatchFinalizeBlock.mutex);
+        
+    batchFinalize(gc_zone, BatchFinalizeBlock.foreach, BatchFinalizeBlock.cursor, BatchFinalizeBlock.cursor_size, finalizeOneMainThreadOnlyObject);
+    // signal the collector thread that finalization has finished.
+    pthread_mutex_lock(&BatchFinalizeBlock.mutex);
+    BatchFinalizeBlock.finished = YES;
+    pthread_cond_signal(&BatchFinalizeBlock.condition);
+    pthread_mutex_unlock(&BatchFinalizeBlock.mutex);
+}
+
+static void batchFinalizeOnTwoThreads(auto_zone_t *zone,
+                                         auto_zone_foreach_object_t foreach,
+                                         auto_zone_cursor_t cursor, 
+                                         size_t cursor_size)
+{
+    // First, lets get rid of everything we can on this thread, then ask main thread to help if needed
+    NeedsMainThreadFinalization = NO;
+    char cursor_copy[cursor_size];
+    memcpy(cursor_copy, cursor, cursor_size);
+    batchFinalize(zone, foreach, cursor_copy, cursor_size, finalizeOneAnywhereObject);
+
+    if (! NeedsMainThreadFinalization)
+        return;     // no help needed
     
-    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;
+    // set up the control block.  Either our ping of main thread with _callOnMainThread will get to it, or
+    // an objc_collect_if_needed() will get to it.  Either way, this block will be processed on the main thread.
+    pthread_mutex_lock(&BatchFinalizeBlock.mutex);
+    BatchFinalizeBlock.foreach = foreach;
+    BatchFinalizeBlock.cursor = cursor;
+    BatchFinalizeBlock.cursor_size = cursor_size;
+    BatchFinalizeBlock.started = NO;
+    BatchFinalizeBlock.finished = NO;
+    pthread_mutex_unlock(&BatchFinalizeBlock.mutex);
     
-    if (cls == _NSDeallocatedObject) {
-        // already finalized, do nothing
-        _objc_inform("finalizeOneObject called on NSDeallocatedObject %p", ptr);
-        return;
-    }
+    //printf("----->asking main thread to finalize\n");
+    objc_msgSend(objc_getClass("NSGarbageCollector"), @selector(_callOnMainThread:withArgs:), batchFinalizeOnMainThread, &BatchFinalizeBlock);
     
-    IMP finalizeMethod = class_lookupMethod(cls, @selector(finalize));
-    if (finalizeMethod == &_objc_msgForward) {
-        _objc_inform("GC: class '%s' does not implement -finalize!", cls->name);
-    }
+    // wait for the main thread to finish finalizing instances of classes marked CLS_FINALIZE_ON_MAIN_THREAD.
+    pthread_mutex_lock(&BatchFinalizeBlock.mutex);
+    while (!BatchFinalizeBlock.finished) pthread_cond_wait(&BatchFinalizeBlock.condition, &BatchFinalizeBlock.mutex);
+    pthread_mutex_unlock(&BatchFinalizeBlock.mutex);
+    //printf("<------ main thread finalize done\n");
+
+}
+
+
+static void objc_will_grow(auto_zone_t *zone, auto_heap_growth_info_t info) {
+    if (MultiThreadedGC) {
+        //printf("objc_will_grow %d\n", info);
         
-    // 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 (auto_zone_is_collecting(gc_zone)) {
+            ;
+        }
+        else  {
+            auto_collect(gc_zone, AUTO_COLLECT_RATIO_COLLECTION, NULL);
         }
-       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)
+
+// collector calls this with garbage ready
+static void BatchInvalidate(auto_zone_t *zone,
+                                         auto_zone_foreach_object_t foreach,
+                                         auto_zone_cursor_t cursor, 
+                                         size_t cursor_size)
 {
-    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);
-        }
+    if (pthread_main_np() || !WantsMainThreadFinalization) {
+        // Collect all objects.  We're either pre-multithreaded on main thread or we're on the collector thread
+        // but no main-thread-only objects have been allocated.
+        batchFinalize(zone, foreach, cursor, cursor_size, finalizeOneObject);
+    }
+    else {
+        // We're on the dedicated thread.  Collect some on main thread, the rest here.
+        batchFinalizeOnTwoThreads(zone, foreach, cursor, cursor_size);
     }
-    gc_zone_finalizing = NO;
+    
+}
+
+// idea:  keep a side table mapping resurrected object pointers to their original Class, so we don't
+// need to smash anything. alternatively, could use associative references to track against a secondary
+// object with information about the resurrection, such as a stack crawl, etc.
+
+static Class _NSResurrectedObjectClass;
+static NXMapTable *_NSResurrectedObjectMap = NULL;
+static OBJC_DECLARE_LOCK(_NSResurrectedObjectLock);
+
+static Class resurrectedObjectOriginalClass(id object) {
+    Class originalClass;
+    OBJC_LOCK(&_NSResurrectedObjectLock);
+    originalClass = (Class) NXMapGet(_NSResurrectedObjectMap, object);
+    OBJC_UNLOCK(&_NSResurrectedObjectLock);
+    return originalClass;
+}
+
+static id _NSResurrectedObject_classMethod(id self, SEL selector) { return self; }
+
+static id _NSResurrectedObject_instanceMethod(id self, SEL name) {
+    _objc_inform("**resurrected** object %p of class %s being sent message '%s'\n", self, class_getName(resurrectedObjectOriginalClass(self)), sel_getName(name));
+    return self;
 }
 
-@interface NSResurrectedObject {
-    @public
-    Class _isa;                // [NSResurrectedObject class]
-    Class _old_isa;            // original class
-    unsigned _resurrections;   // how many times this object has been resurrected.
+static void _NSResurrectedObject_finalize(id self, SEL _cmd) {
+    Class originalClass;
+    OBJC_LOCK(&_NSResurrectedObjectLock);
+    originalClass = (Class) NXMapRemove(_NSResurrectedObjectMap, self);
+    OBJC_UNLOCK(&_NSResurrectedObjectLock);
+    if (originalClass) _objc_inform("**resurrected** object %p of class %s being finalized\n", self, class_getName(originalClass));
+    _NSObject_finalize(self, _cmd);
 }
-+ (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;
+static BOOL _NSResurrectedObject_resolveInstanceMethod(id self, SEL _cmd, SEL name) {
+    class_addMethod((Class)self, name, (IMP)_NSResurrectedObject_instanceMethod, "@@:");
+    return YES;
 }
-- (void)finalize {
-    _objc_inform("**resurrected** object %p of class %s being finalized\n", self, _old_isa->name);
+
+static BOOL _NSResurrectedObject_resolveClassMethod(id self, SEL _cmd, SEL name) {
+    class_addMethod(object_getClass(self), name, (IMP)_NSResurrectedObject_classMethod, "@@:");
+    return YES;
 }
-@end
 
-static Class _NSResurrectedObject;
+static void _NSResurrectedObject_initialize() {
+    _NSResurrectedObjectMap = NXCreateMapTable(NXPtrValueMapPrototype, 128);
+    _NSResurrectedObjectClass = objc_allocateClassPair(objc_getClass("NSObject"), "_NSResurrectedObject", 0);
+    class_addMethod(_NSResurrectedObjectClass, @selector(finalize), (IMP)_NSResurrectedObject_finalize, "v@:");
+    Class metaClass = object_getClass(_NSResurrectedObjectClass);
+    class_addMethod(metaClass, @selector(resolveInstanceMethod:), (IMP)_NSResurrectedObject_resolveInstanceMethod, "c@::");
+    class_addMethod(metaClass, @selector(resolveClassMethod:), (IMP)_NSResurrectedObject_resolveClassMethod, "c@::");
+    objc_registerClassPair(_NSResurrectedObjectClass);
+}
 
 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++;
+    id object = (id) ptr;
+    Class cls = object->isa;
+    if (cls != _NSResurrectedObjectClass) {
+        // remember the original class for this instance.
+        OBJC_LOCK(&_NSResurrectedObjectLock);
+        NXMapInsert(_NSResurrectedObjectMap, ptr, cls);
+        OBJC_UNLOCK(&_NSResurrectedObjectLock);
+        object->isa = _NSResurrectedObjectClass;
     }
 }
 
 /***********************************************************************
-* Allocation recording
+* Pretty printing support
 * For development purposes.
 **********************************************************************/
 
-static NXMapTable *the_histogram = NULL;
-static pthread_mutex_t the_histogram_lock = PTHREAD_MUTEX_INITIALIZER;
 
+static char *name_for_address(auto_zone_t *zone, vm_address_t base, vm_address_t offset, int withRetainCount);
 
-static void record_allocation(Class cls) 
+static char* objc_name_for_address(auto_zone_t *zone, vm_address_t base, vm_address_t offset)
 {
-    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);
+    return name_for_address(zone, base, offset, false);
 }
 
+/***********************************************************************
+* Collection support
+**********************************************************************/
 
-void objc_allocation_histogram(void)
+static const unsigned char *objc_layout_for_address(auto_zone_t *zone, void *address) 
 {
-    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");
+    Class cls = *(Class *)address;
+    return (const unsigned char *)class_getIvarLayout(cls);
 }
 
-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)
+static const unsigned char *objc_weak_layout_for_address(auto_zone_t *zone, void *address) 
 {
-    return name_for_address(zone, base, offset, false);
+    Class cls = *(Class *)address;
+    return (const unsigned char *)class_getWeakIvarLayout(cls);
 }
 
 /***********************************************************************
@@ -760,34 +746,18 @@ __private_extern__ void gc_init(BOOL on)
     }
 
     if (UseGC) {
+        // Add GC state to crash log reports
+        _objc_inform_on_crash("garbage collection is ON");
+
         // 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);
+        auto_zone_set_class_list((int (*)(void **, int))objc_getClassList);
     }
 }
 
@@ -797,64 +767,18 @@ 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)
+    result = auto_zone_create("auto_zone");
     
     auto_collection_control_t *control = auto_collection_parameters(result);
     
     // set up the magic control parameters
-    control->invalidate = sendFinalize;
-    control->batch_invalidate = batchFinalize;
+    control->batch_invalidate = BatchInvalidate;
+    control->will_grow = objc_will_grow;
     control->resurrect = resurrectZombie;
+    control->layout_for_address = objc_layout_for_address;
+    control->weak_layout_for_address = objc_weak_layout_for_address;
     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;
 }
 
@@ -864,20 +788,14 @@ 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));
+    _NSObject_finalize = class_getMethodImplementation(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;
-    }
-
+    // create the _NSResurrectedObject class used to track resurrections.
+    _NSResurrectedObject_initialize();
+    
     return (malloc_zone_t *)gc_zone;
 }
 
@@ -912,7 +830,7 @@ static malloc_zone_t *objc_debug_zone(void)
     return z;
 }
 
-static char *_malloc_append_unsigned(unsigned value, unsigned base, char *head) {
+static char *_malloc_append_unsigned(uintptr_t value, unsigned base, char *head) {
     if (!value) {
         head[0] = '0';
     } else {
@@ -923,61 +841,69 @@ static char *_malloc_append_unsigned(unsigned value, unsigned base, char *head)
     return head+1;
 }
 
-static void strcati(char *str, unsigned value)
+static void strcati(char *str, uintptr_t value)
 {
     str = _malloc_append_unsigned(value, 10, str + strlen(str));
     str[0] = '\0';
 }
 
-static void strcatx(char *str, unsigned value)
+static void strcatx(char *str, uintptr_t 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)
+static Ivar ivar_for_offset(Class cls, vm_address_t offset)
 {
     int i;
     int ivar_offset;
-    Ivar super_ivar;
-    struct objc_ivar_list *ivars;
+    Ivar super_ivar, result;
+    Ivar *ivars;
+    unsigned int ivar_count;
 
     if (!cls) return NULL;
 
     // scan base classes FIRST
-    super_ivar = ivar_for_offset(cls->super_class, offset);
+    super_ivar = ivar_for_offset(class_getSuperclass(cls), 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];
+    ivars = class_copyIvarList(cls, &ivar_count);
+    if (ivars && ivar_count) {
+        // Try our first ivar. If it's too big, use super's best ivar.
+        ivar_offset = ivar_getOffset(ivars[0]);
+        if (ivar_offset > offset) result = super_ivar;
+        else if (ivar_offset == offset) result = ivars[0];
+        else result = NULL;
+
+        // Try our other ivars. If any is too big, use the previous.
+        for (i = 1; result == NULL && i < ivar_count; i++) {
+            ivar_offset = ivar_getOffset(ivars[i]);
+            if (ivar_offset == offset) {
+                result = ivars[i];
+            } else if (ivar_offset > offset) {
+                result = ivars[i - 1];
+            }
         }
-    }
 
-    // Found nothing. Return our last ivar.
-    return &ivars->ivar_list[ivars->ivar_count - 1];
+        // Found nothing. Return our last ivar.
+        if (result == NULL)
+            result = ivars[ivar_count - 1];
+        
+        free(ivars);
+    } else {
+        result = super_ivar;
+    }
+    
+    return result;
 }
 
-static void append_ivar_at_offset(char *buf, struct objc_class *cls, vm_address_t offset)
+static void append_ivar_at_offset(char *buf, Class cls, vm_address_t offset)
 {
     Ivar ivar = NULL;
 
     if (offset == 0) return;  // don't bother with isa
-    if (offset >= cls->instance_size) {
+    if (offset >= class_getInstanceSize(cls)) {
         strcat(buf, ".<extra>+");
         strcati(buf, offset);
         return;
@@ -992,10 +918,11 @@ static void append_ivar_at_offset(char *buf, struct objc_class *cls, vm_address_
     // fixme doesn't handle structs etc.
     
     strcat(buf, ".");
-    if (ivar->ivar_name) strcat(buf, ivar->ivar_name);
+    const char *ivar_name = ivar_getName(ivar);
+    if (ivar_name) strcat(buf, ivar_name);
     else strcat(buf, "<anonymous ivar>");
 
-    offset -= ivar->ivar_offset;
+    offset -= ivar_getOffset(ivar);
     if (offset > 0) {
         strcat(buf, "+");
         strcati(buf, offset);
@@ -1007,29 +934,33 @@ 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);
+    const char *result;
+    void *dlh;
+    size_t (*CFGetTypeID)(void *);
+    void * (*_CFRuntimeGetClassWithTypeID)(size_t);
+
+    result = "anonymous_NSCFType";
 
-    sym = NSLookupAndBindSymbolWithHint("_CFGetTypeID", "CoreFoundation");
-    if (!sym) return "anonymous_NSCFType";
-    CFGetTypeID = NSAddressOfSymbol(sym);
-    if (!CFGetTypeID) return "NSCFType";
+    dlh = dlopen("/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation", RTLD_LAZY | RTLD_NOLOAD | RTLD_FIRST);
+    if (!dlh) return result;
 
-    sym = NSLookupAndBindSymbolWithHint("__CFRuntimeGetClassWithTypeID", "CoreFoundation");
-    if (!sym) return "anonymous_NSCFType";
-    _CFRuntimeGetClassWithTypeID = NSAddressOfSymbol(sym);
-    if (!_CFRuntimeGetClassWithTypeID) return "anonymous_NSCFType";
+    CFGetTypeID = (size_t(*)(void*)) dlsym(dlh, "CFGetTypeID");
+    _CFRuntimeGetClassWithTypeID = (void*(*)(size_t)) dlsym(dlh, "_CFRuntimeGetClassWithTypeID");
+    
+    if (CFGetTypeID  &&  _CFRuntimeGetClassWithTypeID) {
+        struct {
+            size_t version;
+            const char *className;
+            // don't care about the rest
+        } *cfcls;
+        size_t cfid;
+        cfid = (*CFGetTypeID)(cfobj);
+        cfcls = (*_CFRuntimeGetClassWithTypeID)(cfid);
+        result = cfcls->className;
+    }
 
-    cfid = (*CFGetTypeID)(cfobj);
-    cfcls = (*_CFRuntimeGetClassWithTypeID)(cfid);
-    return cfcls->className;
+    dlclose(dlh);
+    return result;
 }
 
 
@@ -1045,7 +976,7 @@ static char *name_for_address(auto_zone_t *zone, vm_address_t base, vm_address_t
 
     buf[0] = '\0';
 
-    unsigned int size = 
+    size_t 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;
@@ -1055,14 +986,14 @@ static char *name_for_address(auto_zone_t *zone, vm_address_t base, vm_address_t
     switch (type) {
     case AUTO_OBJECT_SCANNED: 
     case AUTO_OBJECT_UNSCANNED: {
-        Class cls = *(struct objc_class **)base;
-        if (0 == strcmp(cls->name, "NSCFType")) {
+        const char *class_name = object_getClassName((id)base);
+        if (0 == strcmp(class_name, "NSCFType")) {
             strcat(buf, cf_class_for_object((void *)base));
         } else {
-            strcat(buf, cls->name);
+            strcat(buf, class_name);
         }
         if (offset) {
-            append_ivar_at_offset(buf, cls, offset);
+            append_ivar_at_offset(buf, object_getClass((id)base), offset);
         }
         APPEND_SIZE(size);
         break;
@@ -1115,10 +1046,10 @@ static void objc_class_recorder(task_t task, void *context, unsigned type_mask,
             // 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) {
+            for (cls = isa; cls; cls = _class_getSuperclass(cls)) {
                 if (cls == ctx->cls) {
                     unsigned int rc;
-                    objc_debug_printf("[%p]    :   %s", r->address, isa->name);
+                    objc_debug_printf("[%p]    :   %s", r->address, _class_getName(isa));
                     if ((rc = auto_zone_retain_count_no_lock(ctx->zone, (void *)r->address))) {
                         objc_debug_printf(" [[refcount %u]]", rc);
                     }
@@ -1131,7 +1062,7 @@ static void objc_class_recorder(task_t task, void *context, unsigned type_mask,
     }
 }
 
-void objc_enumerate_class(char *clsname)
+__private_extern__ void objc_enumerate_class(char *clsname)
 {
     struct objc_class_recorder_context ctx;
     ctx.zone = auto_zone();
@@ -1163,7 +1094,7 @@ static void objc_reference_printer(auto_zone_t *zone, void *ctx,
 }
 
 
-void objc_print_references(void *referent, void *stack_bottom, int lock)
+__private_extern__ void objc_print_references(void *referent, void *stack_bottom, int lock)
 {
     if (lock) {
         auto_enumerate_references(auto_zone(), referent, 
@@ -1194,18 +1125,18 @@ typedef struct {
     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 blob_queue blobs = {NULL, 0, 0};
+static blob_queue untraced_blobs = {NULL, 0, 0};
+static 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 time_t t = 0;
+    time_t now = time(NULL);
+    if (t != now) {
+        objc_debug_printf(".");
+        t = now;
+    }
 }
 
 
@@ -1313,17 +1244,17 @@ static void objc_blob_recorder(auto_zone_t *zone, void *ctx,
 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)
+__private_extern__ 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)
+__private_extern__ 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)
+__private_extern__ void objc_print_all_refs(vm_address_t target, void *stack_bottom, int lock)
 {
     objc_print_recursive_refs(target, ALL_REFS, stack_bottom, lock);
 }
@@ -1512,14 +1443,14 @@ static void objc_block_recorder(task_t task, void *context, unsigned type_mask,
 }
 
 
-void objc_dump_block_list(const char* path)
+__private_extern__ 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, '.'))));
+    ctx.fd = (path ? open(path, O_WRONLY | O_CREAT | O_TRUNC, 0666) : mkstemps(filename, (int)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);
@@ -1598,7 +1529,7 @@ 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 width = 30 + (int)strlen(name)*6;
     int height = 40;
     char buf[40] = "";
     char *c;
@@ -1684,7 +1615,7 @@ static void grafflize(blob_queue *blobs, int everything)
     char filename[] = "/tmp/gc-XXXXX.graffle";
 
     // Open file
-    gfile = mkstemps(filename, strlen(strrchr(filename, '.')));
+    gfile = mkstemps(filename, (int)strlen(strrchr(filename, '.')));
     if (gfile < 0) {
         objc_debug_printf("couldn't create a graffle file in /tmp/ (errno %d)\n", errno);
         return;
@@ -1731,110 +1662,3 @@ static void grafflize(blob_queue *blobs, int everything)
     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);
-}
-
diff --git a/runtime/objc-cache.m b/runtime/objc-cache.m
new file mode 100644 (file)
index 0000000..7d0aefb
--- /dev/null
@@ -0,0 +1,1806 @@
+/*
+ * Copyright (c) 1999-2007 Apple Inc.  All Rights Reserved.
+ * 
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * 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-cache.m
+* Method cache management
+* Cache flushing
+* Cache garbage collection
+* Cache instrumentation
+* Dedicated allocator for large caches
+**********************************************************************/
+
+
+/***********************************************************************
+ * Method cache locking (GrP 2001-1-14)
+ *
+ * For speed, objc_msgSend does not acquire any locks when it reads 
+ * method caches. Instead, all cache changes are performed so that any 
+ * objc_msgSend running concurrently with the cache mutator will not 
+ * crash or hang or get an incorrect result from the cache. 
+ *
+ * When cache memory becomes unused (e.g. the old cache after cache 
+ * expansion), it is not immediately freed, because a concurrent 
+ * objc_msgSend could still be using it. Instead, the memory is 
+ * disconnected from the data structures and placed on a garbage list. 
+ * The memory is now only accessible to instances of objc_msgSend that 
+ * were running when the memory was disconnected; any further calls to 
+ * objc_msgSend will not see the garbage memory because the other data 
+ * structures don't point to it anymore. The collecting_in_critical
+ * function checks the PC of all threads and returns FALSE when all threads 
+ * are found to be outside objc_msgSend. This means any call to objc_msgSend 
+ * that could have had access to the garbage has finished or moved past the 
+ * cache lookup stage, so it is safe to free the memory.
+ *
+ * All functions that modify cache data or structures must acquire the 
+ * 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*
+ * _cache_getImp
+ * _cache_getMethod
+ *
+ * Cache writers (hold cacheUpdateLock while reading or writing; not PC-checked)
+ * _cache_fill         (acquires lock)
+ * _cache_expand       (only called from cache_fill)
+ * _cache_create       (only called from cache_expand)
+ * bcopy               (only called from instrumented cache_expand)
+ * flush_caches        (acquires lock)
+ * _cache_flush        (only called from cache_fill and flush_caches)
+ * _cache_collect_free (only called from cache_expand and cache_flush)
+ *
+ * UNPROTECTED cache readers (NOT thread-safe; used for debug info only)
+ * _cache_print
+ * _class_printMethodCaches
+ * _class_printDuplicateCacheEntries
+ * _class_printMethodCacheStatistics
+ *
+ * _class_lookupMethodAndLoadCache is a special case. It may read a 
+ * method triplet out of one cache and store it in another cache. This 
+ * is unsafe if the method triplet is a forward:: entry, because the 
+ * triplet itself could be freed unless _class_lookupMethodAndLoadCache 
+ * were PC-checked or used a lock. Additionally, storing the method 
+ * triplet in both caches would result in double-freeing if both caches 
+ * were flushed or expanded. The solution is for _cache_getMethod to 
+ * ignore all entries whose implementation is _objc_msgForward, so 
+ * _class_lookupMethodAndLoadCache cannot look at a forward:: entry
+ * unsafely or place it in multiple caches.
+ ***********************************************************************/
+
+
+#include <mach/mach.h>
+
+#import "objc-private.h"
+#import "hashtable2.h"
+
+typedef struct {
+    SEL name;     // same layout as struct old_method
+    void *unused;
+    IMP imp;  // same layout as struct old_method
+} cache_entry;
+
+#if __OBJC2__
+
+#ifndef __LP64__
+#define CACHE_HASH(sel, mask) (((uintptr_t)(sel)>>2) & (mask))
+#else
+#define CACHE_HASH(sel, mask) (((unsigned int)((uintptr_t)(sel)>>3)) & (mask))
+#endif
+
+struct objc_cache {
+    unsigned int mask;            /* total = mask + 1 */
+    unsigned int occupied;        
+    cache_entry *buckets[1];
+};
+
+#define CACHE_BUCKET(e) ((cache_entry *)e)
+
+#else
+
+/* Most definitions are in runtime.h */
+#define CACHE_BUCKET(e) ((Method)e)
+
+#endif
+
+
+/* When _class_slow_grow is non-zero, any given cache is actually grown
+ * only on the odd-numbered times it becomes full; on the even-numbered
+ * times, it is simply emptied and re-used.  When this flag is zero,
+ * caches are grown every time. */
+static const int _class_slow_grow = 1;
+
+/* For min cache size: clear_cache=1, slow_grow=1
+   For max cache size: clear_cache=0, slow_grow=0 */
+
+
+/* Lock for cache access.
+ * Held when modifying a cache in place.
+ * Held when installing a new cache on a class. 
+ * Held when adding to the cache garbage list.
+ * Held when disposing cache garbage.
+ * See "Method cache locking" above for notes about cache locking. */
+// classLock > cacheUpdateLock > infoLock
+#if __OBJC2__
+static 
+#else
+__private_extern__
+#endif
+OBJC_DECLARE_LOCK(cacheUpdateLock);
+
+
+/* Initial cache bucket count. INIT_CACHE_SIZE must be a power of two. */
+enum {
+    INIT_CACHE_SIZE_LOG2 = 2,
+    INIT_CACHE_SIZE      = (1 << INIT_CACHE_SIZE_LOG2)
+};
+
+
+/* Amount of space required for `count` hash table buckets, knowing that
+ * one entry is embedded in the cache structure itself. */
+#define TABLE_SIZE(count)  ((count - 1) * sizeof(cache_entry *))
+
+
+/* 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)
+
+
+/* Cache instrumentation data. Immediately follows the cache block itself. */
+#ifdef OBJC_INSTRUMENTED
+typedef struct
+{
+    unsigned int hitCount;           // cache lookup success tally
+    unsigned int hitProbes;          // sum entries checked to hit
+    unsigned int maxHitProbes;       // max entries checked to hit
+    unsigned int missCount;          // cache lookup no-find tally
+    unsigned int missProbes;         // sum entries checked to miss
+    unsigned int maxMissProbes;      // max entries checked to miss
+    unsigned int flushCount;         // cache flush tally
+    unsigned int flushedEntries;     // sum cache entries flushed
+    unsigned int maxFlushedEntries;  // max cache entries flushed
+} CacheInstrumentation;
+
+#define CACHE_INSTRUMENTATION(cache)  (CacheInstrumentation *) &cache->buckets[cache->mask + 1];
+#endif
+
+/* Cache filling and flushing instrumentation */
+
+static int totalCacheFills NOBSS = 0;
+
+#ifdef OBJC_INSTRUMENTED
+__private_extern__ unsigned int LinearFlushCachesCount              = 0;
+__private_extern__ unsigned int LinearFlushCachesVisitedCount       = 0;
+__private_extern__ unsigned int MaxLinearFlushCachesVisitedCount    = 0;
+__private_extern__ unsigned int NonlinearFlushCachesCount           = 0;
+__private_extern__ unsigned int NonlinearFlushCachesClassCount      = 0;
+__private_extern__ unsigned int NonlinearFlushCachesVisitedCount    = 0;
+__private_extern__ unsigned int MaxNonlinearFlushCachesVisitedCount = 0;
+__private_extern__ unsigned int IdealFlushCachesCount               = 0;
+__private_extern__ unsigned int MaxIdealFlushCachesCount            = 0;
+#endif
+
+
+/***********************************************************************
+* A static empty cache.  All classes initially point at this cache.
+* When the first message is sent it misses in the cache, and when
+* the cache is grown it checks for this case and uses malloc rather
+* than realloc.  This avoids the need to check for NULL caches in the
+* messenger.
+***********************************************************************/
+
+#ifndef OBJC_INSTRUMENTED
+const struct objc_cache _objc_empty_cache =
+{
+    0,        // mask
+    0,        // occupied
+    { NULL }  // buckets
+};
+#else
+// OBJC_INSTRUMENTED requires writable data immediately following emptyCache.
+struct objc_cache _objc_empty_cache =
+{
+    0,        // mask
+    0,        // occupied
+    { NULL }  // buckets
+};
+CacheInstrumentation emptyCacheInstrumentation = {0};
+#endif
+
+#if __OBJC2__
+IMP _objc_empty_vtable[128] = {0};
+#endif
+
+
+/* Local prototypes */
+
+static BOOL _cache_isEmpty(Cache cache);
+static Cache _cache_malloc(int slotCount);
+static Cache _cache_create(Class cls);
+static Cache _cache_expand(Class cls);
+#if __OBJC2__
+static void _cache_flush(Class cls);
+#endif
+
+static uintptr_t _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, size_t size, BOOL tryCollect);
+
+#if !defined(__LP64__)
+static BOOL cache_allocator_is_block(void *block);
+static void *cache_allocator_calloc(size_t size);
+static void cache_allocator_free(void *block);
+#endif
+
+
+
+/***********************************************************************
+* _cache_isEmpty.
+* Returns YES if the given cache is some empty cache.
+* Empty caches should never be allocated on the heap.
+**********************************************************************/
+static BOOL _cache_isEmpty(Cache cache)
+{
+    return (cache == NULL  ||  cache == (Cache)&_objc_empty_cache  ||  cache->mask == 0);
+}
+
+
+/***********************************************************************
+* _cache_malloc.
+*
+* Called from _cache_create() and cache_expand()
+* Cache locks: cacheUpdateLock must be held by the caller.
+**********************************************************************/
+static Cache _cache_malloc(int slotCount)
+{
+    Cache new_cache;
+    size_t size;
+
+    OBJC_CHECK_LOCKED(&cacheUpdateLock);
+
+    // Allocate table (why not check for failure?)
+    size = sizeof(struct objc_cache) + TABLE_SIZE(slotCount);
+#if defined(OBJC_INSTRUMENTED)
+    // Custom cache allocator can't handle instrumentation.
+    size += sizeof(CacheInstrumentation);
+    new_cache = _calloc_internal(size, 1);
+    new_cache->mask = slotCount - 1;
+#elif defined(__LP64__)
+    // fixme cache allocator implementation isn't 64-bit clean
+    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;
+}
+
+
+/***********************************************************************
+* _cache_free_block.
+*
+* Called from _cache_free() and _cache_collect_free().
+* block may be a cache or a forward:: entry.
+* If block is a cache, forward:: entries it points to will NOT be freed.
+* Cache locks: cacheUpdateLock must be held by the caller.
+**********************************************************************/
+static void _cache_free_block(void *block)
+{
+    OBJC_CHECK_LOCKED(&cacheUpdateLock);
+
+#if !defined(__LP64__)
+    if (cache_allocator_is_block(block)) {
+        cache_allocator_free(block);
+    } else 
+#endif
+    {
+        free(block);
+    }
+}
+
+
+/***********************************************************************
+* _cache_free.
+*
+* Called from _objc_remove_classes_in_image().
+* forward:: entries in the cache ARE freed.
+* Cache locks: cacheUpdateLock must NOT be held by the caller.
+**********************************************************************/
+__private_extern__ void _cache_free(Cache cache)
+{
+    int i;
+
+    OBJC_LOCK(&cacheUpdateLock);
+
+    for (i = 0; i < cache->mask + 1; i++) {
+        cache_entry *entry = (cache_entry *)cache->buckets[i];
+        if (entry  &&  entry->imp == &_objc_msgForward) {
+            _cache_free_block(entry);
+        }
+    }
+    
+    _cache_free_block(cache);
+
+    OBJC_UNLOCK(&cacheUpdateLock);
+}
+
+
+/***********************************************************************
+* _cache_create.
+*
+* Called from _cache_expand().
+* Cache locks: cacheUpdateLock must be held by the caller.
+**********************************************************************/
+static Cache _cache_create(Class cls)
+{
+    Cache new_cache;
+
+    OBJC_CHECK_LOCKED(&cacheUpdateLock);
+
+    // Allocate new cache block
+    new_cache = _cache_malloc(INIT_CACHE_SIZE);
+
+    // Install the cache
+    _class_setCache(cls, new_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) {
+        _class_setGrowCache(cls, NO);
+    }
+
+    // Return our creation
+    return new_cache;
+}
+
+
+/***********************************************************************
+* _cache_expand.
+*
+* Called from _cache_fill ()
+* Cache locks: cacheUpdateLock must be held by the caller.
+**********************************************************************/
+static Cache _cache_expand(Class cls)
+{
+    Cache old_cache;
+    Cache new_cache;
+    unsigned int slotCount;
+    unsigned int index;
+
+    OBJC_CHECK_LOCKED(&cacheUpdateLock);
+
+    // First growth goes from empty cache to a real one
+    old_cache = _class_getCache(cls);
+    if (_cache_isEmpty(old_cache))
+        return _cache_create (cls);
+
+    if (_class_slow_grow) {
+        // Cache grows every other time only.
+        if (_class_shouldGrowCache(cls)) {
+            // Grow the cache this time. Don't grow next time.
+            _class_setGrowCache(cls, NO);
+        } 
+        else {
+            // Reuse the current cache storage this time. Do grow next time.
+            _class_setGrowCache(cls, YES);
+
+            // Clear the valid-entry counter
+            old_cache->occupied = 0;
+
+            // Invalidate all the cache entries
+            for (index = 0; index < old_cache->mask + 1; index += 1)
+            {
+                // Remember what this entry was, so we can possibly
+                // deallocate it after the bucket has been invalidated
+                cache_entry *oldEntry = (cache_entry *)old_cache->buckets[index];
+                
+                // Skip invalid entry
+                if (!oldEntry)
+                    continue;
+
+                // Invalidate this entry
+                old_cache->buckets[index] = NULL;
+
+                // Deallocate "forward::" entry
+                if (oldEntry->imp == &_objc_msgForward) {
+                    _cache_collect_free (oldEntry, sizeof(cache_entry), NO);
+                }
+            }
+
+            // Return the same old cache, freshly emptied
+            return old_cache;
+        }
+    }
+
+    // Double the cache size
+    slotCount = (old_cache->mask + 1) << 1;
+
+    new_cache = _cache_malloc(slotCount);
+
+#ifdef OBJC_INSTRUMENTED
+    // Propagate the instrumentation data
+    {
+        CacheInstrumentation *oldCacheData;
+        CacheInstrumentation *newCacheData;
+
+        oldCacheData = CACHE_INSTRUMENTATION(old_cache);
+        newCacheData = CACHE_INSTRUMENTATION(new_cache);
+        bcopy ((const char *)oldCacheData, (char *)newCacheData, sizeof(CacheInstrumentation));
+    }
+#endif
+
+    // Deallocate "forward::" entries from the old cache
+    for (index = 0; index < old_cache->mask + 1; index++) {
+        cache_entry *entry = (cache_entry *)old_cache->buckets[index];
+        if (entry && entry->imp == &_objc_msgForward) {
+            _cache_collect_free (entry, sizeof(cache_entry), NO);
+        }
+    }
+
+    // Install new cache
+    _class_setCache(cls, new_cache);
+
+    // Deallocate old cache, try freeing all the garbage
+    _cache_collect_free (old_cache, old_cache->mask * sizeof(cache_entry *), YES);
+    return new_cache;
+}
+
+
+/***********************************************************************
+* _cache_fill.  Add the specified method to the specified class' cache.
+* Returns NO if the cache entry wasn't added: cache was busy, 
+*  class is still being initialized, new entry is a duplicate.
+*
+* Called only from _class_lookupMethodAndLoadCache and
+* class_respondsToMethod and _cache_addForwardEntry.
+*
+* Cache locks: cacheUpdateLock must not be held.
+**********************************************************************/
+__private_extern__ BOOL _cache_fill(Class cls, Method smt, SEL sel)
+{
+    unsigned int newOccupied;
+    uintptr_t index;
+    cache_entry **buckets;
+    cache_entry *entry;
+    Cache cache;
+
+    OBJC_CHECK_UNLOCKED(&cacheUpdateLock);
+
+    // Never cache before +initialize is done
+    if (!_class_isInitialized(cls)) {
+        return NO;
+    }
+
+    // Keep tally of cache additions
+    totalCacheFills += 1;
+
+    OBJC_LOCK(&cacheUpdateLock);
+
+    entry = (cache_entry *)smt;
+
+    cache = _class_getCache(cls);
+
+    // Make sure the entry wasn't added to the cache by some other thread 
+    // before we grabbed the cacheUpdateLock.
+    // Don't use _cache_getMethod() because _cache_getMethod() doesn't 
+    // return forward:: entries.
+    if (_cache_getImp(cls, sel)) {
+        OBJC_UNLOCK(&cacheUpdateLock);
+        return NO; // entry is already cached, didn't add new one
+    }
+
+    // Use the cache as-is if it is less than 3/4 full
+    newOccupied = cache->occupied + 1;
+    if ((newOccupied * 4) <= (cache->mask + 1) * 3) {
+        // Cache is less than 3/4 full.
+        cache->occupied = newOccupied;
+    } else {
+        // Cache is too full. Expand it.
+        cache = _cache_expand (cls);
+
+        // Account for the addition
+        cache->occupied += 1;
+    }
+
+    // Insert the new entry.  This can be done by either:
+    //  (a) Scanning for the first unused spot.  Easy!
+    //  (b) Opening up an unused spot by sliding existing
+    //      entries down by one.  The benefit of this
+    //      extra work is that it puts the most recently
+    //      loaded entries closest to where the selector
+    //      hash starts the search.
+    //
+    // The loop is a little more complicated because there
+    // are two kinds of entries, so there have to be two ways
+    // to slide them.
+    buckets = (cache_entry **)cache->buckets;
+    index = CACHE_HASH(sel, cache->mask); 
+    for (;;)
+    {
+        // Slide existing entries down by one
+        cache_entry *saveEntry;
+
+        // Copy current entry to a local
+        saveEntry = buckets[index];
+
+        // Copy previous entry (or new entry) to current slot
+        buckets[index] = entry;
+
+        // Done if current slot had been invalid
+        if (saveEntry == NULL)
+            break;
+
+        // Prepare to copy saved value into next slot
+        entry = saveEntry;
+
+        // Move on to next slot
+        index += 1;
+        index &= cache->mask;
+    }
+
+    OBJC_UNLOCK(&cacheUpdateLock);
+
+    return YES; // successfully added new cache entry
+}
+
+
+/***********************************************************************
+* _cache_addForwardEntry
+* Add a forward:: entry  for the given selector to cls's method cache.
+* Does nothing if the cache addition fails for any reason.
+* Called from class_respondsToMethod and _class_lookupMethodAndLoadCache.
+* Cache locks: cacheUpdateLock must not be held.
+**********************************************************************/
+__private_extern__ void _cache_addForwardEntry(Class cls, SEL sel)
+{
+    cache_entry *smt;
+  
+    smt = _malloc_internal(sizeof(cache_entry));
+    smt->name = sel;
+    smt->imp = &_objc_msgForward;
+    if (! _cache_fill(cls, (Method)smt, sel)) {  // fixme hack
+        // Entry not added to cache. Don't leak the method struct.
+        _free_internal(smt);
+    }
+}
+
+
+/***********************************************************************
+* _cache_flush.  Invalidate all valid entries in the given class' cache.
+*
+* Called from flush_caches() and _cache_fill()
+* Cache locks: cacheUpdateLock must be held by the caller.
+**********************************************************************/
+#if __OBJC2__
+static 
+#else
+__private_extern__
+#endif
+void _cache_flush(Class cls)
+{
+    Cache cache;
+    unsigned int index;
+
+    OBJC_CHECK_LOCKED(&cacheUpdateLock);
+
+    // Locate cache.  Ignore unused cache.
+    cache = _class_getCache(cls);
+    if (_cache_isEmpty(cache)) return;
+
+#ifdef OBJC_INSTRUMENTED
+    {
+        CacheInstrumentation *cacheData;
+
+        // Tally this flush
+        cacheData = CACHE_INSTRUMENTATION(cache);
+        cacheData->flushCount += 1;
+        cacheData->flushedEntries += cache->occupied;
+        if (cache->occupied > cacheData->maxFlushedEntries)
+            cacheData->maxFlushedEntries = cache->occupied;
+    }
+#endif
+
+    // Traverse the cache
+    for (index = 0; index <= cache->mask; index += 1)
+    {
+        // Remember what this entry was, so we can possibly
+        // deallocate it after the bucket has been invalidated
+        cache_entry *oldEntry = (cache_entry *)cache->buckets[index];
+
+        // Invalidate this entry
+        cache->buckets[index] = NULL;
+
+        // Deallocate "forward::" entry
+        if (oldEntry && oldEntry->imp == &_objc_msgForward)
+            _cache_collect_free (oldEntry, sizeof(cache_entry), NO);
+    }
+
+    // Clear the valid-entry counter
+    cache->occupied = 0;
+}
+
+
+/***********************************************************************
+* flush_cache.  Flushes the instance method cache for class cls only.
+* Use flush_caches() if cls might have in-use subclasses.
+**********************************************************************/
+__private_extern__ void flush_cache(Class cls)
+{
+    if (cls) {
+        OBJC_LOCK(&cacheUpdateLock);
+        _cache_flush(cls);
+        OBJC_UNLOCK(&cacheUpdateLock);
+    }
+}
+
+
+/***********************************************************************
+* cache collection.
+**********************************************************************/
+
+// A sentinal (magic value) to report bad thread_get_state status
+#define PC_SENTINEL  0
+
+// UNIX03 compliance hack (4508809)
+#if !__DARWIN_UNIX03
+#define __srr0 srr0
+#define __eip eip
+#endif
+
+static uintptr_t _get_pc_for_thread(mach_port_t thread)
+#if defined(__i386__)
+{
+    i386_thread_state_t state;
+    unsigned int count = i386_THREAD_STATE_COUNT;
+    kern_return_t okay = thread_get_state (thread, i386_THREAD_STATE, (thread_state_t)&state, &count);
+    return (okay == KERN_SUCCESS) ? state.__eip : PC_SENTINEL;
+}
+#elif defined(__ppc__)
+{
+    ppc_thread_state_t state;
+    unsigned int count = PPC_THREAD_STATE_COUNT;
+    kern_return_t okay = thread_get_state (thread, PPC_THREAD_STATE, (thread_state_t)&state, &count);
+    return (okay == KERN_SUCCESS) ? state.__srr0 : PC_SENTINEL;
+}
+#elif defined(__ppc64__)
+{
+    ppc_thread_state64_t state;
+    unsigned int count = PPC_THREAD_STATE64_COUNT;
+    kern_return_t okay = thread_get_state (thread, PPC_THREAD_STATE64, (thread_state_t)&state, &count);
+    return (okay == KERN_SUCCESS) ? state.__srr0 : PC_SENTINEL;
+}
+#elif defined(__x86_64__)
+{
+    x86_thread_state64_t                       state;
+    unsigned int count = x86_THREAD_STATE64_COUNT;
+    kern_return_t okay = thread_get_state (thread, x86_THREAD_STATE64, (thread_state_t)&state, &count);
+    return (okay == KERN_SUCCESS) ? state.__rip : PC_SENTINEL;
+}
+#else
+{
+#error _get_pc_for_thread () not implemented for this architecture
+}
+#endif
+
+
+/***********************************************************************
+* _collecting_in_critical.
+* Returns TRUE if some thread is currently executing a cache-reading 
+* function. Collection of cache garbage is not allowed when a cache-
+* reading function is in progress because it might still be using 
+* the garbage memory.
+**********************************************************************/
+OBJC_EXPORT uintptr_t objc_entryPoints[];
+OBJC_EXPORT uintptr_t objc_exitPoints[];
+
+static int _collecting_in_critical(void)
+{
+    thread_act_port_array_t threads;
+    unsigned number;
+    unsigned count;
+    kern_return_t ret;
+    int result;
+
+    mach_port_t mythread = pthread_mach_thread_np(pthread_self());
+
+    // Get a list of all the threads in the current task
+    ret = task_threads (mach_task_self (), &threads, &number);
+    if (ret != KERN_SUCCESS)
+    {
+        _objc_fatal("task_thread failed (result %d)\n", ret);
+    }
+
+    // Check whether any thread is in the cache lookup code
+    result = FALSE;
+    for (count = 0; count < number; count++)
+    {
+        int region;
+        uintptr_t pc;
+
+        // Don't bother checking ourselves
+        if (threads[count] == mythread)
+            continue;
+
+        // Find out where thread is executing
+        pc = _get_pc_for_thread (threads[count]);
+
+        // Check for bad status, and if so, assume the worse (can't collect)
+        if (pc == PC_SENTINEL)
+        {
+            result = TRUE;
+            goto done;
+        }
+        
+        // Check whether it is in the cache lookup code
+        for (region = 0; objc_entryPoints[region] != 0; region++)
+        {
+            if ((pc >= objc_entryPoints[region]) &&
+                (pc <= objc_exitPoints[region])) 
+            {
+                result = TRUE;
+                goto done;
+            }
+        }
+    }
+
+ done:
+    // Deallocate the port rights for the threads
+    for (count = 0; count < number; count++) {
+        mach_port_deallocate(mach_task_self (), threads[count]);
+    }
+
+    // Deallocate the thread list
+    vm_deallocate (mach_task_self (), (vm_address_t) threads, sizeof(threads) * number);
+
+    // Return our finding
+    return result;
+}
+
+
+/***********************************************************************
+* _garbage_make_room.  Ensure that there is enough room for at least
+* one more ref in the garbage.
+**********************************************************************/
+
+// amount of memory represented by all refs in the garbage
+static size_t garbage_byte_size = 0;
+
+// do not empty the garbage until garbage_byte_size gets at least this big
+static size_t garbage_threshold = 1024;
+
+// table of refs to free
+static void **garbage_refs = 0;
+
+// current number of refs in garbage_refs
+static size_t garbage_count = 0;
+
+// capacity of current garbage_refs
+static size_t garbage_max = 0;
+
+// capacity of initial garbage_refs
+enum {
+    INIT_GARBAGE_COUNT = 128
+};
+
+static void _garbage_make_room(void)
+{
+    static int first = 1;
+    volatile void *tempGarbage;
+
+    // Create the collection table the first time it is needed
+    if (first)
+    {
+        first = 0;
+        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 = _realloc_internal(garbage_refs, garbage_max * 2 * sizeof(void *));
+        garbage_refs = (void **) tempGarbage;
+        garbage_max *= 2;
+    }
+}
+
+
+/***********************************************************************
+* _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, size_t size, BOOL tryCollect)
+{
+    OBJC_CHECK_LOCKED(&cacheUpdateLock);
+
+    // 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 += size;
+    garbage_refs[garbage_count++] = data;
+
+    // Done if caller says not to clean up
+    if (!tryCollect) return;
+
+    // Done if the garbage is not full
+    if (garbage_byte_size < garbage_threshold) {
+        if (PrintCacheCollection) {
+            _objc_inform ("CACHE COLLECTION: not collecting; not enough garbage (%zu < %zu)\n", garbage_byte_size, garbage_threshold);
+        }
+        return;
+    }
+
+    // Synchronize garbage collection with objc_msgSend and other cache readers
+    if (!_collecting_in_critical ()) {
+        // No cache readers in progress - garbage is now deletable
+
+        // Log our progress
+        if (PrintCacheCollection) {
+            _objc_inform ("CACHE COLLECTION: collecting %zu bytes\n", 
+                          garbage_byte_size);
+        }
+        
+        // Dispose all refs now in the garbage
+        while (garbage_count--) {
+            _cache_free_block(garbage_refs[garbage_count]);
+        }
+
+        // Clear the garbage count and total size indicator
+        garbage_count = 0;
+        garbage_byte_size = 0;
+    }
+    else {     
+        // objc_msgSend (or other cache reader) is currently looking in the 
+        // cache and might still be using some garbage.
+        if (PrintCacheCollection) {
+            _objc_inform ("CACHE COLLECTION: not collecting; objc_msgSend in progress\n");
+        }
+    }
+}
+
+
+
+
+
+#if !defined(__LP64__)
+
+/***********************************************************************
+* 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.
+* 
+* fixme with 128 KB regions and 520 B min block size, an allocation
+* bitmap would be only 32 bytes - better than free list?
+* 
+* fixme not 64-bit clean?
+**********************************************************************/
+
+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(cache_entry *);
+}
+
+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;
+
+    OBJC_CHECK_LOCKED(&cacheUpdateLock);
+
+    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)
+{
+    OBJC_CHECK_LOCKED(&cacheUpdateLock);
+    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;
+
+    OBJC_CHECK_LOCKED(&cacheUpdateLock);
+
+    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);
+}
+
+// !defined(__LP64__)
+#endif
+
+
+
+
+
+/***********************************************************************
+* Cache instrumentation and debugging
+**********************************************************************/
+
+#ifdef OBJC_INSTRUMENTED
+enum {
+    CACHE_HISTOGRAM_SIZE       = 512
+};
+
+unsigned int   CacheHitHistogram [CACHE_HISTOGRAM_SIZE];
+unsigned int   CacheMissHistogram [CACHE_HISTOGRAM_SIZE];
+#endif
+
+
+/***********************************************************************
+* _cache_print.
+**********************************************************************/
+static void _cache_print(Cache cache)
+{
+    unsigned int index;
+    unsigned int count;
+
+    count = cache->mask + 1;
+    for (index = 0; index < count; index += 1) {
+        cache_entry *entry = (cache_entry *)cache->buckets[index];
+        if (entry) {
+            if (entry->imp == &_objc_msgForward)
+                printf ("does not recognize: \n");
+            printf ("%s\n", sel_getName(entry->name));
+        }
+    }
+}
+
+
+/***********************************************************************
+* _class_printMethodCaches.
+**********************************************************************/
+__private_extern__ void _class_printMethodCaches(Class cls)
+{
+    if (_cache_isEmpty(_class_getCache(cls))) {
+        printf("no instance-method cache for class %s\n", _class_getName(cls));
+    } else {
+        printf("instance-method cache for class %s:\n", _class_getName(cls));
+        _cache_print(_class_getCache(cls));
+    }
+
+    if (_cache_isEmpty(_class_getCache(((id)cls)->isa))) {
+        printf("no class-method cache for class %s\n", _class_getName(cls));
+    } else {
+        printf ("class-method cache for class %s:\n", _class_getName(cls));
+        _cache_print(_class_getCache(((id)cls)->isa));
+    }
+}
+
+
+#if 0
+#warning fixme
+/***********************************************************************
+* log2u.
+**********************************************************************/
+static unsigned int log2u(unsigned int x)
+{
+    unsigned int log;
+
+    log = 0;
+    while (x >>= 1)
+        log += 1;
+
+    return log;
+}
+
+
+/***********************************************************************
+* _class_printDuplicateCacheEntries.
+**********************************************************************/
+void _class_printDuplicateCacheEntries(BOOL detail)
+{
+    NXHashState state;
+    Class cls;
+    unsigned int duplicates;
+    unsigned int index1;
+    unsigned int index2;
+    unsigned int mask;
+    unsigned int count;
+    unsigned int isMeta;
+    Cache cache;
+
+
+    printf ("Checking for duplicate cache entries \n");
+
+    // Outermost loop - iterate over all classes
+    state = NXInitHashState (class_hash);
+    duplicates = 0;
+    while (NXNextHashState (class_hash, &state, (void **) &cls))
+    {
+        // Control loop - do given class' cache, then its isa's cache
+        for (isMeta = 0; isMeta <= 1; isMeta += 1)
+        {
+            // Select cache of interest and make sure it exists
+            cache = _class_getCache(isMeta ? ((id)cls)->isa : cls);
+            if (_cache_isEmpty(cache))
+                continue;
+
+            // Middle loop - check each entry in the given cache
+            mask  = cache->mask;
+            count = mask + 1;
+            for (index1 = 0; index1 < count; index1 += 1)
+            {
+                // Skip invalid entry
+                if (!cache->buckets[index1])
+                    continue;
+
+                // Inner loop - check that given entry matches no later entry
+                for (index2 = index1 + 1; index2 < count; index2 += 1)
+                {
+                    // Skip invalid entry
+                    if (!cache->buckets[index2])
+                        continue;
+
+                    // Check for duplication by method name comparison
+                    if (strcmp ((char *) cache->buckets[index1]->name),
+                                (char *) cache->buckets[index2]->name)) == 0)
+                    {
+                        if (detail)
+                            printf ("%s %s\n", _class_getName(cls), sel_getName(cache->buckets[index1]->name));
+                        duplicates += 1;
+                        break;
+                    }
+                }
+            }
+        }
+    }
+
+    // Log the findings
+    printf ("duplicates = %d\n", duplicates);
+    printf ("total cache fills = %d\n", totalCacheFills);
+}
+
+
+/***********************************************************************
+* PrintCacheHeader.
+**********************************************************************/
+static void PrintCacheHeader(void)
+{
+#ifdef OBJC_INSTRUMENTED
+    printf ("Cache  Cache  Slots  Avg    Max   AvgS  MaxS  AvgS  MaxS  TotalD   AvgD  MaxD  TotalD   AvgD  MaxD  TotD  AvgD  MaxD\n");
+    printf ("Size   Count  Used   Used   Used  Hit   Hit   Miss  Miss  Hits     Prbs  Prbs  Misses   Prbs  Prbs  Flsh  Flsh  Flsh\n");
+    printf ("-----  -----  -----  -----  ----  ----  ----  ----  ----  -------  ----  ----  -------  ----  ----  ----  ----  ----\n");
+#else
+    printf ("Cache  Cache  Slots  Avg    Max   AvgS  MaxS  AvgS  MaxS\n");
+    printf ("Size   Count  Used   Used   Used  Hit   Hit   Miss  Miss\n");
+    printf ("-----  -----  -----  -----  ----  ----  ----  ----  ----\n");
+#endif
+}
+
+
+/***********************************************************************
+* PrintCacheInfo.
+**********************************************************************/
+static void PrintCacheInfo(unsigned int cacheSize,
+                           unsigned int cacheCount,
+                           unsigned int slotsUsed,
+                           float avgUsed, unsigned int maxUsed,
+                           float avgSHit, unsigned int maxSHit,
+                           float avgSMiss, unsigned int maxSMiss
+#ifdef OBJC_INSTRUMENTED
+                           , unsigned int totDHits,
+                           float avgDHit,
+                           unsigned int maxDHit,
+                           unsigned int totDMisses,
+                           float avgDMiss,
+                           unsigned int maxDMiss,
+                           unsigned int totDFlsh,
+                           float avgDFlsh,
+                           unsigned int maxDFlsh
+#endif
+                           )
+{
+#ifdef OBJC_INSTRUMENTED
+    printf ("%5u  %5u  %5u  %5.1f  %4u  %4.1f  %4u  %4.1f  %4u  %7u  %4.1f  %4u  %7u  %4.1f  %4u  %4u  %4.1f  %4u\n",
+#else
+            printf ("%5u  %5u  %5u  %5.1f  %4u  %4.1f  %4u  %4.1f  %4u\n",
+#endif
+                    cacheSize, cacheCount, slotsUsed, avgUsed, maxUsed, avgSHit, maxSHit, avgSMiss, maxSMiss
+#ifdef OBJC_INSTRUMENTED
+                    , totDHits, avgDHit, maxDHit, totDMisses, avgDMiss, maxDMiss, totDFlsh, avgDFlsh, maxDFlsh
+#endif
+                    );
+            
+}
+
+
+#ifdef OBJC_INSTRUMENTED
+/***********************************************************************
+* PrintCacheHistogram.  Show the non-zero entries from the specified
+* cache histogram.
+**********************************************************************/
+static void PrintCacheHistogram(char *title,
+                                unsigned int *firstEntry,
+                                unsigned int entryCount)
+{
+    unsigned int index;
+    unsigned int *thisEntry;
+
+    printf ("%s\n", title);
+    printf ("    Probes    Tally\n");
+    printf ("    ------    -----\n");
+    for (index = 0, thisEntry = firstEntry;
+         index < entryCount;
+         index += 1, thisEntry += 1)
+    {
+        if (*thisEntry == 0)
+            continue;
+
+        printf ("    %6d    %5d\n", index, *thisEntry);
+    }
+}
+#endif
+
+
+/***********************************************************************
+* _class_printMethodCacheStatistics.
+**********************************************************************/
+
+#define MAX_LOG2_SIZE   32
+#define MAX_CHAIN_SIZE  100
+
+void _class_printMethodCacheStatistics(void)
+{
+    unsigned int isMeta;
+    unsigned int index;
+    NXHashState state;
+    Class cls;
+    unsigned int totalChain;
+    unsigned int totalMissChain;
+    unsigned int maxChain;
+    unsigned int maxMissChain;
+    unsigned int classCount;
+    unsigned int negativeEntryCount;
+    unsigned int cacheExpandCount;
+    unsigned int cacheCountBySize[2][MAX_LOG2_SIZE]        = {{0}};
+    unsigned int totalEntriesBySize[2][MAX_LOG2_SIZE]      = {{0}};
+    unsigned int maxEntriesBySize[2][MAX_LOG2_SIZE]        = {{0}};
+    unsigned int totalChainBySize[2][MAX_LOG2_SIZE]        = {{0}};
+    unsigned int totalMissChainBySize[2][MAX_LOG2_SIZE]    = {{0}};
+    unsigned int totalMaxChainBySize[2][MAX_LOG2_SIZE]     = {{0}};
+    unsigned int totalMaxMissChainBySize[2][MAX_LOG2_SIZE] = {{0}};
+    unsigned int maxChainBySize[2][MAX_LOG2_SIZE]          = {{0}};
+    unsigned int maxMissChainBySize[2][MAX_LOG2_SIZE]      = {{0}};
+    unsigned int chainCount[MAX_CHAIN_SIZE]                = {0};
+    unsigned int missChainCount[MAX_CHAIN_SIZE]            = {0};
+#ifdef OBJC_INSTRUMENTED
+    unsigned int hitCountBySize[2][MAX_LOG2_SIZE]          = {{0}};
+    unsigned int hitProbesBySize[2][MAX_LOG2_SIZE]         = {{0}};
+    unsigned int maxHitProbesBySize[2][MAX_LOG2_SIZE]      = {{0}};
+    unsigned int missCountBySize[2][MAX_LOG2_SIZE]         = {{0}};
+    unsigned int missProbesBySize[2][MAX_LOG2_SIZE]        = {{0}};
+    unsigned int maxMissProbesBySize[2][MAX_LOG2_SIZE]     = {{0}};
+    unsigned int flushCountBySize[2][MAX_LOG2_SIZE]        = {{0}};
+    unsigned int flushedEntriesBySize[2][MAX_LOG2_SIZE]    = {{0}};
+    unsigned int maxFlushedEntriesBySize[2][MAX_LOG2_SIZE] = {{0}};
+#endif
+
+    printf ("Printing cache statistics\n");
+
+    // Outermost loop - iterate over all classes
+    state = NXInitHashState (class_hash);
+    classCount = 0;
+    negativeEntryCount = 0;
+    cacheExpandCount = 0;
+    while (NXNextHashState (class_hash, &state, (void **) &cls))
+    {
+        // Tally classes
+        classCount += 1;
+
+        // Control loop - do given class' cache, then its isa's cache
+        for (isMeta = 0; isMeta <= 1; isMeta += 1)
+        {
+            Cache cache;
+            unsigned int mask;
+            unsigned int log2Size;
+            unsigned int entryCount;
+
+            // Select cache of interest
+            cache = _class_getCache(isMeta ? ((id)cls)->isa : cls);
+
+            // Ignore empty cache... should we?
+            if (_cache_isEmpty(cache))
+                continue;
+
+            // Middle loop - do each entry in the given cache
+            mask = cache->mask;
+            entryCount = 0;
+            totalChain = 0;
+            totalMissChain = 0;
+            maxChain = 0;
+            maxMissChain = 0;
+            for (index = 0; index < mask + 1; index += 1)
+            {
+                cache_entry **buckets;
+                cache_entry *entry;
+                unsigned int hash;
+                unsigned int methodChain;
+                unsigned int methodMissChain;
+                unsigned int index2;
+
+                // If entry is invalid, the only item of
+                // interest is that future insert hashes
+                // to this entry can use it directly.
+                buckets = (cache_entry **)cache->buckets;
+                if (!buckets[index])
+                {
+                    missChainCount[0] += 1;
+                    continue;
+                }
+
+                entry = buckets[index];
+
+                // Tally valid entries
+                entryCount += 1;
+
+                // Tally "forward::" entries
+                if (entry->imp == &_objc_msgForward)
+                    negativeEntryCount += 1;
+
+                // Calculate search distance (chain length) for this method
+                // The chain may wrap around to the beginning of the table.
+                hash = CACHE_HASH(entry->name, mask);
+                if (index >= hash) methodChain = index - hash;
+                else methodChain = (mask+1) + index - hash;
+
+                // Tally chains of this length
+                if (methodChain < MAX_CHAIN_SIZE)
+                    chainCount[methodChain] += 1;
+
+                // Keep sum of all chain lengths
+                totalChain += methodChain;
+
+                // Record greatest chain length
+                if (methodChain > maxChain)
+                    maxChain = methodChain;
+
+                // Calculate search distance for miss that hashes here
+                index2 = index;
+                while (buckets[index2])
+                {
+                    index2 += 1;
+                    index2 &= mask;
+                }
+                methodMissChain = ((index2 - index) & mask);
+
+                // Tally miss chains of this length
+                if (methodMissChain < MAX_CHAIN_SIZE)
+                    missChainCount[methodMissChain] += 1;
+
+                // Keep sum of all miss chain lengths in this class
+                totalMissChain += methodMissChain;
+
+                // Record greatest miss chain length
+                if (methodMissChain > maxMissChain)
+                    maxMissChain = methodMissChain;
+            }
+
+            // Factor this cache into statistics about caches of the same
+            // type and size (all caches are a power of two in size)
+            log2Size = log2u (mask + 1);
+            cacheCountBySize[isMeta][log2Size] += 1;
+            totalEntriesBySize[isMeta][log2Size] += entryCount;
+            if (entryCount > maxEntriesBySize[isMeta][log2Size])
+                maxEntriesBySize[isMeta][log2Size] = entryCount;
+            totalChainBySize[isMeta][log2Size] += totalChain;
+            totalMissChainBySize[isMeta][log2Size] += totalMissChain;
+            totalMaxChainBySize[isMeta][log2Size] += maxChain;
+            totalMaxMissChainBySize[isMeta][log2Size] += maxMissChain;
+            if (maxChain > maxChainBySize[isMeta][log2Size])
+                maxChainBySize[isMeta][log2Size] = maxChain;
+            if (maxMissChain > maxMissChainBySize[isMeta][log2Size])
+                maxMissChainBySize[isMeta][log2Size] = maxMissChain;
+#ifdef OBJC_INSTRUMENTED
+            {
+                CacheInstrumentation *cacheData;
+
+                cacheData = CACHE_INSTRUMENTATION(cache);
+                hitCountBySize[isMeta][log2Size] += cacheData->hitCount;
+                hitProbesBySize[isMeta][log2Size] += cacheData->hitProbes;
+                if (cacheData->maxHitProbes > maxHitProbesBySize[isMeta][log2Size])
+                    maxHitProbesBySize[isMeta][log2Size] = cacheData->maxHitProbes;
+                missCountBySize[isMeta][log2Size] += cacheData->missCount;
+                missProbesBySize[isMeta][log2Size] += cacheData->missProbes;
+                if (cacheData->maxMissProbes > maxMissProbesBySize[isMeta][log2Size])
+                    maxMissProbesBySize[isMeta][log2Size] = cacheData->maxMissProbes;
+                flushCountBySize[isMeta][log2Size] += cacheData->flushCount;
+                flushedEntriesBySize[isMeta][log2Size] += cacheData->flushedEntries;
+                if (cacheData->maxFlushedEntries > maxFlushedEntriesBySize[isMeta][log2Size])
+                    maxFlushedEntriesBySize[isMeta][log2Size] = cacheData->maxFlushedEntries;
+            }
+#endif
+            // Caches start with a power of two number of entries, and grow by doubling, so
+            // we can calculate the number of times this cache has expanded
+            cacheExpandCount += log2Size - INIT_CACHE_SIZE_LOG2;
+        }
+    }
+
+    {
+        unsigned int cacheCountByType[2] = {0};
+        unsigned int totalCacheCount     = 0;
+        unsigned int totalEntries        = 0;
+        unsigned int maxEntries          = 0;
+        unsigned int totalSlots          = 0;
+#ifdef OBJC_INSTRUMENTED
+        unsigned int totalHitCount       = 0;
+        unsigned int totalHitProbes      = 0;
+        unsigned int maxHitProbes        = 0;
+        unsigned int totalMissCount      = 0;
+        unsigned int totalMissProbes     = 0;
+        unsigned int maxMissProbes       = 0;
+        unsigned int totalFlushCount     = 0;
+        unsigned int totalFlushedEntries = 0;
+        unsigned int maxFlushedEntries   = 0;
+#endif
+
+        totalChain = 0;
+        maxChain = 0;
+        totalMissChain = 0;
+        maxMissChain = 0;
+
+        // Sum information over all caches
+        for (isMeta = 0; isMeta <= 1; isMeta += 1)
+        {
+            for (index = 0; index < MAX_LOG2_SIZE; index += 1)
+            {
+                cacheCountByType[isMeta] += cacheCountBySize[isMeta][index];
+                totalEntries += totalEntriesBySize[isMeta][index];
+                totalSlots += cacheCountBySize[isMeta][index] * (1 << index);
+                totalChain += totalChainBySize[isMeta][index];
+                if (maxEntriesBySize[isMeta][index] > maxEntries)
+                    maxEntries = maxEntriesBySize[isMeta][index];
+                if (maxChainBySize[isMeta][index] > maxChain)
+                    maxChain   = maxChainBySize[isMeta][index];
+                totalMissChain += totalMissChainBySize[isMeta][index];
+                if (maxMissChainBySize[isMeta][index] > maxMissChain)
+                    maxMissChain = maxMissChainBySize[isMeta][index];
+#ifdef OBJC_INSTRUMENTED
+                totalHitCount += hitCountBySize[isMeta][index];
+                totalHitProbes += hitProbesBySize[isMeta][index];
+                if (maxHitProbesBySize[isMeta][index] > maxHitProbes)
+                    maxHitProbes = maxHitProbesBySize[isMeta][index];
+                totalMissCount += missCountBySize[isMeta][index];
+                totalMissProbes += missProbesBySize[isMeta][index];
+                if (maxMissProbesBySize[isMeta][index] > maxMissProbes)
+                    maxMissProbes = maxMissProbesBySize[isMeta][index];
+                totalFlushCount += flushCountBySize[isMeta][index];
+                totalFlushedEntries += flushedEntriesBySize[isMeta][index];
+                if (maxFlushedEntriesBySize[isMeta][index] > maxFlushedEntries)
+                    maxFlushedEntries = maxFlushedEntriesBySize[isMeta][index];
+#endif
+            }
+
+            totalCacheCount += cacheCountByType[isMeta];
+        }
+
+        // Log our findings
+        printf ("There are %u classes\n", classCount);
+
+        for (isMeta = 0; isMeta <= 1; isMeta += 1)
+        {
+            // Number of this type of class
+            printf    ("\nThere are %u %s-method caches, broken down by size (slot count):\n",
+                       cacheCountByType[isMeta],
+                       isMeta ? "class" : "instance");
+
+            // Print header
+            PrintCacheHeader ();
+
+            // Keep format consistent even if there are caches of this kind
+            if (cacheCountByType[isMeta] == 0)
+            {
+                printf ("(none)\n");
+                continue;
+            }
+
+            // Usage information by cache size
+            for (index = 0; index < MAX_LOG2_SIZE; index += 1)
+            {
+                unsigned int cacheCount;
+                unsigned int cacheSlotCount;
+                unsigned int cacheEntryCount;
+
+                // Get number of caches of this type and size
+                cacheCount = cacheCountBySize[isMeta][index];
+                if (cacheCount == 0)
+                    continue;
+
+                // Get the cache slot count and the total number of valid entries
+                cacheSlotCount  = (1 << index);
+                cacheEntryCount = totalEntriesBySize[isMeta][index];
+
+                // Give the analysis
+                PrintCacheInfo (cacheSlotCount,
+                                cacheCount,
+                                cacheEntryCount,
+                                (float) cacheEntryCount / (float) cacheCount,
+                                maxEntriesBySize[isMeta][index],
+                                (float) totalChainBySize[isMeta][index] / (float) cacheEntryCount,
+                                maxChainBySize[isMeta][index],
+                                (float) totalMissChainBySize[isMeta][index] / (float) (cacheCount * cacheSlotCount),
+                                maxMissChainBySize[isMeta][index]
+#ifdef OBJC_INSTRUMENTED
+                                , hitCountBySize[isMeta][index],
+                                hitCountBySize[isMeta][index] ?
+                                (float) hitProbesBySize[isMeta][index] / (float) hitCountBySize[isMeta][index] : 0.0,
+                                maxHitProbesBySize[isMeta][index],
+                                missCountBySize[isMeta][index],
+                                missCountBySize[isMeta][index] ?
+                                (float) missProbesBySize[isMeta][index] / (float) missCountBySize[isMeta][index] : 0.0,
+                                maxMissProbesBySize[isMeta][index],
+                                flushCountBySize[isMeta][index],
+                                flushCountBySize[isMeta][index] ?
+                                (float) flushedEntriesBySize[isMeta][index] / (float) flushCountBySize[isMeta][index] : 0.0,
+                                maxFlushedEntriesBySize[isMeta][index]
+#endif
+                                );
+            }
+        }
+
+        // Give overall numbers
+        printf ("\nCumulative:\n");
+        PrintCacheHeader ();
+        PrintCacheInfo (totalSlots,
+                        totalCacheCount,
+                        totalEntries,
+                        (float) totalEntries / (float) totalCacheCount,
+                        maxEntries,
+                        (float) totalChain / (float) totalEntries,
+                        maxChain,
+                        (float) totalMissChain / (float) totalSlots,
+                        maxMissChain
+#ifdef OBJC_INSTRUMENTED
+                        , totalHitCount,
+                        totalHitCount ?
+                        (float) totalHitProbes / (float) totalHitCount : 0.0,
+                        maxHitProbes,
+                        totalMissCount,
+                        totalMissCount ?
+                        (float) totalMissProbes / (float) totalMissCount : 0.0,
+                        maxMissProbes,
+                        totalFlushCount,
+                        totalFlushCount ?
+                        (float) totalFlushedEntries / (float) totalFlushCount : 0.0,
+                        maxFlushedEntries
+#endif
+                        );
+
+        printf ("\nNumber of \"forward::\" entries: %d\n", negativeEntryCount);
+        printf ("Number of cache expansions: %d\n", cacheExpandCount);
+#ifdef OBJC_INSTRUMENTED
+        printf ("flush_caches:   total calls  total visits  average visits  max visits  total classes  visits/class\n");
+        printf ("                -----------  ------------  --------------  ----------  -------------  -------------\n");
+        printf ("  linear        %11u  %12u  %14.1f  %10u  %13u  %12.2f\n",
+                LinearFlushCachesCount,
+                LinearFlushCachesVisitedCount,
+                LinearFlushCachesCount ?
+                (float) LinearFlushCachesVisitedCount / (float) LinearFlushCachesCount : 0.0,
+                MaxLinearFlushCachesVisitedCount,
+                LinearFlushCachesVisitedCount,
+                1.0);
+        printf ("  nonlinear     %11u  %12u  %14.1f  %10u  %13u  %12.2f\n",
+                NonlinearFlushCachesCount,
+                NonlinearFlushCachesVisitedCount,
+                NonlinearFlushCachesCount ?
+                (float) NonlinearFlushCachesVisitedCount / (float) NonlinearFlushCachesCount : 0.0,
+                MaxNonlinearFlushCachesVisitedCount,
+                NonlinearFlushCachesClassCount,
+                NonlinearFlushCachesClassCount ?
+                (float) NonlinearFlushCachesVisitedCount / (float) NonlinearFlushCachesClassCount : 0.0);
+        printf ("  ideal         %11u  %12u  %14.1f  %10u  %13u  %12.2f\n",
+                LinearFlushCachesCount + NonlinearFlushCachesCount,
+                IdealFlushCachesCount,
+                LinearFlushCachesCount + NonlinearFlushCachesCount ?
+                (float) IdealFlushCachesCount / (float) (LinearFlushCachesCount + NonlinearFlushCachesCount) : 0.0,
+                MaxIdealFlushCachesCount,
+                LinearFlushCachesVisitedCount + NonlinearFlushCachesClassCount,
+                LinearFlushCachesVisitedCount + NonlinearFlushCachesClassCount ?
+                (float) IdealFlushCachesCount / (float) (LinearFlushCachesVisitedCount + NonlinearFlushCachesClassCount) : 0.0);
+
+        PrintCacheHistogram ("\nCache hit histogram:",  &CacheHitHistogram[0],  CACHE_HISTOGRAM_SIZE);
+        PrintCacheHistogram ("\nCache miss histogram:", &CacheMissHistogram[0], CACHE_HISTOGRAM_SIZE);
+#endif
+
+#if 0
+        printf ("\nLookup chains:");
+        for (index = 0; index < MAX_CHAIN_SIZE; index += 1)
+        {
+            if (chainCount[index] != 0)
+                printf ("  %u:%u", index, chainCount[index]);
+        }
+
+        printf ("\nMiss chains:");
+        for (index = 0; index < MAX_CHAIN_SIZE; index += 1)
+        {
+            if (missChainCount[index] != 0)
+                printf ("  %u:%u", index, missChainCount[index]);
+        }
+
+        printf ("\nTotal memory usage for cache data structures: %lu bytes\n",
+                totalCacheCount * (sizeof(struct objc_cache) - sizeof(cache_entry *)) +
+                totalSlots * sizeof(cache_entry *) +
+                negativeEntryCount * sizeof(cache_entry));
+#endif
+    }
+}
+
+#endif
diff --git a/runtime/objc-class-old.m b/runtime/objc-class-old.m
new file mode 100644 (file)
index 0000000..d9e1b00
--- /dev/null
@@ -0,0 +1,2211 @@
+/*
+ * Copyright (c) 1999-2007 Apple Inc.  All Rights Reserved.
+ * 
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * 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-class-old.m
+* Support for old-ABI classes, methods, and categories.
+**********************************************************************/
+
+#if !__OBJC2__
+
+#define OLD 1
+#import "objc-private.h"
+#import "objc-rtp.h"
+#import "hashtable2.h"
+#import "maptable.h"
+
+#include <sys/param.h>
+#include <assert.h>
+
+// 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.
+__private_extern__ OBJC_DECLARE_LOCK(methodListLock);
+
+
+// Freed objects have their isa set to point to this dummy class.
+// This avoids the need to check for Nil classes in the messenger.
+static const struct old_class freedObjectClass =
+{
+    Nil,                               // isa
+    Nil,                               // super_class
+    "FREED(id)",                       // name
+    0,                         // version
+    0,                         // info
+    0,                         // instance_size
+    NULL,                              // ivars
+    NULL,                              // methodLists
+    (Cache) &_objc_empty_cache,                // cache
+    NULL                               // protocols
+};
+
+static const struct old_class nonexistentObjectClass =
+{
+    Nil,                               // isa
+    Nil,                               // super_class
+    "NONEXISTENT(id)",         // name
+    0,                         // version
+    0,                         // info
+    0,                         // instance_size
+    NULL,                              // ivars
+    NULL,                              // methodLists
+    (Cache) &_objc_empty_cache,                // cache
+    NULL                               // protocols
+};
+
+
+/***********************************************************************
+* _class_getFreedObjectClass.  Return a pointer to the dummy freed
+* object class.  Freed objects get their isa pointers replaced with
+* a pointer to the freedObjectClass, so that we can catch usages of
+* the freed object.
+**********************************************************************/
+__private_extern__ Class _class_getFreedObjectClass(void)
+{
+    return (Class)&freedObjectClass;
+}
+
+
+/***********************************************************************
+* _class_getNonexistentClass.  Return a pointer to the dummy nonexistent
+* object class.  This is used when, for example, mapping the class
+* refs for an image, and the class can not be found, so that we can
+* catch later uses of the non-existent class.
+**********************************************************************/
+__private_extern__ Class _class_getNonexistentObjectClass(void)
+{
+    return (Class)&nonexistentObjectClass;
+}
+
+
+/***********************************************************************
+* _objc_getFreedObjectClass.  Return a pointer to the dummy freed
+* object class.  Freed objects get their isa pointers replaced with
+* a pointer to the freedObjectClass, so that we can catch usages of
+* the freed object.
+**********************************************************************/
+Class _objc_getFreedObjectClass(void)
+{
+    return _class_getFreedObjectClass();
+}
+
+
+static void allocateExt(struct old_class *cls)
+{
+    if (! (cls->info & CLS_EXT)) {
+        _objc_inform("class '%s' needs to be recompiled", cls->name);
+        return;
+    } 
+    if (!cls->ext) {
+        uint32_t size = (uint32_t)sizeof(struct old_class_ext);
+        cls->ext = _calloc_internal(size, 1);
+        cls->ext->size = size;
+    }
+}
+
+
+static inline struct old_method *_findNamedMethodInList(struct old_method_list * mlist, const char *meth_name) {
+    int i;
+    if (!mlist) return NULL;
+    for (i = 0; i < mlist->method_count; i++) {
+        struct old_method *m = &mlist->method_list[i];
+        if (*((const char *)m->method_name) == *meth_name && 0 == strcmp((const char *)(m->method_name), meth_name)) {
+            return m;
+        }
+    }
+    return NULL;
+}
+
+
+/***********************************************************************
+* fixupSelectorsInMethodList
+* Uniques selectors in the given method list.
+* Also replaces imps for GC-ignored selectors
+* 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.
+**********************************************************************/
+static struct old_method_list *fixupSelectorsInMethodList(struct old_class *cls, struct old_method_list *mlist)
+{
+    int i;
+    size_t size;
+    struct old_method *method;
+    struct old_method_list *old_mlist; 
+    
+    if ( ! mlist ) return NULL;
+    if ( mlist->obsolete != _OBJC_FIXED_UP ) {
+        BOOL isBundle = (cls->info & CLS_FROM_BUNDLE) ? YES : NO;
+        if (!isBundle) {
+            old_mlist = mlist;
+            size = sizeof(struct old_method_list) - sizeof(struct old_method) + old_mlist->method_count * sizeof(struct old_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.
+
+            if (method->method_name == (SEL)kRTAddress_ignoredSelector) {
+                method->method_imp = (IMP)&_objc_ignored_method;
+            }
+        }
+        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 old_method_list *mlist;
+* OBJC_LOCK(&methodListLock);
+* while ((mlist = nextMethodList(cls, &iterator))) {
+*     // do something with mlist
+* }
+* OBJC_UNLOCK(&methodListLock);
+**********************************************************************/
+static struct old_method_list *nextMethodList(struct old_class *cls,
+                                               void **it)
+{
+    uintptr_t index = *(uintptr_t *)it;
+    struct old_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 old_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 struct old_method *_findMethodInList(struct old_method_list * mlist, SEL sel) {
+    int i;
+    if (!mlist) return NULL;
+    for (i = 0; i < mlist->method_count; i++) {
+        struct old_method *m = &mlist->method_list[i];
+        if (m->method_name == sel) {
+            return m;
+        }
+    }
+    return NULL;
+}
+
+static inline struct old_method * _findMethodInClass(struct old_class *cls, SEL sel) __attribute__((always_inline));
+static inline struct old_method * _findMethodInClass(struct old_class *cls, SEL sel) {
+    // 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))) {
+    //     struct old_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 old_method_list **mlistp;
+        mlistp = (struct old_method_list **)&cls->methodLists;
+        if ((*mlistp)->obsolete != _OBJC_FIXED_UP) {
+            *mlistp = fixupSelectorsInMethodList(cls, *mlistp);
+        }
+        return _findMethodInList(*mlistp, sel);
+    }
+    else {
+        // Multiple method lists.
+        struct old_method_list **mlistp;
+        for (mlistp = cls->methodLists; 
+             *mlistp != NULL  &&  *mlistp != END_OF_METHODS_LIST; 
+             mlistp++) 
+        {
+            struct old_method *m;
+            if ((*mlistp)->obsolete != _OBJC_FIXED_UP) {
+                *mlistp = fixupSelectorsInMethodList(cls, *mlistp);
+            }
+            m = _findMethodInList(*mlistp, sel);
+            if (m) return m;
+        }
+        return NULL;
+    }
+}
+
+static inline struct old_method * _getMethod(struct old_class *cls, SEL sel) {
+    for (; cls; cls = cls->super_class) {
+        struct old_method *m;
+        m = _findMethodInClass(cls, sel);
+        if (m) return m;
+    }
+    return NULL;
+}
+
+
+// fixme for gc debugging temporary use
+__private_extern__ IMP findIMPInClass(struct old_class *cls, SEL sel)
+{
+    struct old_method *m = _findMethodInClass(cls, sel);
+    if (m) return m->method_imp;
+    else return NULL;
+}
+
+
+
+/***********************************************************************
+* class_getVariable.  Return the named instance variable.
+**********************************************************************/
+__private_extern__ 
+Ivar _class_getVariable(Class cls_gen, const char *name)
+{
+    struct old_class *cls = _class_asOld(cls_gen);
+
+    for (; cls != Nil; cls = cls->super_class) {
+        int i;
+
+        // Skip class having no ivars
+        if (!cls->ivars) continue;
+
+        for (i = 0; i < cls->ivars->ivar_count; i++) {
+            // Check this ivar's name.  Be careful because the
+            // compiler generates ivar entries with NULL ivar_name
+            // (e.g. for anonymous bit fields).
+            struct old_ivar *ivar = &cls->ivars->ivar_list[i];
+            if (ivar->ivar_name  &&  0 == strcmp(name, ivar->ivar_name)) {
+                return (Ivar)ivar;
+            }
+        }
+    }
+
+    // Not found
+    return NULL;
+}
+
+
+/***********************************************************************
+* class_getPropertyList. Return the class's property list
+* Locking: classLock must be held by the caller
+**********************************************************************/
+static struct objc_property_list *
+nextPropertyList(struct old_class *cls, uintptr_t *indexp)
+{
+    struct objc_property_list *result = NULL;
+
+    OBJC_CHECK_LOCKED(&classLock);
+    if (! ((cls->info & CLS_EXT)  &&  cls->ext)) {
+        // No class ext
+        result = NULL;
+    } else if (!cls->ext->propertyLists) {
+        // No property lists
+        result = NULL;
+    } else if (cls->info & CLS_NO_PROPERTY_ARRAY) {
+        // Only one property list
+        if (*indexp == 0) {
+            result = (struct objc_property_list *)cls->ext->propertyLists;
+        } else {
+            result = NULL;
+        }
+    } else {
+        // More than one property list
+        result = cls->ext->propertyLists[*indexp];
+    }
+
+    if (result) {
+        ++*indexp;
+        return result;
+    } else {
+        *indexp = 0;
+        return NULL;
+    }
+}
+
+
+/***********************************************************************
+* class_getIvarLayout
+* NULL means all-scanned. "" means non-scanned.
+**********************************************************************/
+const char *
+class_getIvarLayout(Class cls_gen)
+{
+    struct old_class *cls = _class_asOld(cls_gen);
+    if (cls  &&  (cls->info & CLS_EXT)) {
+        return cls->ivar_layout;
+    } else {
+        return NULL;  // conservative scan
+    }
+}
+
+
+/***********************************************************************
+* class_getWeakIvarLayout
+* NULL means no weak ivars.
+**********************************************************************/
+const char *
+class_getWeakIvarLayout(Class cls_gen)
+{
+    struct old_class *cls = _class_asOld(cls_gen);
+    if (cls  &&  (cls->info & CLS_EXT)  &&  cls->ext) {
+        return cls->ext->weak_ivar_layout;
+    } else {
+        return NULL;  // no weak ivars
+    }
+}
+
+
+/***********************************************************************
+* class_setIvarLayout
+* NULL means all-scanned. "" means non-scanned.
+**********************************************************************/
+void class_setIvarLayout(Class cls_gen, const char *layout)
+{
+    struct old_class *cls = _class_asOld(cls_gen);
+    if (!cls) return;
+
+    if (! (cls->info & CLS_EXT)) {
+        _objc_inform("class '%s' needs to be recompiled", cls->name);
+        return;
+    } 
+
+    // fixme leak
+    cls->ivar_layout = layout ? _strdup_internal(layout) : NULL;
+}
+
+
+/***********************************************************************
+* class_setWeakIvarLayout
+* NULL means no weak ivars.
+**********************************************************************/
+void class_setWeakIvarLayout(Class cls_gen, const char *layout)
+{
+    struct old_class *cls = _class_asOld(cls_gen);
+    if (!cls) return;
+
+    OBJC_LOCK(&classLock);
+
+    allocateExt(cls);
+    
+    // fixme leak
+    cls->ext->weak_ivar_layout = layout ? _strdup_internal(layout) : NULL;
+
+    OBJC_UNLOCK(&classLock);
+}
+
+
+/***********************************************************************
+* _class_changeInfo
+* Atomically sets and clears some bits in cls's info field.
+* set and clear must not overlap.
+**********************************************************************/
+__private_extern__ void _class_changeInfo(Class cls, long set, long clear)
+{
+    struct old_class *old = _class_asOld(cls);
+    long newinfo;
+    long oldinfo;
+    do {
+        oldinfo = old->info;
+        newinfo = (oldinfo | set) & ~clear;
+    } while (! OSAtomicCompareAndSwapLong(oldinfo, newinfo, &old->info));
+}
+
+
+/***********************************************************************
+* _class_getInfo
+* Returns YES iff all set bits in get are also set in cls's info field.
+**********************************************************************/
+__private_extern__ BOOL _class_getInfo(Class cls, int get)
+{
+    struct old_class *old = _class_asOld(cls);
+    return ((old->info & get) == get) ? YES : NO;
+}
+
+
+/***********************************************************************
+* _class_setInfo
+* Atomically sets some bits in cls's info field.
+**********************************************************************/
+__private_extern__ void _class_setInfo(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(Class cls, long clear)
+{
+    _class_changeInfo(cls, 0, clear);
+}
+
+
+/***********************************************************************
+* isInitializing
+* Return YES if cls is currently being initialized.
+* The initializing bit is stored in the metaclass only.
+**********************************************************************/
+__private_extern__ BOOL _class_isInitializing(Class cls)
+{
+    return _class_getInfo(_class_getMeta(cls), CLS_INITIALIZING);
+}
+
+
+/***********************************************************************
+* isInitialized
+* Return YES if cls is already initialized.
+* The initialized bit is stored in the metaclass only.
+**********************************************************************/
+__private_extern__ BOOL _class_isInitialized(Class cls)
+{
+    return _class_getInfo(_class_getMeta(cls), CLS_INITIALIZED);
+}
+
+
+/***********************************************************************
+* setInitializing
+* Mark cls as initialization in progress.
+**********************************************************************/
+__private_extern__ void _class_setInitializing(Class cls)
+{
+    _class_setInfo(_class_getMeta(cls), CLS_INITIALIZING);
+}
+
+
+/***********************************************************************
+* setInitialized
+* Atomically mark cls as initialized and not initializing.
+**********************************************************************/
+__private_extern__ void _class_setInitialized(Class cls)
+{
+    _class_changeInfo(_class_getMeta(cls), CLS_INITIALIZED, CLS_INITIALIZING);
+}
+
+
+/***********************************************************************
+* class_setVersion.  Record the specified version with the class.
+**********************************************************************/
+void class_setVersion(Class cls, int version)
+{
+    if (!cls) return;
+    cls->version = version;
+}
+
+/***********************************************************************
+* class_getVersion.  Return the version recorded with the class.
+**********************************************************************/
+int class_getVersion(Class cls)
+{
+    if (!cls) return 0;
+    return (int)cls->version;
+}
+
+
+__private_extern__ Class _class_getMeta(Class cls)
+{
+    if (_class_getInfo(cls, CLS_META)) return cls;
+    else return ((id)cls)->isa;
+}
+
+__private_extern__ BOOL _class_isMetaClass(Class cls)
+{
+    if (!cls) return NO;
+    return _class_getInfo(cls, CLS_META);
+}
+
+
+/***********************************************************************
+* _class_getNonMetaClass. 
+* Return the ordinary class for this class or metaclass. 
+* Used by +initialize. 
+**********************************************************************/
+__private_extern__ Class _class_getNonMetaClass(Class cls)
+{
+    // fixme ick
+    if (_class_isMetaClass(cls)) {
+        if (strncmp(_class_getName(cls), "_%", 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(_class_getName(cls), '%'); // get posee's real name
+            cls = objc_getClass(baseName);
+        } else {
+            cls = objc_getClass(_class_getName(cls));
+        }
+        assert(cls);
+    }
+
+    return cls;
+}
+
+
+__private_extern__ Class _class_getSuperclass(Class cls)
+{
+    if (!cls) return nil;
+    return (Class)cls->super_class;
+}
+
+
+__private_extern__ Cache _class_getCache(Class cls)
+{
+    return cls->cache;
+}
+
+__private_extern__ void _class_setCache(Class cls, Cache cache)
+{
+    cls->cache = cache;
+}
+
+__private_extern__ size_t _class_getInstanceSize(Class cls)
+{
+    if (!cls) return 0;
+    return cls->instance_size;
+}
+
+__private_extern__ const char * _class_getName(Class cls)
+{
+    if (!cls) return "nil";
+    return cls->name;
+}
+
+
+
+__private_extern__ const char *_category_getName(Category cat)
+{
+    return _category_asOld(cat)->category_name;
+}
+
+__private_extern__ const char *_category_getClassName(Category cat)
+{
+    return _category_asOld(cat)->class_name;
+}
+
+__private_extern__ Class _category_getClass(Category cat)
+{
+    return objc_getClass(_category_asOld(cat)->class_name);
+}
+
+__private_extern__ IMP _category_getLoadMethod(Category cat)
+{
+    struct old_method_list *mlist = _category_asOld(cat)->class_methods;
+    if (mlist) {
+        return lookupNamedMethodInMethodList(mlist, "load");
+    } else {
+        return NULL;
+    }
+}
+
+
+
+/***********************************************************************
+* class_nextMethodList.
+* External version of nextMethodList().
+*
+* 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)
+{
+    struct old_method_list *result;
+
+    OBJC_WARN_DEPRECATED;
+
+    OBJC_LOCK(&methodListLock);
+    result = nextMethodList(_class_asOld(cls), it);
+    OBJC_UNLOCK(&methodListLock);
+    return (struct objc_method_list *)result;
+}
+
+
+/***********************************************************************
+* class_addMethods.
+*
+* Formerly class_addInstanceMethods ()
+**********************************************************************/
+OBJC_EXPORT void class_addMethods(Class cls, struct objc_method_list *meths)
+{
+    OBJC_WARN_DEPRECATED;
+
+    // Add the methods.
+    OBJC_LOCK(&methodListLock);
+    _objc_insertMethods(_class_asOld(cls), (struct old_method_list *)meths, NULL);
+    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,
+    // this will still flush it and any of its sub-meta classes.
+    flush_caches (cls, NO);
+}
+
+
+/***********************************************************************
+* class_removeMethods.
+**********************************************************************/
+OBJC_EXPORT void class_removeMethods(Class cls, struct objc_method_list *meths)
+{
+    OBJC_WARN_DEPRECATED;
+
+    // Remove the methods
+    OBJC_LOCK(&methodListLock);
+    _objc_removeMethods(_class_asOld(cls), (struct old_method_list *)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,
+    // this will still flush it and any of its sub-meta classes.
+    flush_caches (cls, NO);
+}
+
+/***********************************************************************
+* 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.
+**********************************************************************/
+__private_extern__ IMP lookupNamedMethodInMethodList(struct old_method_list *mlist, const char *meth_name)
+{
+    struct old_method *m;
+    m = meth_name ? _findNamedMethodInList(mlist, meth_name) : NULL;
+    return (m ? m->method_imp : NULL);
+}
+
+__private_extern__ Method _class_getMethod(Class cls, SEL sel)
+{
+    Method result;
+    
+    OBJC_LOCK(&methodListLock);
+    result = (Method)_getMethod(_class_asOld(cls), sel);
+    OBJC_UNLOCK(&methodListLock);
+
+    return result;
+}
+
+__private_extern__ Method _class_getMethodNoSuper(Class cls, SEL sel)
+{
+    Method result;
+
+    OBJC_LOCK(&methodListLock);
+    result = (Method)_findMethodInClass(_class_asOld(cls), sel);
+    OBJC_UNLOCK(&methodListLock);
+
+    return result;
+}
+
+
+BOOL class_conformsToProtocol(Class cls_gen, Protocol *proto_gen)
+{
+    struct old_class *cls = oldcls(cls_gen);
+    struct old_protocol *proto = oldprotocol(proto_gen);
+
+    if (cls->isa->version >= 3) {
+        struct old_protocol_list *list;
+        for (list = cls->protocols; list != NULL; list = list->next) {
+            int i;
+            for (i = 0; i < list->count; i++) {
+                if (list->list[i] == proto) return YES;
+                if (protocol_conformsToProtocol((Protocol *)list->list[i], proto_gen)) return YES;
+            }
+            if (cls->isa->version <= 4) break;
+        }
+    }
+    return NO;
+}
+
+
+static NXMapTable *    posed_class_hash = NULL;
+
+/***********************************************************************
+* objc_getOrigClass.
+**********************************************************************/
+__private_extern__ Class _objc_getOrigClass(const char *name)
+{
+    Class ret;
+
+    // Look for class among the posers
+    ret = Nil;
+    OBJC_LOCK(&classLock);
+    if (posed_class_hash)
+        ret = (Class) NXMapGet (posed_class_hash, name);
+    OBJC_UNLOCK(&classLock);
+    if (ret)
+        return ret;
+
+    // Not a poser.  Do a normal lookup.
+    ret = objc_getClass (name);
+    if (!ret)
+        _objc_inform ("class `%s' not linked into application", name);
+
+    return ret;
+}
+
+Class objc_getOrigClass(const char *name)
+{
+    OBJC_WARN_DEPRECATED;
+    return _objc_getOrigClass(name);
+}
+
+/***********************************************************************
+* _objc_addOrigClass.  This function is only used from class_poseAs.
+* Registers the original class names, before they get obscured by
+* posing, so that [super ..] will work correctly from categories
+* in posing classes and in categories in classes being posed for.
+**********************************************************************/
+static void    _objc_addOrigClass         (struct old_class *origClass)
+{
+    OBJC_LOCK(&classLock);
+
+    // Create the poser's hash table on first use
+    if (!posed_class_hash)
+    {
+        posed_class_hash = NXCreateMapTableFromZone (NXStrValueMapPrototype,
+                                                     8,
+                                                     _objc_internal_zone ());
+    }
+
+    // Add the named class iff it is not already there (or collides?)
+    if (NXMapGet (posed_class_hash, origClass->name) == 0)
+        NXMapInsert (posed_class_hash, origClass->name, origClass);
+
+    OBJC_UNLOCK(&classLock);
+}
+
+
+/***********************************************************************
+* change_class_references
+* Change classrefs and superclass pointers from original to imposter
+* But if copy!=nil, don't change copy->super_class.
+* If changeSuperRefs==YES, also change [super message] classrefs. 
+* Used by class_poseAs and objc_setFutureClass
+* classLock must be locked.
+**********************************************************************/
+__private_extern__
+void change_class_references(struct old_class *imposter, 
+                             struct old_class *original, 
+                             struct old_class *copy, 
+                             BOOL changeSuperRefs)
+{
+    header_info *hInfo;
+    struct old_class *clsObject;
+    NXHashState state;
+
+    // Change all subclasses of the original to point to the imposter.
+    state = NXInitHashState (class_hash);
+    while (NXNextHashState (class_hash, &state, (void **) &clsObject))
+    {
+        while  ((clsObject) && (clsObject != imposter) &&
+                (clsObject != copy))
+        {
+            if (clsObject->super_class == original)
+            {
+                clsObject->super_class = imposter;
+                clsObject->isa->super_class = imposter->isa;
+                // We must flush caches here!
+                break;
+            }
+
+            clsObject = clsObject->super_class;
+        }
+    }
+
+    // Replace the original with the imposter in all class refs
+    // Major loop - process all headers
+    for (hInfo = _objc_headerStart(); hInfo != NULL; hInfo = hInfo->next)
+    {
+        struct old_class **cls_refs;
+        size_t refCount;
+        unsigned int   index;
+
+        // Fix class refs associated with this header
+        cls_refs = _getObjcClassRefs(hInfo, &refCount);
+        if (cls_refs) {
+            for (index = 0; index < refCount; index += 1) {
+                if (cls_refs[index] == original) {
+                    cls_refs[index] = imposter;
+                }
+            }
+        }
+    }
+}
+
+
+/***********************************************************************
+* class_poseAs.
+*
+* !!! class_poseAs () does not currently flush any caches.
+**********************************************************************/
+Class class_poseAs(Class imposter_gen, Class original_gen)
+{
+    struct old_class *imposter = _class_asOld(imposter_gen);
+    struct old_class *original = _class_asOld(original_gen);
+    char *                     imposterNamePtr;
+    struct old_class *                         copy;
+
+    OBJC_WARN_DEPRECATED;
+
+    // Trivial case is easy
+    if (imposter_gen == original_gen)
+        return imposter_gen;
+
+    // Imposter must be an immediate subclass of the original
+    if (imposter->super_class != original) {
+        __objc_error(imposter_gen, 
+                     "[%s poseAs:%s]: target not immediate superclass", 
+                     imposter->name, original->name);
+    }
+
+    // Can't pose when you have instance variables (how could it work?)
+    if (imposter->ivars) {
+        __objc_error(imposter_gen, 
+                     "[%s poseAs:%s]: %s defines new instance variables", 
+                     imposter->name, original->name, imposter->name);
+    }
+
+    // Build a string to use to replace the name of the original class.
+    #define imposterNamePrefix "_%"
+    imposterNamePtr = _malloc_internal(strlen(original->name) + strlen(imposterNamePrefix) + 1);
+    strcpy(imposterNamePtr, imposterNamePrefix);
+    strcat(imposterNamePtr, original->name);
+    #undef imposterNamePrefix
+
+    // We lock the class hashtable, so we are thread safe with respect to
+    // calls to objc_getClass ().  However, the class names are not
+    // changed atomically, nor are all of the subclasses updated
+    // atomically.  I have ordered the operations so that you will
+    // never crash, but you may get inconsistent results....
+
+    // Register the original class so that [super ..] knows
+    // exactly which classes are the "original" classes.
+    _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 = _class_asOld((*_zoneAlloc)((Class)imposter->isa, sizeof(struct old_class), _objc_internal_zone()));
+    memmove(copy, imposter, sizeof(struct old_class));
+
+    OBJC_LOCK(&classLock);
+
+    // Remove both the imposter and the original class.
+    NXHashRemove (class_hash, imposter);
+    NXHashRemove (class_hash, original);
+
+    NXHashInsert (class_hash, copy);
+
+    // Mark the imposter as such
+    _class_setInfo((Class)imposter, CLS_POSING);
+    _class_setInfo((Class)imposter->isa, CLS_POSING);
+
+    // Change the name of the imposter to that of the original class.
+    imposter->name      = original->name;
+    imposter->isa->name = original->isa->name;
+
+    // Also copy the version field to avoid archiving problems.
+    imposter->version = original->version;
+
+    // Change classrefs and superclass pointers
+    // Don't change copy->super_class
+    // Don't change [super ...] messages
+    change_class_references(imposter, original, copy, NO);
+
+    // Change the name of the original class.
+    original->name      = imposterNamePtr + 1;
+    original->isa->name = imposterNamePtr;
+
+    // Restore the imposter and the original class with their new names.
+    NXHashInsert (class_hash, imposter);
+    NXHashInsert (class_hash, original);
+
+    OBJC_UNLOCK(&classLock);
+
+    return imposter_gen;
+}
+
+
+/***********************************************************************
+* flush_caches.  Flush the instance and optionally class method caches
+* of cls and all its subclasses.
+*
+* Specifying Nil for the class "all classes."
+**********************************************************************/
+__private_extern__ void flush_caches(Class target_gen, BOOL flush_meta)
+{
+    NXHashState state;
+    struct old_class *target = _class_asOld(target_gen);
+    struct old_class *clsObject;
+#ifdef OBJC_INSTRUMENTED
+    unsigned int classesVisited;
+    unsigned int subclassCount;
+#endif
+
+    OBJC_LOCK(&classLock);
+    OBJC_LOCK(&cacheUpdateLock);
+
+    // Leaf classes are fastest because there are no subclass caches to flush.
+    // fixme instrument
+    if (target  &&  (target->info & CLS_LEAF)) {
+        _cache_flush ((Class)target);
+        
+        if (!flush_meta) {
+            OBJC_UNLOCK(&cacheUpdateLock);
+            OBJC_UNLOCK(&classLock);
+            return;  // done
+        } else if (target->isa  &&  (target->isa->info & CLS_LEAF)) {
+            _cache_flush ((Class)target->isa);
+            OBJC_UNLOCK(&cacheUpdateLock);
+            OBJC_UNLOCK(&classLock);
+            return;  // done
+        } else {
+            // Reset target and handle it by one of the methods below.
+            target = target->isa;
+            flush_meta = NO;
+            // NOT done
+        }
+    }
+
+    state = NXInitHashState(class_hash);
+
+    // Handle nil and root instance class specially: flush all
+    // instance and class method caches.  Nice that this
+    // loop is linear vs the N-squared loop just below.
+    if (!target  ||  !target->super_class)
+    {
+#ifdef OBJC_INSTRUMENTED
+        LinearFlushCachesCount += 1;
+        classesVisited = 0;
+        subclassCount = 0;
+#endif
+        // Traverse all classes in the hash table
+        while (NXNextHashState(class_hash, &state, (void**)&clsObject))
+        {
+            struct old_class *metaClsObject;
+#ifdef OBJC_INSTRUMENTED
+            classesVisited += 1;
+#endif
+
+            // Skip class that is known not to be a subclass of this root
+            // (the isa pointer of any meta class points to the meta class
+            // of the root).
+            // NOTE: When is an isa pointer of a hash tabled class ever nil?
+            metaClsObject = clsObject->isa;
+            if (target  &&  metaClsObject  &&  target->isa != metaClsObject->isa) {
+                continue;
+            }
+
+#ifdef OBJC_INSTRUMENTED
+            subclassCount += 1;
+#endif
+
+            _cache_flush ((Class)clsObject);
+            if (flush_meta  &&  metaClsObject != NULL) {
+                _cache_flush ((Class)metaClsObject);
+            }
+        }
+#ifdef OBJC_INSTRUMENTED
+        LinearFlushCachesVisitedCount += classesVisited;
+        if (classesVisited > MaxLinearFlushCachesVisitedCount)
+            MaxLinearFlushCachesVisitedCount = classesVisited;
+        IdealFlushCachesCount += subclassCount;
+        if (subclassCount > MaxIdealFlushCachesCount)
+            MaxIdealFlushCachesCount = subclassCount;
+#endif
+
+        OBJC_UNLOCK(&cacheUpdateLock);
+        OBJC_UNLOCK(&classLock);
+        return;
+    }
+
+    // Outer loop - flush any cache that could now get a method from
+    // cls (i.e. the cache associated with cls and any of its subclasses).
+#ifdef OBJC_INSTRUMENTED
+    NonlinearFlushCachesCount += 1;
+    classesVisited = 0;
+    subclassCount = 0;
+#endif
+    while (NXNextHashState(class_hash, &state, (void**)&clsObject))
+    {
+        struct old_class *clsIter;
+
+#ifdef OBJC_INSTRUMENTED
+        NonlinearFlushCachesClassCount += 1;
+#endif
+
+        // Inner loop - Process a given class
+        clsIter = clsObject;
+        while (clsIter)
+        {
+
+#ifdef OBJC_INSTRUMENTED
+            classesVisited += 1;
+#endif
+            // Flush clsObject instance method cache if
+            // clsObject is a subclass of cls, or is cls itself
+            // Flush the class method cache if that was asked for
+            if (clsIter == target)
+            {
+#ifdef OBJC_INSTRUMENTED
+                subclassCount += 1;
+#endif
+                _cache_flush ((Class)clsObject);
+                if (flush_meta)
+                    _cache_flush ((Class)clsObject->isa);
+
+                break;
+
+            }
+
+            // Flush clsObject class method cache if cls is
+            // the meta class of clsObject or of one
+            // of clsObject's superclasses
+            else if (clsIter->isa == target)
+            {
+#ifdef OBJC_INSTRUMENTED
+                subclassCount += 1;
+#endif
+                _cache_flush ((Class)clsObject->isa);
+                break;
+            }
+
+            // Move up superclass chain
+            // else if (_class_isInitialized(clsIter))
+            clsIter = clsIter->super_class;
+
+            // clsIter is not initialized, so its cache
+            // must be empty.  This happens only when
+            // clsIter == clsObject, because
+            // superclasses are initialized before
+            // subclasses, and this loop traverses
+            // from sub- to super- classes.
+            // else
+                // break;
+        }
+    }
+#ifdef OBJC_INSTRUMENTED
+    NonlinearFlushCachesVisitedCount += classesVisited;
+    if (classesVisited > MaxNonlinearFlushCachesVisitedCount)
+        MaxNonlinearFlushCachesVisitedCount = classesVisited;
+    IdealFlushCachesCount += subclassCount;
+    if (subclassCount > MaxIdealFlushCachesCount)
+        MaxIdealFlushCachesCount = subclassCount;
+#endif
+
+    OBJC_UNLOCK(&cacheUpdateLock);
+    OBJC_UNLOCK(&classLock);
+}
+
+
+/***********************************************************************
+* flush_marked_caches. Flush the method cache of any class marked 
+* CLS_FLUSH_CACHE (and all subclasses thereof)
+* fixme instrument
+**********************************************************************/
+__private_extern__ void flush_marked_caches(void)
+{
+    struct old_class *cls;
+    struct old_class *supercls;
+    NXHashState state;
+
+    OBJC_LOCK(&classLock);
+    OBJC_LOCK(&cacheUpdateLock);
+
+    state = NXInitHashState(class_hash);
+    while (NXNextHashState(class_hash, &state, (void**)&cls)) {
+        for (supercls = cls; supercls; supercls = supercls->super_class) {
+            if (supercls->info & CLS_FLUSH_CACHE) {
+                _cache_flush((Class)cls);
+                break;
+            }
+        }
+
+        for (supercls = cls->isa; supercls; supercls = supercls->super_class) {
+            if (supercls->info & CLS_FLUSH_CACHE) {
+                _cache_flush((Class)cls->isa);
+                break;
+            }
+        }
+    }
+
+    state = NXInitHashState(class_hash);
+    while (NXNextHashState(class_hash, &state, (void**)&cls)) {
+        if (cls->info & CLS_FLUSH_CACHE) {
+            _class_clearInfo((Class)cls, CLS_FLUSH_CACHE);            
+        }
+        if (cls->isa->info & CLS_FLUSH_CACHE) {
+            _class_clearInfo((Class)cls->isa, CLS_FLUSH_CACHE);
+        }
+    }
+
+    OBJC_UNLOCK(&cacheUpdateLock);
+    OBJC_UNLOCK(&classLock);
+}
+
+
+/***********************************************************************
+* 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 old_method_list *get_base_method_list(struct old_class *cls) 
+{
+    struct old_method_list **ptr;
+
+    if (!cls->methodLists) return NULL;
+    if (cls->info & CLS_NO_METHOD_ARRAY) return (struct old_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;
+}
+
+
+static IMP _class_getLoadMethod_nocheck(struct old_class *cls)
+{
+    struct old_method_list *mlist;
+    mlist = get_base_method_list(cls->isa);
+    if (mlist) {
+        return lookupNamedMethodInMethodList (mlist, "load");
+    }
+    return NULL;
+}
+
+
+__private_extern__ BOOL _class_hasLoadMethod(Class cls)
+{
+    if (oldcls(cls)->isa->info & CLS_HAS_LOAD_METHOD) return YES;
+    return (_class_getLoadMethod_nocheck(oldcls(cls)) ? YES : NO);
+}
+
+
+/***********************************************************************
+* _class_getLoadMethod
+* Returns cls's +load implementation, or NULL if it doesn't have one.
+**********************************************************************/
+__private_extern__ IMP _class_getLoadMethod(Class cls_gen)
+{
+    struct old_class *cls = _class_asOld(cls_gen);
+    if (cls->isa->info & CLS_HAS_LOAD_METHOD) {
+        return _class_getLoadMethod_nocheck(cls);
+    }
+    return NULL;
+}
+
+
+__private_extern__ BOOL _class_shouldGrowCache(Class cls)
+{
+    return _class_getInfo(cls, CLS_GROW_CACHE);
+}
+
+__private_extern__ void _class_setGrowCache(Class cls, BOOL grow)
+{
+    if (grow) _class_setInfo(cls, CLS_GROW_CACHE);
+    else _class_clearInfo(cls, CLS_GROW_CACHE);
+}
+
+__private_extern__ BOOL _class_hasCxxStructorsNoSuper(Class cls)
+{
+    return _class_getInfo(cls, CLS_HAS_CXX_STRUCTORS);
+}
+
+__private_extern__ BOOL _class_shouldFinalizeOnMainThread(Class cls) {
+    return _class_getInfo(cls, CLS_FINALIZE_ON_MAIN_THREAD);
+}
+
+__private_extern__ void _class_setFinalizeOnMainThread(Class cls) {
+    _class_setInfo(cls, CLS_FINALIZE_ON_MAIN_THREAD);
+}
+
+
+__private_extern__ struct old_ivar *_ivar_asOld(Ivar ivar) 
+{
+    return (struct old_ivar *)ivar;
+}
+
+ptrdiff_t ivar_getOffset(Ivar ivar)
+{
+    return _ivar_asOld(ivar)->ivar_offset;
+}
+
+const char *ivar_getName(Ivar ivar)
+{
+    return _ivar_asOld(ivar)->ivar_name;
+}
+
+const char *ivar_getTypeEncoding(Ivar ivar)
+{
+    return _ivar_asOld(ivar)->ivar_type;
+}
+
+
+IMP method_getImplementation(Method m)
+{
+    if (!m) return NULL;
+    return _method_asOld(m)->method_imp;
+}
+
+SEL method_getName(Method m)
+{
+    if (!m) return NULL;
+    return _method_asOld(m)->method_name;
+}
+
+const char *method_getTypeEncoding(Method m)
+{
+    if (!m) return NULL;
+    return _method_asOld(m)->method_types;
+}
+
+IMP method_setImplementation(Method m, IMP imp)
+{
+    IMP old = _method_asOld(m)->method_imp;
+    _method_asOld(m)->method_imp = imp;
+    return old;
+}
+
+
+struct objc_method_description * method_getDescription(Method m)
+{
+    if (!m) return NULL;
+    return (struct objc_method_description *)oldmethod(m);
+}
+
+
+/***********************************************************************
+* class_addMethod
+**********************************************************************/
+static IMP _class_addMethod(Class cls_gen, SEL name, IMP imp, 
+                            const char *types, BOOL replace)
+{
+    struct old_class *cls = oldcls(cls_gen);
+    IMP result = NULL;
+
+    if (!types) types = "";
+
+    OBJC_LOCK(&methodListLock);
+
+    struct old_method *m;
+    if ((m = _findMethodInClass(cls, name))) {
+        // already exists
+        // fixme atomic
+        result = method_getImplementation((Method)m);
+        if (replace) {
+            method_setImplementation((Method)m, imp);
+        }
+    } else {
+        // fixme could be faster
+        struct old_method_list *mlist = 
+            _calloc_internal(sizeof(struct old_method_list), 1);
+        mlist->obsolete = _OBJC_FIXED_UP;
+        mlist->method_count = 1;
+        mlist->method_list[0].method_name = name;
+        mlist->method_list[0].method_imp = imp;
+        mlist->method_list[0].method_types = _strdup_internal(types);
+        
+        _objc_insertMethods(cls, mlist, NULL);
+        if (!(cls->info & CLS_CONSTRUCTING)) {
+            flush_caches((Class)cls, NO);
+        } else {
+            // in-construction class has no subclasses
+            flush_cache((Class)cls);
+        }
+        result = NULL;
+    }
+
+    OBJC_UNLOCK(&methodListLock);
+
+    return result;
+}
+
+
+/***********************************************************************
+* class_addMethod
+**********************************************************************/
+BOOL class_addMethod(Class cls, SEL name, IMP imp, const char *types)
+{
+    if (!cls) return NO;
+
+    IMP old = _class_addMethod(cls, name, imp, types, NO);
+    return old ? NO : YES;
+}
+
+
+/***********************************************************************
+* class_replaceMethod
+**********************************************************************/
+IMP class_replaceMethod(Class cls, SEL name, IMP imp, const char *types)
+{
+    if (!cls) return NULL;
+
+    return _class_addMethod(cls, name, imp, types, YES);
+}
+
+
+/***********************************************************************
+* class_addIvar
+**********************************************************************/
+BOOL class_addIvar(Class cls_gen, const char *name, size_t size, 
+                   uint8_t alignment, const char *type)
+{
+    struct old_class *cls = oldcls(cls_gen);
+    BOOL result = YES;
+
+    if (!cls) return NO;
+    if (ISMETA(cls)) return NO;
+    if (!(cls->info & CLS_CONSTRUCTING)) return NO;
+
+    if (!type) type = "";
+    if (name  &&  0 == strcmp(name, "")) name = NULL;
+    
+    OBJC_LOCK(&classLock);
+
+    // Check for existing ivar with this name
+    // fixme check superclasses?
+    if (cls->ivars) {
+        int i;
+        for (i = 0; i < cls->ivars->ivar_count; i++) {
+            if (0 == strcmp(cls->ivars->ivar_list[i].ivar_name, name)) {
+                result = NO;
+                break;
+            }
+        }
+    }
+
+    if (result) {
+        struct old_ivar_list *old = cls->ivars;
+        size_t oldSize;
+        int newCount;
+        struct old_ivar *ivar;
+        size_t alignBytes;
+        size_t misalign;
+        
+        if (old) {
+            oldSize = sizeof(struct old_ivar_list) + 
+                (old->ivar_count - 1) * sizeof(struct old_ivar);
+            newCount = 1 + old->ivar_count;
+        } else {
+            oldSize = sizeof(struct old_ivar_list) - sizeof(struct old_ivar);
+            newCount = 1;
+        }
+
+        // allocate new ivar list
+        cls->ivars = _calloc_internal(oldSize + sizeof(struct old_ivar), 1);
+        if (old) memcpy(cls->ivars, old, oldSize);
+        if (old  &&  malloc_size(old)) free(old);
+        cls->ivars->ivar_count = newCount;
+        ivar = &cls->ivars->ivar_list[newCount-1];
+
+        // set ivar name and type
+        ivar->ivar_name = _strdup_internal(name);
+        ivar->ivar_type = _strdup_internal(type);
+
+        // align if necessary
+        alignBytes = 1 << alignment;
+        misalign = cls->instance_size % alignBytes;
+        if (misalign) cls->instance_size += alignBytes - misalign;
+
+        // set ivar offset and increase instance size
+        ivar->ivar_offset = (int)cls->instance_size;
+        cls->instance_size += size;
+    }
+
+    OBJC_UNLOCK(&classLock);
+
+    return result;
+}
+
+
+/***********************************************************************
+* class_addProtocol
+**********************************************************************/
+BOOL class_addProtocol(Class cls_gen, Protocol *protocol_gen)
+{
+    struct old_class *cls = oldcls(cls_gen);
+    struct old_protocol *protocol = oldprotocol(protocol_gen);
+    struct old_protocol_list *plist;
+
+    if (!cls) return NO;
+    if (class_conformsToProtocol(cls_gen, protocol_gen)) return NO;
+
+    OBJC_LOCK(&classLock);
+
+    // fixme optimize - protocol list doesn't escape?
+    plist = _calloc_internal(sizeof(struct old_protocol_list), 1);
+    plist->count = 1;
+    plist->list[0] = protocol;
+    plist->next = cls->protocols;
+    cls->protocols = plist;
+
+    // fixme metaclass?
+
+    OBJC_UNLOCK(&classLock);
+
+    return YES;
+}
+
+
+/***********************************************************************
+* class_addProperty
+**********************************************************************/
+__private_extern__ void 
+_class_addProperties(struct old_class *cls,
+                     struct objc_property_list *additions)
+{
+    if (!(cls->info & CLS_EXT)) {
+        return;
+    }
+
+    struct objc_property_list *newlist = 
+        _memdup_internal(additions, sizeof(*newlist) - sizeof(newlist->first) 
+                         + (additions->entsize * additions->count));
+
+    OBJC_LOCK(&classLock);
+
+    allocateExt(cls);
+    if (!cls->ext->propertyLists) {
+        // cls has no properties - simply use this list
+        cls->ext->propertyLists = (struct objc_property_list **)newlist;
+        _class_setInfo((Class)cls, CLS_NO_PROPERTY_ARRAY);
+    } 
+    else if (cls->info & CLS_NO_PROPERTY_ARRAY) {
+        // cls has one property list - make a new array
+        struct objc_property_list **newarray = 
+            _malloc_internal(3 * sizeof(*newarray));
+        newarray[0] = newlist;
+        newarray[1] = (struct objc_property_list *)cls->ext->propertyLists;
+        newarray[2] = NULL;
+        cls->ext->propertyLists = newarray;
+        _class_clearInfo((Class)cls, CLS_NO_PROPERTY_ARRAY);
+    }
+    else {
+        // cls has a property array - make a bigger one
+        int count = 0;
+        while (cls->ext->propertyLists[count]) count++;
+        struct objc_property_list **newarray = 
+            _malloc_internal((count+2) * sizeof(*newarray));
+        newarray[0] = newlist;
+        memcpy(&newarray[1], &cls->ext->propertyLists[0], 
+               count * sizeof(*newarray));
+        newarray[count+1] = NULL;
+        free(cls->ext->propertyLists);
+        cls->ext->propertyLists = newarray;
+    }
+
+    OBJC_UNLOCK(&classLock);
+}
+
+
+/***********************************************************************
+* class_copyProtocolList.  Returns a heap block containing the 
+* protocols implemented by the class, or NULL if the class 
+* implements no protocols. Caller must free the block.
+* Does not copy any superclass's protocols.
+**********************************************************************/
+Protocol **class_copyProtocolList(Class cls_gen, unsigned int *outCount)
+{
+    struct old_class *cls = oldcls(cls_gen);
+    struct old_protocol_list *plist;
+    Protocol **result = NULL;
+    unsigned int count = 0;
+    unsigned int i, p;
+
+    if (!cls) {
+        if (outCount) *outCount = 0;
+        return NULL;
+    }
+
+    OBJC_LOCK(&classLock);
+
+    for (plist = cls->protocols; plist != NULL; plist = plist->next) {
+        count += (int)plist->count;
+    }
+
+    if (count > 0) {
+        result = malloc((count+1) * sizeof(Protocol *));
+        
+        for (p = 0, plist = cls->protocols; 
+             plist != NULL; 
+             plist = plist->next) 
+        {
+            for (i = 0; i < plist->count; i++) {
+                result[p++] = (Protocol *)plist->list[i];
+            }
+        }
+        result[p] = NULL;
+    }
+
+    OBJC_UNLOCK(&classLock);
+
+    if (outCount) *outCount = count;
+    return result;
+}
+
+
+/***********************************************************************
+* class_getProperty.  Return the named property.
+**********************************************************************/
+Property class_getProperty(Class cls_gen, const char *name)
+{
+    Property result;
+    struct old_class *cls = _class_asOld(cls_gen);
+    if (!cls  ||  !name) return NULL;
+
+    OBJC_LOCK(&classLock);
+
+    for (result = NULL; cls && !result; cls = cls->super_class) {
+        uintptr_t iterator = 0;
+        struct objc_property_list *plist;
+        while ((plist = nextPropertyList(cls, &iterator))) {
+            uint32_t i;
+            for (i = 0; i < plist->count; i++) {
+                Property p = property_list_nth(plist, i);
+                if (0 == strcmp(name, p->name)) {
+                    result = p;
+                    goto done;
+                }
+            }
+        }
+    }
+
+ done:
+    OBJC_UNLOCK(&classLock);
+
+    return result;
+}
+
+
+/***********************************************************************
+* class_copyPropertyList. Returns a heap block containing the 
+* properties declared in the class, or NULL if the class 
+* declares no properties. Caller must free the block.
+* Does not copy any superclass's properties.
+**********************************************************************/
+Property *class_copyPropertyList(Class cls_gen, unsigned int *outCount)
+{
+    struct old_class *cls = oldcls(cls_gen);
+    struct objc_property_list *plist;
+    uintptr_t iterator = 0;
+    Property *result = NULL;
+    unsigned int count = 0;
+    unsigned int p, i;
+
+    if (!cls) {
+        if (outCount) *outCount = 0;
+        return NULL;
+    }
+
+    OBJC_LOCK(&classLock);
+
+    iterator = 0;
+    while ((plist = nextPropertyList(cls, &iterator))) {
+        count += plist->count;
+    }
+
+    if (count > 0) {
+        result = malloc((count+1) * sizeof(Property));
+        
+        p = 0;
+        iterator = 0;
+        while ((plist = nextPropertyList(cls, &iterator))) {
+            for (i = 0; i < plist->count; i++) {
+                result[p++] = property_list_nth(plist, i);
+            }
+        }
+        result[p] = NULL;
+    }
+
+    OBJC_UNLOCK(&classLock);
+
+    if (outCount) *outCount = count;
+    return result;
+}
+
+
+/***********************************************************************
+* class_copyMethodList.  Returns a heap block containing the 
+* methods implemented by the class, or NULL if the class 
+* implements no methods. Caller must free the block.
+* Does not copy any superclass's methods.
+**********************************************************************/
+Method *class_copyMethodList(Class cls_gen, unsigned int *outCount)
+{
+    struct old_class *cls = oldcls(cls_gen);
+    struct old_method_list *mlist;
+    void *iterator = NULL;
+    Method *result = NULL;
+    unsigned int count = 0;
+    unsigned int m, i;
+
+    if (!cls) {
+        if (outCount) *outCount = 0;
+        return NULL;
+    }
+
+    OBJC_LOCK(&methodListLock);
+
+    iterator = NULL;
+    while ((mlist = nextMethodList(cls, &iterator))) {
+        count += mlist->method_count;
+    }
+
+    if (count > 0) {
+        result = malloc((count+1) * sizeof(Method));
+        
+        m = 0;
+        iterator = NULL;
+        while ((mlist = nextMethodList(cls, &iterator))) {
+            for (i = 0; i < mlist->method_count; i++) {
+                result[m++] = (Method)&mlist->method_list[i];
+            }
+        }
+        result[m] = NULL;
+    }
+
+    OBJC_UNLOCK(&methodListLock);
+
+    if (outCount) *outCount = count;
+    return result;
+}
+
+
+/***********************************************************************
+* class_copyIvarList.  Returns a heap block containing the 
+* ivars declared in the class, or NULL if the class 
+* declares no ivars. Caller must free the block.
+* Does not copy any superclass's ivars.
+**********************************************************************/
+Ivar *class_copyIvarList(Class cls_gen, unsigned int *outCount)
+{
+    struct old_class *cls = oldcls(cls_gen);
+    Ivar *result = NULL;
+    unsigned int count = 0;
+    unsigned int i;
+
+    if (!cls) {
+        if (outCount) *outCount = 0;
+        return NULL;
+    }
+
+    if (cls->ivars) {
+        count = cls->ivars->ivar_count;
+    }
+
+    if (count > 0) {
+        result = malloc((count+1) * sizeof(Ivar));
+
+        for (i = 0; i < cls->ivars->ivar_count; i++) {
+            result[i] = (Ivar)&cls->ivars->ivar_list[i];
+        }
+        result[i] = NULL;
+    }
+
+    if (outCount) *outCount = count;
+    return result;
+}
+
+
+/***********************************************************************
+* objc_allocateClass.
+**********************************************************************/
+__private_extern__ 
+void set_superclass(struct old_class *cls, struct old_class *supercls)
+{
+    struct old_class *meta = cls->isa;
+
+    if (supercls) {
+        cls->super_class = supercls;
+        meta->super_class = supercls->isa;
+        meta->isa = supercls->isa->isa;
+
+        // Superclass is no longer a leaf for cache flushing
+        if (supercls->info & CLS_LEAF) {
+            _class_clearInfo((Class)supercls, CLS_LEAF);
+            _class_clearInfo((Class)supercls->isa, CLS_LEAF);
+        }
+    } else {
+        cls->super_class = Nil;  // superclass of root class is nil
+        meta->super_class = cls; // superclass of root metaclass is root class
+        meta->isa = meta;      // metaclass of root metaclass is root metaclass
+
+        // Root class is never a leaf for cache flushing, because the 
+        // root metaclass is a subclass. (This could be optimized, but 
+        // is too uncommon to bother.)
+        _class_clearInfo((Class)cls, CLS_LEAF);
+        _class_clearInfo((Class)meta, CLS_LEAF);
+    }    
+}
+
+Class objc_allocateClassPair(Class superclass_gen, const char *name, 
+                             size_t extraBytes)
+{
+    struct old_class *superclass = oldcls(superclass_gen);
+    struct old_class *cls, *meta;
+
+    if (objc_getClass(name)) return NO;
+    // fixme reserve class name against simultaneous allocation
+
+    if (superclass  &&  (superclass->info & CLS_CONSTRUCTING)) {
+        // Can't make subclass of an in-construction class
+        return NO;
+    }
+
+    // Allocate new classes. 
+    if (superclass) {
+        cls = _calloc_internal(superclass->isa->instance_size + extraBytes, 1);
+        meta = _calloc_internal(superclass->isa->isa->instance_size + extraBytes, 1);
+    } else {
+        cls = _calloc_internal(sizeof(struct old_class) + extraBytes, 1);
+        meta = _calloc_internal(sizeof(struct old_class) + extraBytes, 1);
+    }
+
+    // Connect to superclasses and metaclasses
+    cls->isa = meta;
+    set_superclass(cls, superclass);
+
+    // Set basic info
+    cls->name = _strdup_internal(name);
+    meta->name = _strdup_internal(name);
+    cls->version = 0;
+    meta->version = 7;
+    cls->info = CLS_CLASS | CLS_CONSTRUCTING | CLS_EXT | CLS_LEAF;
+    meta->info = CLS_META | CLS_CONSTRUCTING | CLS_EXT | CLS_LEAF;
+
+    // Set instance size based on superclass.
+    if (superclass) {
+        cls->instance_size = superclass->instance_size;
+        meta->instance_size = superclass->isa->instance_size;
+    } else {
+        cls->instance_size = sizeof(struct old_class *);  // just an isa
+        meta->instance_size = sizeof(struct old_class);
+    }
+    
+    // No ivars. No methods. Empty cache. No protocols. No layout. No ext.
+    cls->ivars = NULL;
+    cls->methodLists = NULL;
+    cls->cache = (Cache)&_objc_empty_cache;
+    cls->protocols = NULL;
+    cls->ext = NULL;
+
+    meta->ivars = NULL;
+    meta->methodLists = NULL;
+    meta->cache = (Cache)&_objc_empty_cache;
+    meta->protocols = NULL;
+    cls->ext = NULL;
+
+    return (Class)cls;
+}
+
+
+void objc_registerClassPair(Class cls_gen)
+{
+    struct old_class *cls = oldcls(cls_gen);
+
+    if ((cls->info & CLS_CONSTRUCTED)  ||  
+        (cls->isa->info & CLS_CONSTRUCTED)) 
+    {
+        _objc_inform("objc_registerClassPair: class '%s' was already "
+                     "registered!", cls->name);
+        return;
+    }
+
+    if (!(cls->info & CLS_CONSTRUCTING)  ||  
+        !(cls->isa->info & CLS_CONSTRUCTING)) 
+    {
+        _objc_inform("objc_registerClassPair: class '%s' was not "
+                     "allocated with objc_allocateClassPair!", cls->name);
+        return;
+    }
+
+    if (ISMETA(cls)) {
+        _objc_inform("objc_registerClassPair: class '%s' is a metaclass, "
+                     "not a class!", cls->name);
+        return;
+    }
+
+    OBJC_LOCK(&classLock);
+
+    // Build ivar layouts
+    if (UseGC) {
+        if (cls->ivar_layout) {
+            // Class builder already called class_setIvarLayout.
+        }
+        else if (!cls->super_class) {
+            // Root class. Scan conservatively (should be isa ivar only).
+            // ivar_layout is already NULL.
+        }
+        else if (cls->ivars == NULL) {
+            // No local ivars. Use superclass's layout.
+            cls->ivar_layout = 
+                _strdup_internal(cls->super_class->ivar_layout);
+        }
+        else {
+            // Has local ivars. Build layout based on superclass.
+            struct old_class *supercls = cls->super_class;
+            unsigned char *superlayout = 
+                (unsigned char *) class_getIvarLayout((Class)supercls);
+            layout_bitmap bitmap = 
+                layout_bitmap_create(superlayout, supercls->instance_size, 
+                                     cls->instance_size, NO);
+            int i;
+            for (i = 0; i < cls->ivars->ivar_count; i++) {
+                struct old_ivar *iv = &cls->ivars->ivar_list[i];
+                layout_bitmap_set_ivar(bitmap, iv->ivar_type, iv->ivar_offset);
+            }
+            cls->ivar_layout = (char *)layout_string_create(bitmap);
+            layout_bitmap_free(bitmap);
+        }
+
+        if (cls->ext  &&  cls->ext->weak_ivar_layout) {
+            // Class builder already called class_setWeakIvarLayout.
+        }
+        else if (!cls->super_class) {
+            // Root class. No weak ivars (should be isa ivar only)
+            // weak_ivar_layout is already NULL.
+        }
+        else if (cls->ivars == NULL) {
+            // No local ivars. Use superclass's layout.
+            const char *weak = 
+                class_getWeakIvarLayout((Class)cls->super_class);
+            if (weak) {
+                allocateExt(cls);
+                cls->ext->weak_ivar_layout = _strdup_internal(weak);
+            }
+        }
+        else {
+            // Has local ivars. Build layout based on superclass.
+            // No way to add weak ivars yet.
+            const char *weak = 
+                class_getWeakIvarLayout((Class)cls->super_class);
+            if (weak) {
+                allocateExt(cls);
+                cls->ext->weak_ivar_layout = _strdup_internal(weak);
+            }
+        }
+    }
+
+    // Clear "under construction" bit, set "done constructing" bit
+    cls->info &= ~CLS_CONSTRUCTING;
+    cls->isa->info &= ~CLS_CONSTRUCTING;
+    cls->info |= CLS_CONSTRUCTED;
+    cls->isa->info |= CLS_CONSTRUCTED;
+
+    NXHashInsertIfAbsent(class_hash, cls);
+
+    OBJC_UNLOCK(&classLock);
+}
+
+
+Class objc_duplicateClass(Class orig_gen, const char *name, size_t extraBytes)
+{
+    unsigned int count, i;
+    struct old_method **originalMethods;
+    struct old_method_list *duplicateMethods;
+    struct old_class *original = oldcls(orig_gen);
+    // Don't use sizeof(struct objc_class) here because 
+    // instance_size has historically contained two extra words, 
+    // and instance_size is what objc_getIndexedIvars() actually uses.
+    struct old_class *duplicate = (struct old_class *)
+        calloc(original->isa->instance_size + extraBytes, 1);
+
+    duplicate->isa = original->isa;
+    duplicate->super_class = original->super_class;
+    duplicate->name = strdup(name);
+    duplicate->version = original->version;
+    duplicate->info = original->info & (CLS_CLASS|CLS_META|CLS_INITIALIZED|CLS_JAVA_HYBRID|CLS_JAVA_CLASS|CLS_HAS_CXX_STRUCTORS|CLS_HAS_LOAD_METHOD);
+    duplicate->instance_size = original->instance_size;
+    duplicate->ivars = original->ivars;
+    // methodLists handled below
+    duplicate->cache = (Cache)&_objc_empty_cache;
+    duplicate->protocols = original->protocols;
+    if (original->info & CLS_EXT) {
+        duplicate->info |= original->info & (CLS_EXT|CLS_NO_PROPERTY_ARRAY);
+        duplicate->ivar_layout = original->ivar_layout;
+        if (original->ext) {
+            duplicate->ext = _malloc_internal(original->ext->size);
+            memcpy(duplicate->ext, original->ext, original->ext->size);
+        } else {
+            duplicate->ext = NULL;
+        }
+    }
+
+    // Method lists are deep-copied so they can be stomped.
+    originalMethods = (struct old_method **)
+        class_copyMethodList(orig_gen, &count);
+    if (originalMethods) {
+        duplicateMethods = (struct old_method_list *)
+            calloc(sizeof(struct old_method_list) + 
+                   (count-1)*sizeof(struct old_method), 1);
+        duplicateMethods->obsolete = _OBJC_FIXED_UP;
+        duplicateMethods->method_count = count;
+        for (i = 0; i < count; i++) {
+            duplicateMethods->method_list[i] = *(originalMethods[i]);
+        }
+        duplicate->methodLists = (struct old_method_list **)duplicateMethods;
+        duplicate->info |= CLS_NO_METHOD_ARRAY;
+        free(originalMethods);
+    }
+
+    OBJC_LOCK(&classLock);
+    NXHashInsert(class_hash, duplicate);
+    OBJC_UNLOCK(&classLock);
+
+    return (Class)duplicate;
+}
+
+
+void objc_disposeClassPair(Class cls_gen)
+{
+    struct old_class *cls = oldcls(cls_gen);
+
+    if (!(cls->info & (CLS_CONSTRUCTED|CLS_CONSTRUCTING))  ||  
+        !(cls->isa->info & (CLS_CONSTRUCTED|CLS_CONSTRUCTING))) 
+    {
+        // class not allocated with objc_allocateClassPair
+        // disposing still-unregistered class is OK!
+        _objc_inform("objc_disposeClassPair: class '%s' was not "
+                     "allocated with objc_allocateClassPair!", cls->name);
+        return;
+    }
+
+    if (ISMETA(cls)) {
+        _objc_inform("objc_disposeClassPair: class '%s' is a metaclass, "
+                     "not a class!", cls->name);
+        return;
+    }
+
+    NXHashRemove(class_hash, cls);
+    unload_class(cls->isa);
+    unload_class(cls);
+}
+
+
+/***********************************************************************
+* _internal_class_createInstance.  Allocate an instance of the specified
+* class with the specified number of bytes for indexed variables, in
+* the default zone, using _internal_class_createInstanceFromZone.
+**********************************************************************/
+static id _internal_class_createInstance(Class cls, size_t extraBytes)
+{
+    return _internal_class_createInstanceFromZone (cls, extraBytes, NULL);
+}
+
+
+static id _internal_object_copyFromZone(id oldObj, size_t extraBytes, void *zone) 
+{
+    id obj;
+    size_t size;
+
+    if (!oldObj) return nil;
+
+    obj = (*_zoneAlloc)(oldObj->isa, extraBytes, zone);
+    size = _class_getInstanceSize(oldObj->isa) + extraBytes;
+    // fixme need C++ copy constructor
+    bcopy((const char*)oldObj, (char*)obj, size);
+    return obj;
+}
+
+static id _internal_object_copy(id oldObj, size_t extraBytes) 
+{
+    void *z = malloc_zone_from_ptr(oldObj);
+    return _internal_object_copyFromZone(oldObj, extraBytes,
+                                        z ? z : malloc_default_zone());
+}
+
+static id _internal_object_reallocFromZone(id anObject, size_t nBytes, 
+                                           void *zone) 
+{
+    id newObject; 
+    Class tmp;
+
+    if (anObject == nil)
+        __objc_error(nil, "reallocating nil object");
+
+    if (anObject->isa == _objc_getFreedObjectClass ())
+        __objc_error(anObject, "reallocating freed object");
+
+    if (nBytes < _class_getInstanceSize(anObject->isa))
+        __objc_error(anObject, "(%s, %zu) requested size too small", 
+                     object_getClassName(anObject), nBytes);
+
+    // fixme need C++ copy constructor
+    // fixme GC copy
+    // Make sure not to modify space that has been declared free
+    tmp = anObject->isa; 
+    anObject->isa = _objc_getFreedObjectClass ();
+    newObject = (id)malloc_zone_realloc(zone, anObject, nBytes);
+    if (newObject) {
+        newObject->isa = tmp;
+    } else {
+        // realloc failed, anObject is still alive
+        anObject->isa = tmp;
+    }
+    return newObject;
+}
+
+
+static id _internal_object_realloc(id anObject, size_t nBytes) 
+{
+    void *z = malloc_zone_from_ptr(anObject);
+    return _internal_object_reallocFromZone(anObject,
+                                           nBytes,
+                                           z ? z : malloc_default_zone());
+}
+
+id (*_alloc)(Class, size_t) = _internal_class_createInstance;
+id (*_copy)(id, size_t) = _internal_object_copy;
+id (*_realloc)(id, size_t) = _internal_object_realloc;
+id (*_dealloc)(id) = _internal_object_dispose;
+id (*_zoneAlloc)(Class, size_t, void *) = _internal_class_createInstanceFromZone;
+id (*_zoneCopy)(id, size_t, void *) = _internal_object_copyFromZone;
+id (*_zoneRealloc)(id, size_t, void *) = _internal_object_reallocFromZone;
+void (*_error)() = (void(*)())_objc_error;
+
+
+id class_createInstance(Class cls, size_t extraBytes)
+{
+    if (UseGC) {
+        return _internal_class_createInstance(cls, extraBytes);
+    } else {
+        return (*_alloc)(cls, extraBytes);
+    }
+}
+
+id class_createInstanceFromZone(Class cls, size_t extraBytes, void *z)
+{
+    OBJC_WARN_DEPRECATED;
+    if (UseGC) {
+        return _internal_class_createInstanceFromZone(cls, extraBytes, z);
+    } else {
+        return (*_zoneAlloc)(cls, extraBytes, z);
+    }
+}
+
+id object_copy(id obj, size_t extraBytes) 
+{
+    if (UseGC) return _internal_object_copy(obj, extraBytes);
+    else return (*_copy)(obj, extraBytes); 
+}
+
+id object_copyFromZone(id obj, size_t extraBytes, void *z) 
+{
+    OBJC_WARN_DEPRECATED;
+    if (UseGC) return _internal_object_copyFromZone(obj, extraBytes, z);
+    else return (*_zoneCopy)(obj, extraBytes, z); 
+}
+
+id object_dispose(id obj) 
+{
+    if (UseGC) return _internal_object_dispose(obj);
+    else return (*_dealloc)(obj); 
+}
+
+id object_realloc(id obj, size_t nBytes) 
+{
+    OBJC_WARN_DEPRECATED;
+    if (UseGC) return _internal_object_realloc(obj, nBytes);
+    else return (*_realloc)(obj, nBytes); 
+}
+
+id object_reallocFromZone(id obj, size_t nBytes, void *z) 
+{
+    OBJC_WARN_DEPRECATED;
+    if (UseGC) return _internal_object_reallocFromZone(obj, nBytes, z);
+    else return (*_zoneRealloc)(obj, nBytes, z); 
+}
+
+
+// ProKit SPI
+Class class_setSuperclass(Class cls, Class newSuper)
+{
+    Class oldSuper = cls->super_class;
+    set_superclass(oldcls(cls), oldcls(newSuper));
+    flush_caches(cls, YES);
+    return oldSuper;
+}
+#endif
index 120a65bdba221f67aff954f0edb14331ecf61a34..1701b1ec0851a9cce5aa34acbd67a64e02fce9b2 100644 (file)
@@ -1,257 +1,2 @@
-/*
- * Copyright (c) 1999 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-class.h
- *     Copyright 1988-1996, NeXT Software, Inc.
- */
-
-#ifndef _OBJC_CLASS_H_
-#define _OBJC_CLASS_H_
-
-#import <objc/objc.h>
-/* 
- *     Class Template
- */
-struct objc_class {                    
-       struct objc_class *isa; 
-       struct objc_class *super_class; 
-       const char *name;               
-       long version;
-       long info;
-       long instance_size;
-       struct objc_ivar_list *ivars;
-
-       struct objc_method_list **methodLists;
-
-       struct objc_cache *cache;
-       struct objc_protocol_list *protocols;
-};
-#define CLS_GETINFO(cls,infomask)      ((cls)->info & (infomask))
-#define CLS_SETINFO(cls,infomask)      ((cls)->info |= (infomask))
-
-#define CLS_CLASS              0x1L
-#define CLS_META               0x2L
-#define CLS_INITIALIZED                0x4L
-#define CLS_POSING             0x8L
-#define CLS_MAPPED             0x10L
-#define CLS_FLUSH_CACHE                0x20L
-#define CLS_GROW_CACHE         0x40L
-#define CLS_NEED_BIND          0x80L
-#define CLS_METHOD_ARRAY        0x100L
-// the JavaBridge constructs classes with these markers
-#define CLS_JAVA_HYBRID                0x200L
-#define CLS_JAVA_CLASS         0x400L
-// thread-safe +initialize
-#define CLS_INITIALIZING       0x800
-// 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
-// +load implementation
-// #define CLS_HAS_LOAD_METHOD 0x8000L
-
-
-/* 
- *     Category Template
- */
-typedef struct objc_category *Category;
-
-struct objc_category {
-       char *category_name;
-       char *class_name;
-       struct objc_method_list *instance_methods;
-       struct objc_method_list *class_methods;
-       struct objc_protocol_list *protocols;
-};
-
-/* 
- *     Instance Variable Template
- */
-typedef struct objc_ivar *Ivar;
-
-struct objc_ivar {
-       char *ivar_name;
-       char *ivar_type;
-       int ivar_offset;
-#ifdef __alpha__
-       int space;
-#endif
-};
-
-struct objc_ivar_list {
-       int ivar_count;
-#ifdef __alpha__
-       int space;
-#endif
-       struct objc_ivar ivar_list[1];          /* variable length structure */
-};
-
-OBJC_EXPORT Ivar object_setInstanceVariable(id, const char *name, void *);
-OBJC_EXPORT Ivar object_getInstanceVariable(id, const char *name, void **);
-
-/* 
- *     Method Template
- */
-typedef struct objc_method *Method;
-
-struct objc_method {
-       SEL method_name;
-       char *method_types;
-       IMP method_imp;
-};
-
-struct objc_method_list {
-       struct objc_method_list *obsolete;
-
-       int method_count;
-#ifdef __alpha__
-       int space;
-#endif
-       struct objc_method method_list[1];      /* variable length structure */
-};
-
-/* Protocol support */
-
-#ifdef __OBJC__
-@class Protocol;
-#else
-typedef struct objc_object Protocol;
-#endif
-
-struct objc_protocol_list {
-       struct objc_protocol_list *next;
-       int count;
-       Protocol *list[1];
-};
-
-/* Definitions of filer types */
-
-#define _C_ID          '@'
-#define _C_CLASS       '#'
-#define _C_SEL         ':'
-#define _C_CHR         'c'
-#define _C_UCHR                'C'
-#define _C_SHT         's'
-#define _C_USHT                'S'
-#define _C_INT         'i'
-#define _C_UINT                'I'
-#define _C_LNG         'l'
-#define _C_ULNG                'L'
-#define _C_FLT         'f'
-#define _C_DBL         'd'
-#define _C_BFLD                'b'
-#define _C_VOID                'v'
-#define _C_UNDEF       '?'
-#define _C_PTR         '^'
-#define _C_CHARPTR     '*'
-#define _C_ARY_B       '['
-#define _C_ARY_E       ']'
-#define _C_UNION_B     '('
-#define _C_UNION_E     ')'
-#define _C_STRUCT_B    '{'
-#define _C_STRUCT_E    '}'
-
-/* Structure for method cache - allocated/sized at runtime */
-
-typedef struct objc_cache *    Cache;
-
-#define CACHE_BUCKET_NAME(B)  ((B)->method_name)
-#define CACHE_BUCKET_IMP(B)   ((B)->method_imp)
-#define CACHE_BUCKET_VALID(B) (B)
-#define CACHE_HASH(sel, mask) (((uarith_t)(sel)>>2) & (mask))
-struct objc_cache {
-       unsigned int mask;            /* total = mask + 1 */
-       unsigned int occupied;        
-       Method buckets[1];
-};
-
-/* operations */
-OBJC_EXPORT id class_createInstance(Class, unsigned idxIvars);
-OBJC_EXPORT id class_createInstanceFromZone(Class, unsigned idxIvars, void *z);
-
-OBJC_EXPORT void class_setVersion(Class, int);
-OBJC_EXPORT int class_getVersion(Class);
-
-OBJC_EXPORT Ivar class_getInstanceVariable(Class, const char *);
-OBJC_EXPORT Method class_getInstanceMethod(Class, SEL);
-OBJC_EXPORT Method class_getClassMethod(Class, SEL);
-
-OBJC_EXPORT void class_addMethods(Class, struct objc_method_list *);
-OBJC_EXPORT void class_removeMethods(Class, struct objc_method_list *);
-
-OBJC_EXPORT Class class_poseAs(Class imposter, Class original);
-
-OBJC_EXPORT unsigned method_getNumberOfArguments(Method);
-OBJC_EXPORT unsigned method_getSizeOfArguments(Method);
-OBJC_EXPORT unsigned method_getArgumentInfo(Method m, int arg, const char **type, int *offset);
-
-// usage for nextMethodList
-//
-// void *iterator = 0;
-// struct objc_method_list *mlist;
-// while ( mlist = class_nextMethodList( cls, &iterator ) )
-//    ;
-#define OBJC_NEXT_METHOD_LIST 1
-OBJC_EXPORT struct objc_method_list *class_nextMethodList(Class, void **);
-
-typedef void *marg_list;
-
-#if defined(__ppc__) || defined(ppc)
-#define marg_prearg_size       128
-#else
-#define marg_prearg_size       0
-#endif
-
-#define marg_malloc(margs, method) \
-       do { \
-               margs = (marg_list *)malloc (marg_prearg_size + ((7 + method_getSizeOfArguments(method)) & ~7)); \
-       } while (0)
-
-
-#define marg_free(margs) \
-       do { \
-               free(margs); \
-       } while (0)
-       
-#define marg_adjustedOffset(method, offset) \
-       (marg_prearg_size + offset)
-
-
-
-
-#define marg_getRef(margs, offset, type) \
-       ( (type *)((char *)margs + marg_adjustedOffset(method,offset) ) )
-
-#define marg_getValue(margs, offset, type) \
-       ( *marg_getRef(margs, offset, type) )
-
-#define marg_setValue(margs, offset, type, value) \
-       ( marg_getValue(margs, offset, type) = (value) )
-
-/* Load categories and non-referenced classes from libraries. */
-
-#endif /* _OBJC_CLASS_H_ */
+#import <objc/runtime.h>
+#import <objc/message.h>
index 8bf14b4cd732dfa3b0f039eee39e674cb5a80a97..09c16ea3e19df7c8738458a97ddea776b29645f3 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
+ * Copyright (c) 1999-2007 Apple Inc.  All Rights Reserved.
  * 
- * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
+ * @APPLE_LICENSE_HEADER_START@
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
 **********************************************************************/
 
 
-/***********************************************************************
- * Method cache locking (GrP 2001-1-14)
- *
- * For speed, objc_msgSend does not acquire any locks when it reads 
- * method caches. Instead, all cache changes are performed so that any 
- * objc_msgSend running concurrently with the cache mutator will not 
- * crash or hang or get an incorrect result from the cache. 
- *
- * When cache memory becomes unused (e.g. the old cache after cache 
- * expansion), it is not immediately freed, because a concurrent 
- * objc_msgSend could still be using it. Instead, the memory is 
- * disconnected from the data structures and placed on a garbage list. 
- * The memory is now only accessible to instances of objc_msgSend that 
- * were running when the memory was disconnected; any further calls to 
- * objc_msgSend will not see the garbage memory because the other data 
- * structures don't point to it anymore. The collecting_in_critical
- * function checks the PC of all threads and returns FALSE when all threads 
- * are found to be outside objc_msgSend. This means any call to objc_msgSend 
- * that could have had access to the garbage has finished or moved past the 
- * cache lookup stage, so it is safe to free the memory.
- *
- * All functions that modify cache data or structures must acquire the 
- * 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*
- * _cache_getImp
- * _cache_getMethod
- *
- * Cache writers (hold cacheUpdateLock while reading or writing; not PC-checked)
- * _cache_fill         (acquires lock)
- * _cache_expand       (only called from cache_fill)
- * _cache_create       (only called from cache_expand)
- * bcopy               (only called from instrumented cache_expand)
- * flush_caches        (acquires lock)
- * _cache_flush        (only called from cache_fill and flush_caches)
- * _cache_collect_free (only called from cache_expand and cache_flush)
- *
- * UNPROTECTED cache readers (NOT thread-safe; used for debug info only)
- * _cache_print
- * _class_printMethodCaches
- * _class_printDuplicateCacheEntries
- * _class_printMethodCacheStatistics
- *
- * _class_lookupMethodAndLoadCache is a special case. It may read a 
- * method triplet out of one cache and store it in another cache. This 
- * is unsafe if the method triplet is a forward:: entry, because the 
- * triplet itself could be freed unless _class_lookupMethodAndLoadCache 
- * were PC-checked or used a lock. Additionally, storing the method 
- * triplet in both caches would result in double-freeing if both caches 
- * were flushed or expanded. The solution is for _cache_getMethod to 
- * ignore all entries whose implementation is _objc_msgForward, so 
- * _class_lookupMethodAndLoadCache cannot look at a forward:: entry
- * unsafely or place it in multiple caches.
- ***********************************************************************/
-
 /***********************************************************************
  * Lazy method list arrays and method list locking  (2004-10-19)
  * 
  * CLS_INITIALIZED: +initialize
  * CLS_POSING: messaging
  * CLS_MAPPED: compile-time
- * CLS_FLUSH_CACHE: messaging
+ * CLS_FLUSH_CACHE: class load and messaging
  * CLS_GROW_CACHE: messaging
  * CLS_NEED_BIND: unused
  * CLS_METHOD_ARRAY: unused
  * CLS_INITIALIZING: classInitLock
  ***********************************************************************/
 
-/***********************************************************************
- * Thread-safety during class initialization (GrP 2001-9-24)
- *
- * Initial state: CLS_INITIALIZING and CLS_INITIALIZED both clear. 
- * During initialization: CLS_INITIALIZING is set
- * After initialization: CLS_INITIALIZING clear and CLS_INITIALIZED set.
- * CLS_INITIALIZING and CLS_INITIALIZED are never set at the same time.
- * CLS_INITIALIZED is never cleared once set.
- *
- * Only one thread is allowed to actually initialize a class and send 
- * +initialize. Enforced by allowing only one thread to set CLS_INITIALIZING.
- *
- * Additionally, threads trying to send messages to a class must wait for 
- * +initialize to finish. During initialization of a class, that class's 
- * method cache is kept empty. objc_msgSend will revert to 
- * class_lookupMethodAndLoadCache, which checks CLS_INITIALIZED before 
- * messaging. If CLS_INITIALIZED is clear but CLS_INITIALIZING is set, 
- * the thread must block, unless it is the thread that started 
- * initializing the class in the first place. 
- *
- * Each thread keeps a list of classes it's initializing. 
- * The global classInitLock is used to synchronize changes to CLS_INITIALIZED 
- * and CLS_INITIALIZING: the transition to CLS_INITIALIZING must be 
- * an atomic test-and-set with respect to itself and the transition 
- * to CLS_INITIALIZED.
- * The global classInitWaitCond is used to block threads waiting for an 
- * initialization to complete. The classInitLock synchronizes
- * condition checking and the condition variable.
- **********************************************************************/
-
-/***********************************************************************
- *  +initialize deadlock case when a class is marked initializing while 
- *  its superclass is initialized. Solved by completely initializing 
- *  superclasses before beginning to initialize a class.
- *
- *  OmniWeb class hierarchy:
- *                 OBObject 
- *                     |    ` OBPostLoader
- *                 OFObject
- *                 /     \
- *      OWAddressEntry  OWController
- *                        | 
- *                      OWConsoleController
- *
- *  Thread 1 (evil testing thread):
- *    initialize OWAddressEntry
- *    super init OFObject
- *    super init OBObject                   
- *    [OBObject initialize] runs OBPostLoader, which inits lots of classes...
- *    initialize OWConsoleController
- *    super init OWController - wait for Thread 2 to finish OWController init
- *
- *  Thread 2 (normal OmniWeb thread):
- *    initialize OWController
- *    super init OFObject - wait for Thread 1 to finish OFObject init
- *
- *  deadlock!
- *
- *  Solution: fully initialize super classes before beginning to initialize 
- *  a subclass. Then the initializing+initialized part of the class hierarchy
- *  will be a contiguous subtree starting at the root, so other threads 
- *  can't jump into the middle between two initializing classes, and we won't 
- *  get stuck while a superclass waits for its subclass which waits for the 
- *  superclass.
- **********************************************************************/
-
-
-
 /***********************************************************************
 * Imports.
 **********************************************************************/
 
-#import <mach/mach_interface.h>
+#include <mach/mach.h>
+#include <mach/thread_status.h>
 #include <mach-o/ldsyms.h>
 #include <mach-o/dyld.h>
-
 #include <sys/types.h>
 #include <unistd.h>
 #include <stdlib.h>
 #include <sys/uio.h>
 #include <sys/fcntl.h>
+#include <sys/mman.h>
 
-#import "objc-class.h"
-
-#import <objc/Object.h>
-#import <objc/objc-runtime.h>
+#import "objc.h"
+#import "Object.h"
 #import "objc-private.h"
 #import "hashtable2.h"
 #import "maptable.h"
+#import "objc-initialize.h"
+#import "objc-auto.h"
 
-#include <sys/types.h>
-
-// Needed functions not in any header file
-size_t malloc_size (const void * ptr);
 
-// Needed kernel interface
-#import <mach/mach.h>
-#import <mach/thread_status.h>
+/* overriding the default object allocation and error handling routines */
 
-
-/***********************************************************************
-* Conditionals.
-**********************************************************************/
-
-// Define PRELOAD_SUPERCLASS_CACHES to cause method lookups to add the
-// method the appropriate superclass caches, in addition to the normal
-// encaching in the subclass where the method was messaged.  Doing so
-// will speed up messaging the same method from instances of the
-// superclasses, but also uses up valuable cache space for a speculative
-// purpose
-// See radar 2364264 about incorrectly propogating _objc_forward entries
-// and double freeing them, first, before turning this on!
-// (Radar 2364264 is now "inactive".)
-// Double-freeing is also a potential problem when this is off. See 
-// note about _class_lookupMethodAndLoadCache in "Method cache locking".
-//#define PRELOAD_SUPERCLASS_CACHES
-
-/***********************************************************************
-* Exports.
-**********************************************************************/
-
-#ifdef OBJC_INSTRUMENTED
-enum {
-    CACHE_HISTOGRAM_SIZE       = 512
-};
-
-unsigned int   CacheHitHistogram [CACHE_HISTOGRAM_SIZE];
-unsigned int   CacheMissHistogram [CACHE_HISTOGRAM_SIZE];
-#endif
-
-/***********************************************************************
-* Constants and macros internal to this module.
-**********************************************************************/
-
-// INIT_CACHE_SIZE and INIT_META_CACHE_SIZE must be a power of two
-enum {
-    INIT_CACHE_SIZE_LOG2               = 2,
-    INIT_META_CACHE_SIZE_LOG2  = 2,
-    INIT_CACHE_SIZE                    = (1 << INIT_CACHE_SIZE_LOG2),
-    INIT_META_CACHE_SIZE               = (1 << INIT_META_CACHE_SIZE_LOG2)
-};
-
-// Amount of space required for count hash table buckets, knowing that
-// one entry is embedded in the cache structure itself
-#define TABLE_SIZE(count)      ((count - 1) * sizeof(Method))
-
-// A sentinal (magic value) to report bad thread_get_state status
-#define PC_SENTINAL             0
+OBJC_EXPORT id (*_alloc)(Class, size_t);
+OBJC_EXPORT id (*_copy)(id, size_t);
+OBJC_EXPORT id (*_realloc)(id, size_t);
+OBJC_EXPORT id (*_dealloc)(id);
+OBJC_EXPORT id (*_zoneAlloc)(Class, size_t, void *);
+OBJC_EXPORT id (*_zoneRealloc)(id, size_t, void *);
+OBJC_EXPORT id (*_zoneCopy)(id, size_t, void *);
 
 
-/***********************************************************************
-* Types internal to this module.
-**********************************************************************/
-
-#ifdef OBJC_INSTRUMENTED
-struct CacheInstrumentation
-{
-    unsigned int       hitCount;               // cache lookup success tally
-    unsigned int       hitProbes;              // sum entries checked to hit
-    unsigned int       maxHitProbes;           // max entries checked to hit
-    unsigned int       missCount;              // cache lookup no-find tally
-    unsigned int       missProbes;             // sum entries checked to miss
-    unsigned int       maxMissProbes;          // max entries checked to miss
-    unsigned int       flushCount;             // cache flush tally
-    unsigned int       flushedEntries;         // sum cache entries flushed
-    unsigned int       maxFlushedEntries;      // max cache entries flushed
-};
-typedef struct CacheInstrumentation    CacheInstrumentation;
-
-// Cache instrumentation data follows table, so it is most compatible
-#define CACHE_INSTRUMENTATION(cache)   (CacheInstrumentation *) &cache->buckets[cache->mask + 1];
-#endif
-
 /***********************************************************************
 * Function prototypes internal to this module.
 **********************************************************************/
 
-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);
 static void            _nonexistentHandler             (id self, SEL sel);
-static void             class_initialize                (Class cls);
-static Cache   _cache_expand                   (Class cls);
 static int             LogObjCMessageSend              (BOOL isClassMethod, const char * objectsClass, const char * implementingClass, SEL selector);
-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, 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);
-static void            PrintCacheHeader                (void);
-#ifdef OBJC_INSTRUMENTED
-static void            PrintCacheHistogram             (char * title, unsigned int * firstEntry, unsigned int entryCount);
-#endif
+static Method look_up_method(Class cls, SEL sel, BOOL withCache, BOOL withResolver);
+
 
 /***********************************************************************
 * Static data internal to this module.
 **********************************************************************/
 
-// When _class_uncache is non-zero, cache growth copies the existing
-// entries into the new (larger) cache.  When this flag is zero, new
-// (larger) caches start out empty.
-static int     _class_uncache          = 1;
-
-// When _class_slow_grow is non-zero, any given cache is actually grown
-// only on the odd-numbered times it becomes full; on the even-numbered
-// times, it is simply emptied and re-used.  When this flag is zero,
-// caches are grown every time.
-static int     _class_slow_grow        = 1;
-
-// Lock for cache access.
-// Held when modifying a cache in place.
-// Held when installing a new cache on a class. 
-// Held when adding to the cache garbage list.
-// Held when disposing cache garbage.
-// See "Method cache locking" above for notes about cache locking.
-static OBJC_DECLARE_LOCK(cacheUpdateLock);
-
-// classInitLock protects classInitWaitCond and examination and modification 
-// of CLS_INITIALIZED and CLS_INITIALIZING.
-OBJC_DECLARE_LOCK(classInitLock);
-// classInitWaitCond is signalled when any class is done initializing. 
-// Threads that are waiting for a class to finish initializing wait on this.
-pthread_cond_t classInitWaitCond = PTHREAD_COND_INITIALIZER;
-
-// 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
-// is tallied in cacheFillDuplicates.  When traceDuplicatesVerbose is
-// non-zero, each duplication is logged when found in this way.
-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;
-static unsigned int    LinearFlushCachesVisitedCount           = 0;
-static unsigned int    MaxLinearFlushCachesVisitedCount        = 0;
-static unsigned int    NonlinearFlushCachesCount               = 0;
-static unsigned int    NonlinearFlushCachesClassCount          = 0;
-static unsigned int    NonlinearFlushCachesVisitedCount        = 0;
-static unsigned int    MaxNonlinearFlushCachesVisitedCount     = 0;
-static unsigned int    IdealFlushCachesCount                   = 0;
-static unsigned int    MaxIdealFlushCachesCount                = 0;
-#endif
-
 // Method call logging
 typedef int    (*ObjCLogProc)(BOOL, const char *, const char *, SEL);
 
-static int totalCacheFills NOBSS = 0;
 static int                     objcMsgLogFD            = (-1);
 static ObjCLogProc     objcMsgLogProc          = &LogObjCMessageSend;
 static int                     objcMsgLogEnabled       = 0;
 
-// Error Messages
-static const char
-_errNoMem[]                                    = "failed -- out of memory(%s, %u)",
-_errAllocNil[]                         = "allocating nil object",
-_errFreedObject[]                      = "message %s sent to freed object=0x%lx",
-_errNonExistentObject[]                = "message %s sent to non-existent object=0x%lx",
-_errBadSel[]                           = "invalid selector %s",
-_errNotSuper[]                         = "[%s poseAs:%s]: target not immediate superclass",
-_errNewVars[]                          = "[%s poseAs:%s]: %s defines new instance variables";
-
 /***********************************************************************
 * Information about multi-thread support:
 *
@@ -513,83 +218,100 @@ _errNewVars[]                            = "[%s poseAs:%s]: %s defines new instance variables";
 * atomic so that someone walking these chains will always geta valid
 * result.
 ***********************************************************************/
-/***********************************************************************
-* A static empty cache.  All classes initially point at this cache.
-* When the first message is sent it misses in the cache, and when
-* the cache is grown it checks for this case and uses malloc rather
-* than realloc.  This avoids the need to check for NULL caches in the
-* 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.
-static const struct objc_class freedObjectClass =
+/***********************************************************************
+* object_getClass.
+**********************************************************************/
+Class object_getClass(id obj)
 {
-    Nil,                               // isa
-    Nil,                               // super_class
-    "FREED(id)",                       // name
-    0,                         // version
-    0,                         // info
-    0,                         // instance_size
-    NULL,                              // ivars
-    NULL,                              // methodLists
-    (Cache) &emptyCache,               // cache
-    NULL                               // protocols
-};
-
-static const struct objc_class nonexistentObjectClass =
+    if (obj) return obj->isa;
+    else return Nil;
+}
+
+
+/***********************************************************************
+* object_setClass.
+**********************************************************************/
+Class object_setClass(id obj, Class cls)
 {
-    Nil,                               // isa
-    Nil,                               // super_class
-    "NONEXISTENT(id)",         // name
-    0,                         // version
-    0,                         // info
-    0,                         // instance_size
-    NULL,                              // ivars
-    NULL,                              // methodLists
-    (Cache) &emptyCache,               // cache
-    NULL                               // protocols
-};
+    // fixme could check obj's block size vs. cls's instance size
+    if (obj) {
+        Class old = obj->isa;
+        obj->isa = cls;
+        return old;
+    }
+    else return Nil;
+}
+
 
 /***********************************************************************
 * object_getClassName.
 **********************************************************************/
-const char *   object_getClassName                (id          obj)
+const char *object_getClassName(id obj)
 {
-    // Even nil objects have a class name, sort of
-    if (obj == nil)
-        return "nil";
-
-    // Retrieve name from object's class
-    return ((struct objc_class *) obj->isa)->name;
+    if (obj) return _class_getName(obj->isa);
+    else return "nil";
 }
 
 /***********************************************************************
 * object_getIndexedIvars.
 **********************************************************************/
-void *         object_getIndexedIvars             (id          obj)
+void *object_getIndexedIvars(id obj)
 {
     // ivars are tacked onto the end of the object
-    return ((char *) obj) + ((struct objc_class *) obj->isa)->instance_size;
+    if (obj) return ((char *) obj) + _class_getInstanceSize(obj->isa);
+    else return NULL;
+}
+
+
+Ivar object_setInstanceVariable(id obj, const char *name, void *value)
+{
+    Ivar ivar = NULL;
+
+    if (obj && name) {
+        if ((ivar = class_getInstanceVariable(obj->isa, name))) {
+            objc_assign_ivar_internal(
+                             (id)value, 
+                             obj, 
+                             ivar_getOffset(ivar));
+        }
+    }
+    return ivar;
+}
+
+Ivar object_getInstanceVariable(id obj, const char *name, void **value)
+{
+    if (obj && name) {
+        Ivar ivar;
+        void **ivaridx;
+        if ((ivar = class_getInstanceVariable(obj->isa, name))) {
+            ivaridx = (void **)((char *)obj + ivar_getOffset(ivar));
+            if (value) *value = *ivaridx;
+            return ivar;
+        }
+    }
+    if (value) *value = NULL;
+    return NULL;
+}
+
+
+void object_setIvar(id obj, Ivar ivar, id value)
+{
+    if (obj  &&  ivar) {
+        objc_assign_ivar_internal(value, obj, ivar_getOffset(ivar));
+    }
+}
+
+
+id object_getIvar(id obj, Ivar ivar)
+{
+    if (obj  &&  ivar) {
+        id *idx = (id *)((char *)obj + ivar_getOffset(ivar));
+        return *idx;
+    }
+    return NULL;
 }
 
 
@@ -606,14 +328,14 @@ static void object_cxxDestructFromClass(id obj, Class cls)
 
     // Call cls's dtor first, then superclasses's dtors.
 
-    for ( ; cls != NULL; cls = cls->super_class) {
-        if (!(cls->info & CLS_HAS_CXX_STRUCTORS)) continue; 
+    for ( ; cls != NULL; cls = _class_getSuperclass(cls)) {
+        if (!_class_hasCxxStructorsNoSuper(cls)) 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);
+                             _class_getName(cls));
             }
             (*dtor)(obj);
         }
@@ -626,7 +348,7 @@ static void object_cxxDestructFromClass(id obj, Class cls)
 * Call C++ destructors on obj, if any.
 * Uses methodListLock and cacheUpdateLock. The caller must hold neither.
 **********************************************************************/
-void object_cxxDestruct(id obj)
+__private_extern__ void object_cxxDestruct(id obj)
 {
     if (!obj) return;
     object_cxxDestructFromClass(obj, obj->isa);
@@ -650,27 +372,28 @@ void object_cxxDestruct(id obj)
 static BOOL object_cxxConstructFromClass(id obj, Class cls)
 {
     id (*ctor)(id);
+    Class supercls = _class_getSuperclass(cls);
 
     // Call superclasses' ctors first, if any.
-    if (cls->super_class) {
-        BOOL ok = object_cxxConstructFromClass(obj, cls->super_class);
+    if (supercls) {
+        BOOL ok = object_cxxConstructFromClass(obj, supercls);
         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
+    if (!_class_hasCxxStructorsNoSuper(cls)) 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);
+        _objc_inform("CXX: calling C++ constructors for class %s", _class_getName(cls));
     }
     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);
+    if (supercls) object_cxxDestructFromClass(obj, supercls);
     return NO;
 }
 
@@ -683,1748 +406,459 @@ static BOOL object_cxxConstructFromClass(id obj, Class cls)
 *   caught and discarded. Any partial construction is destructed.
 * Uses methodListLock and cacheUpdateLock. The caller must hold neither.
 **********************************************************************/
-BOOL object_cxxConstruct(id obj)
+__private_extern__ BOOL object_cxxConstruct(id obj)
 {
     if (!obj) return YES;
     return object_cxxConstructFromClass(obj, obj->isa);
 }
 
 
+@interface objc_resolver
++(BOOL)resolveClassMethod:(SEL)sel;
++(BOOL)resolveInstanceMethod:(SEL)sel;
+@end
+
 /***********************************************************************
-* _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, C++ default constructors are called, and all other fields are zeroed.
+* _class_resolveClassMethod
+* Call +resolveClassMethod and return the method added or NULL.
+* cls should be a metaclass.
+* Assumes the method doesn't exist already.
 **********************************************************************/
-static id      _internal_class_createInstanceFromZone (Class           aClass,
-                                                  unsigned     nIvarBytes,
-                                                  void *       z)
+static Method _class_resolveClassMethod(Class cls, SEL sel)
 {
-    id                 obj;
-    register unsigned  byteCount;
+    BOOL resolved;
+    Method meth = NULL;
+    Class clsInstance;
 
-    // Can't create something for nothing
-    if (aClass == Nil)
+    if (!look_up_method(cls, @selector(resolveClassMethod:), 
+                        YES /*cache*/, NO /*resolver*/))
     {
-        __objc_error ((id) aClass, _errAllocNil, 0);
-        return nil;
+        return NULL;
     }
 
-    // Allocate and initialize
-    byteCount = ((struct objc_class *) aClass)->instance_size + nIvarBytes;
-    obj = (id) malloc_zone_calloc (z, 1, byteCount);
-    if (!obj)
-    {
-        __objc_error ((id) aClass, _errNoMem, ((struct objc_class *) aClass)->name, nIvarBytes);
-        return nil;
+    // GrP fixme same hack as +initialize
+    if (strncmp(_class_getName(cls), "_%", 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(_class_getName(cls), '%'); // get posee's real name
+        clsInstance = objc_getClass(baseName);
+    } else {
+        clsInstance = objc_getClass(_class_getName(cls));
     }
-
-    // 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;
+    
+    resolved = [clsInstance resolveClassMethod:sel];
+
+    if (resolved) {
+        // +resolveClassMethod adds to self->isa
+        meth = look_up_method(cls, sel, YES/*cache*/, NO/*resolver*/);
+
+        if (!meth) {
+            // Method resolver didn't add anything?
+            _objc_inform("+[%s resolveClassMethod:%s] returned YES, but "
+                         "no new implementation of +[%s %s] was found", 
+                         class_getName(cls),
+                         sel_getName(sel), 
+                         class_getName(cls), 
+                         sel_getName(sel));
+            return NULL;
+        }
     }
 
-    return obj;
+    return meth;
 }
 
+
 /***********************************************************************
-* _internal_class_createInstance.  Allocate an instance of the specified
-* class with the specified number of bytes for indexed variables, in
-* the default zone, using _internal_class_createInstanceFromZone.
+* _class_resolveInstanceMethod
+* Call +resolveInstanceMethod and return the method added or NULL.
+* cls should be a non-meta class.
+* Assumes the method doesn't exist already.
 **********************************************************************/
-static id      _internal_class_createInstance         (Class           aClass,
-                                                 unsigned      nIvarBytes)
+static Method _class_resolveInstanceMethod(Class cls, SEL sel)
 {
-    return _internal_class_createInstanceFromZone (aClass,
-                                                   nIvarBytes,
-                                                   malloc_default_zone ());
+    BOOL resolved;
+    Method meth = NULL;
+
+    if (!look_up_method(((id)cls)->isa, @selector(resolveInstanceMethod:), 
+                        YES /*cache*/, NO /*resolver*/))
+    {
+        return NULL;
+    }
+
+    resolved = [cls resolveInstanceMethod:sel];
+
+    if (resolved) {
+        // +resolveClassMethod adds to self
+        meth = look_up_method(cls, sel, YES/*cache*/, NO/*resolver*/);
+
+        if (!meth) {
+            // Method resolver didn't add anything?
+            _objc_inform("+[%s resolveInstanceMethod:%s] returned YES, but "
+                         "no new implementation of %c[%s %s] was found", 
+                         class_getName(cls),
+                         sel_getName(sel), 
+                         class_isMetaClass(cls) ? '+' : '-', 
+                         class_getName(cls), 
+                         sel_getName(sel));
+            return NULL;
+        }
+    }
+
+    return meth;
 }
 
-id (*_poseAs)() = (id (*)())class_poseAs;
-id (*_alloc)(Class, unsigned) = _internal_class_createInstance;
-id (*_zoneAlloc)(Class, unsigned, void *) = _internal_class_createInstanceFromZone;
 
 /***********************************************************************
-* class_createInstanceFromZone.  Allocate an instance of the specified
-* class with the specified number of bytes for indexed variables, in
-* the specified zone, using _zoneAlloc.
+* _class_resolveMethod
+* Call +resolveClassMethod or +resolveInstanceMethod and return 
+* the method added or NULL. 
+* Assumes the method doesn't exist already.
 **********************************************************************/
-id     class_createInstanceFromZone   (Class           aClass,
-                                   unsigned    nIvarBytes,
-                                   void *      z)
+static Method _class_resolveMethod(Class cls, SEL sel)
 {
-    // _zoneAlloc can be overridden, but is initially set to
-    // _internal_class_createInstanceFromZone
-    return (*_zoneAlloc) (aClass, nIvarBytes, z);
+    Method meth = NULL;
+
+    if (_class_isMetaClass(cls)) {
+        meth = _class_resolveClassMethod(cls, sel);
+    }
+    if (!meth) {
+        meth = _class_resolveInstanceMethod(cls, sel);
+    }
+
+    if (PrintResolving  &&  meth) {
+        _objc_inform("RESOLVE: method %c[%s %s] dynamically resolved to %p", 
+                     class_isMetaClass(cls) ? '+' : '-', 
+                     class_getName(cls), sel_getName(sel), 
+                     method_getImplementation(meth));
+    }
+    
+    return meth;
 }
 
+
 /***********************************************************************
-* class_createInstance.  Allocate an instance of the specified class with
-* the specified number of bytes for indexed variables, using _alloc.
+* look_up_method
+* Look up a method in the given class and its superclasses. 
+* If withCache==YES, look in the class's method cache too.
+* If withResolver==YES, call +resolveClass/InstanceMethod too.
+* Returns NULL if the method is not found. 
+* +forward:: entries are not returned.
 **********************************************************************/
-id     class_createInstance           (Class           aClass,
-                                unsigned       nIvarBytes)
+static Method look_up_method(Class cls, SEL sel, 
+                             BOOL withCache, BOOL withResolver)
 {
-    // _alloc can be overridden, but is initially set to
-    // _internal_class_createInstance
-    return (*_alloc) (aClass, nIvarBytes);
+    Method meth = NULL;
+
+    if (withCache) {
+        meth = _cache_getMethod(cls, sel, &_objc_msgForward);
+        if (!meth  &&  (IMP)_objc_msgForward == _cache_getImp(cls, sel)) {
+            // Cache contains forward:: . Stop searching.
+            return NULL;
+        }
+    }
+
+    if (!meth) meth = _class_getMethod(cls, sel);
+
+    if (!meth  &&  withResolver) meth = _class_resolveMethod(cls, sel);
+
+    return meth;
 }
 
+
 /***********************************************************************
-* class_setVersion.  Record the specified version with the class.
+* class_getInstanceMethod.  Return the instance method for the
+* specified class and selector.
 **********************************************************************/
-void   class_setVersion               (Class           aClass,
-                              int              version)
+Method class_getInstanceMethod(Class cls, SEL sel)
 {
-    ((struct objc_class *) aClass)->version = version;
+    if (!cls  ||  !sel) return NULL;
+
+    /* Cache is not used because historically it wasn't. */
+    return look_up_method(cls, sel, NO/*cache*/, YES/*resolver*/);
 }
 
 /***********************************************************************
-* class_getVersion.  Return the version recorded with the class.
+* class_getClassMethod.  Return the class method for the specified
+* class and selector.
 **********************************************************************/
-int    class_getVersion               (Class           aClass)
+Method class_getClassMethod(Class cls, SEL sel)
 {
-    return ((struct objc_class *) aClass)->version;
-}
+    if (!cls  ||  !sel) return NULL;
 
-
-static inline Method _findNamedMethodInList(struct objc_method_list * mlist, const char *meth_name) {
-    int i;
-    if (!mlist) return NULL;
-    for (i = 0; i < mlist->method_count; i++) {
-        Method m = &mlist->method_list[i];
-        if (*((const char *)m->method_name) == *meth_name && 0 == strcmp((const char *)(m->method_name), meth_name)) {
-            return m;
-        }
-    }
-    return NULL;
+    return class_getInstanceMethod(_class_getMeta(cls), sel);
 }
 
 
 /***********************************************************************
-* 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.
+* class_getInstanceVariable.  Return the named instance variable.
 **********************************************************************/
-// 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)
+Ivar class_getInstanceVariable(Class cls, const char *name)
 {
-    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;
+    if (!cls  ||  !name) return NULL;
+
+    return _class_getVariable(cls, name);
 }
 
 
 /***********************************************************************
-* 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);
+* class_getClassVariable.  Return the named class variable.
 **********************************************************************/
-static struct objc_method_list *nextMethodList(struct objc_class *cls,
-                                               void **it)
+Ivar class_getClassVariable(Class cls, const char *name)
 {
-    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;
-            }
-        }
-    }
+    if (!cls) return 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;
-    }
+    return class_getInstanceVariable(((id)cls)->isa, name);
 }
 
 
-/* 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;
-    for (i = 0; i < mlist->method_count; i++) {
-        Method m = &mlist->method_list[i];
-        if (m->method_name == sel) {
-            return m;
-        }
-    }
-    return NULL;
+__private_extern__ Property 
+property_list_nth(const struct objc_property_list *plist, uint32_t i)
+{
+    return (Property)(i*plist->entsize + (char *)&plist->first);
 }
 
-static inline Method _findMethodInClass(Class cls, SEL sel) __attribute__((always_inline));
-static inline Method _findMethodInClass(Class cls, SEL sel) {
-    // 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);
+__private_extern__ size_t 
+property_list_size(const struct objc_property_list *plist)
+{
+    return sizeof(struct objc_property_list) + (plist->count-1)*plist->entsize;
+}
+
+__private_extern__ Property *
+copyPropertyList(struct objc_property_list *plist, unsigned int *outCount)
+{
+    Property *result = NULL;
+    unsigned int count = 0;
+
+    if (plist) {
+        count = plist->count;
     }
-    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;
+
+    if (count > 0) {
+        unsigned int i;
+        result = malloc((count+1) * sizeof(Property));
+        
+        for (i = 0; i < count; i++) {
+            result[i] = property_list_nth(plist, i);
         }
-        return NULL;
+        result[i] = NULL;
     }
+
+    if (outCount) *outCount = count;
+    return result;
 }
 
-static inline Method _getMethod(Class cls, SEL sel) {
-    for (; cls; cls = cls->super_class) {
-        Method m;
-        m = _findMethodInClass(cls, sel);
-        if (m) return m;
-    }
-    return NULL;
+const char *property_getName(Property prop)
+{
+    return prop->name;
 }
 
 
-// fixme for gc debugging temporary use
-__private_extern__ IMP findIMPInClass(Class cls, SEL sel)
+const char *property_getAttributes(Property prop)
 {
-    Method m = _findMethodInClass(cls, sel);
-    if (m) return m->method_imp;
-    else return NULL;
+    return prop->attributes;
 }
 
+
 /***********************************************************************
-* class_getInstanceMethod.  Return the instance method for the
-* specified class and selector.
+* _objc_flush_caches.  Flush the caches of the specified class and any
+* of its subclasses.  If cls is a meta-class, only meta-class (i.e.
+* class method) caches are flushed.  If cls is an instance-class, both
+* instance-class and meta-class caches are flushed.
 **********************************************************************/
-Method         class_getInstanceMethod        (Class           aClass,
-                                        SEL            aSelector)
+void _objc_flush_caches(Class cls)
 {
-    Method result;
-
-    // Need both a class and a selector
-    if (!aClass || !aSelector)
-        return NULL;
-
-    // Go to the class
-    OBJC_LOCK(&methodListLock);
-    result = _getMethod (aClass, aSelector);
-    OBJC_UNLOCK(&methodListLock);
-    return result;
+    flush_caches (cls, YES);
 }
 
+
 /***********************************************************************
-* class_getClassMethod.  Return the class method for the specified
-* class and selector.
+* _freedHandler.
 **********************************************************************/
-Method         class_getClassMethod           (Class           aClass,
-                                     SEL               aSelector)
+static void _freedHandler(id obj, SEL sel)
 {
-    Method result;
-
-    // Need both a class and a selector
-    if (!aClass || !aSelector)
-        return NULL;
-
-    // Go to the class or isa
-    OBJC_LOCK(&methodListLock);
-    result = _getMethod (GETMETA(aClass), aSelector);
-    OBJC_UNLOCK(&methodListLock);
-    return result;
+    __objc_error (obj, "message %s sent to freed object=%p", 
+                  sel_getName(sel), obj);
 }
 
 /***********************************************************************
-* class_getVariable.  Return the named instance variable.
+* _nonexistentHandler.
 **********************************************************************/
-static Ivar    class_getVariable              (Class           cls,
-                                      const char *     name)
+static void _nonexistentHandler(id obj, SEL sel)
 {
-    struct objc_class *        thisCls;
-
-    // Outer loop - search the class and its superclasses
-    for (thisCls = cls; thisCls != Nil; thisCls = ((struct objc_class *) thisCls)->super_class)
-    {
-        int    index;
-        Ivar   thisIvar;
-
-        // Skip class having no ivars
-        if (!thisCls->ivars)
-            continue;
-
-        // Inner loop - search the given class
-        thisIvar = &thisCls->ivars->ivar_list[0];
-        for (index = 0; index < thisCls->ivars->ivar_count; index += 1)
-        {
-            // Check this ivar's name.  Be careful because the
-            // compiler generates ivar entries with NULL ivar_name
-            // (e.g. for anonymous bit fields).
-            if ((thisIvar->ivar_name) &&
-                (strcmp (name, thisIvar->ivar_name) == 0))
-                return thisIvar;
-
-            // Move to next ivar
-            thisIvar += 1;
-        }
-    }
-
-    // Not found
-    return NULL;
+    __objc_error (obj, "message %s sent to non-existent object=%p", 
+                  sel_getName(sel), obj);
 }
 
+
 /***********************************************************************
-* class_getInstanceVariable.  Return the named instance variable.
-*
-* Someday add class_getClassVariable ().
+* class_respondsToSelector.
 **********************************************************************/
-Ivar   class_getInstanceVariable              (Class           aClass,
-                                       const char *    name)
+BOOL class_respondsToMethod(Class cls, SEL sel)
 {
-    // Must have a class and a name
-    if (!aClass || !name)
-        return NULL;
+    OBJC_WARN_DEPRECATED;
 
-    // Look it up
-    return class_getVariable (aClass, name);
+    return class_respondsToSelector(cls, sel);
 }
 
-/***********************************************************************
-* flush_caches.  Flush the instance and optionally class method caches
-* of cls and all its subclasses.
-*
-* Specifying Nil for the class "all classes."
-**********************************************************************/
-static void flush_caches(Class cls, BOOL flush_meta)
+
+BOOL class_respondsToSelector(Class cls, SEL sel)
 {
-    int                numClasses = 0, newNumClasses;
-    struct objc_class * *              classes = NULL;
-    int                i;
-    struct objc_class *                clsObject;
-#ifdef OBJC_INSTRUMENTED
-    unsigned int       classesVisited;
-    unsigned int       subclassCount;
-#endif
+    Method meth;
 
-    // Do nothing if class has no cache
-    // This check is safe to do without any cache locks.
-    if (cls && !((struct objc_class *) cls)->cache)
-        return;
+    if (!sel  ||  !cls) return NO;
 
-    newNumClasses = objc_getClassList((Class *)NULL, 0);
-    while (numClasses < newNumClasses) {
-        numClasses = newNumClasses;
-        classes = _realloc_internal(classes, sizeof(Class) * numClasses);
-        newNumClasses = objc_getClassList((Class *)classes, numClasses);
+    meth = look_up_method(cls, sel, YES/*cache*/, YES/*resolver*/);
+    if (meth) {
+        _cache_fill(cls, meth, sel);
+        return YES;
+    } else {
+        // Cache negative result
+        _cache_addForwardEntry(cls, sel);
+        return NO;
     }
-    numClasses = newNumClasses;
+}
 
-    OBJC_LOCK(&cacheUpdateLock);
-
-    // Handle nil and root instance class specially: flush all
-    // instance and class method caches.  Nice that this
-    // loop is linear vs the N-squared loop just below.
-    if (!cls || !((struct objc_class *) cls)->super_class)
-    {
-#ifdef OBJC_INSTRUMENTED
-        LinearFlushCachesCount += 1;
-        classesVisited = 0;
-        subclassCount = 0;
-#endif
-        // Traverse all classes in the hash table
-        for (i = 0; i < numClasses; i++)
-        {
-            struct objc_class *                metaClsObject;
-#ifdef OBJC_INSTRUMENTED
-            classesVisited += 1;
-#endif
-            clsObject = classes[i];
-
-            // Skip class that is known not to be a subclass of this root
-            // (the isa pointer of any meta class points to the meta class
-            // of the root).
-            // NOTE: When is an isa pointer of a hash tabled class ever nil?
-            metaClsObject = clsObject->isa;
-            if (cls  &&  metaClsObject  &&  cls->isa != metaClsObject->isa)
-            {
-                continue;
-            }
-
-#ifdef OBJC_INSTRUMENTED
-            subclassCount += 1;
-#endif
-
-            _cache_flush (clsObject);
-            if (flush_meta  &&  metaClsObject != NULL) {
-                _cache_flush (metaClsObject);
-            }
-        }
-#ifdef OBJC_INSTRUMENTED
-        LinearFlushCachesVisitedCount += classesVisited;
-        if (classesVisited > MaxLinearFlushCachesVisitedCount)
-            MaxLinearFlushCachesVisitedCount = classesVisited;
-        IdealFlushCachesCount += subclassCount;
-        if (subclassCount > MaxIdealFlushCachesCount)
-            MaxIdealFlushCachesCount = subclassCount;
-#endif
-
-        OBJC_UNLOCK(&cacheUpdateLock);
-        _free_internal(classes);
-        return;
-    }
-
-    // Outer loop - flush any cache that could now get a method from
-    // cls (i.e. the cache associated with cls and any of its subclasses).
-#ifdef OBJC_INSTRUMENTED
-    NonlinearFlushCachesCount += 1;
-    classesVisited = 0;
-    subclassCount = 0;
-#endif
-    for (i = 0; i < numClasses; i++)
-    {
-        struct objc_class *            clsIter;
-
-#ifdef OBJC_INSTRUMENTED
-        NonlinearFlushCachesClassCount += 1;
-#endif
-        clsObject = classes[i];
-
-        // Inner loop - Process a given class
-        clsIter = clsObject;
-        while (clsIter)
-        {
-
-#ifdef OBJC_INSTRUMENTED
-            classesVisited += 1;
-#endif
-            // Flush clsObject instance method cache if
-            // clsObject is a subclass of cls, or is cls itself
-            // Flush the class method cache if that was asked for
-            if (clsIter == cls)
-            {
-#ifdef OBJC_INSTRUMENTED
-                subclassCount += 1;
-#endif
-                _cache_flush (clsObject);
-                if (flush_meta)
-                    _cache_flush (clsObject->isa);
-
-                break;
-
-            }
-
-            // Flush clsObject class method cache if cls is
-            // the meta class of clsObject or of one
-            // of clsObject's superclasses
-            else if (clsIter->isa == cls)
-            {
-#ifdef OBJC_INSTRUMENTED
-                subclassCount += 1;
-#endif
-                _cache_flush (clsObject->isa);
-                break;
-            }
-
-            // Move up superclass chain
-            else if (ISINITIALIZED(clsIter))
-                clsIter = clsIter->super_class;
-
-            // clsIter is not initialized, so its cache
-            // must be empty.  This happens only when
-            // clsIter == clsObject, because
-            // superclasses are initialized before
-            // subclasses, and this loop traverses
-            // from sub- to super- classes.
-            else
-                break;
-        }
-    }
-#ifdef OBJC_INSTRUMENTED
-    NonlinearFlushCachesVisitedCount += classesVisited;
-    if (classesVisited > MaxNonlinearFlushCachesVisitedCount)
-        MaxNonlinearFlushCachesVisitedCount = classesVisited;
-    IdealFlushCachesCount += subclassCount;
-    if (subclassCount > MaxIdealFlushCachesCount)
-        MaxIdealFlushCachesCount = subclassCount;
-#endif
-
-    OBJC_UNLOCK(&cacheUpdateLock);
-    _free_internal(classes);
-}
-
-/***********************************************************************
-* _objc_flush_caches.  Flush the caches of the specified class and any
-* of its subclasses.  If cls is a meta-class, only meta-class (i.e.
-* class method) caches are flushed.  If cls is an instance-class, both
-* instance-class and meta-class caches are flushed.
-**********************************************************************/
-void           _objc_flush_caches             (Class           cls)
-{
-    flush_caches (cls, YES);
-}
-
-/***********************************************************************
-* do_not_remove_this_dummy_function.
-**********************************************************************/
-void           do_not_remove_this_dummy_function          (void)
-{
-    (void) class_nextMethodList (NULL, NULL);
-}
-
-
-/***********************************************************************
-* class_nextMethodList.
-* External version of nextMethodList().
-*
-* 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)
-{
-    struct objc_method_list *result;
-    OBJC_LOCK(&methodListLock);
-    result = nextMethodList(cls, it);
-    OBJC_UNLOCK(&methodListLock);
-    return result;
-}
-
-/***********************************************************************
-* _dummy.
-**********************************************************************/
-void           _dummy             (void)
-{
-    (void) class_nextMethodList (Nil, NULL);
-}
-
-/***********************************************************************
-* class_addMethods.
-*
-* Formerly class_addInstanceMethods ()
-**********************************************************************/
-void   class_addMethods       (Class                           cls,
-                             struct objc_method_list * meths)
-{
-    // 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,
-    // this will still flush it and any of its sub-meta classes.
-    flush_caches (cls, NO);
-}
-
-/***********************************************************************
-* class_addClassMethods.
-*
-* Obsolete (for binary compatibility only).
-**********************************************************************/
-void   class_addClassMethods  (Class                           cls,
-                             struct objc_method_list * meths)
-{
-    class_addMethods (((struct objc_class *) cls)->isa, meths);
-}
-
-/***********************************************************************
-* class_removeMethods.
-**********************************************************************/
-void   class_removeMethods    (Class                           cls,
-                             struct objc_method_list * meths)
-{
-    // 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,
-    // this will still flush it and any of its sub-meta classes.
-    flush_caches (cls, NO);
-}
-
-/***********************************************************************
-* addClassToOriginalClass.  Add to a hash table of classes involved in
-* a posing situation.  We use this when we need to get to the "original"
-* class for some particular name through the function objc_getOrigClass.
-* For instance, the implementation of [super ...] will use this to be
-* sure that it gets hold of the correct super class, so that no infinite
-* loops will occur if the class it appears in is involved in posing.
-*
-* We use the classLock to guard the hash table.
-*
-* See tracker bug #51856.
-**********************************************************************/
-
-static NXMapTable *    posed_class_hash = NULL;
-static NXMapTable *    posed_class_to_original_class_hash = NULL;
-
-static void    addClassToOriginalClass        (Class   posingClass,
-                                            Class      originalClass)
-{
-    // Install hash table when it is first needed
-    if (!posed_class_to_original_class_hash)
-    {
-        posed_class_to_original_class_hash =
-        NXCreateMapTableFromZone (NXPtrValueMapPrototype,
-                                  8,
-                                  _objc_internal_zone ());
-    }
-
-    // Add pose to hash table
-    NXMapInsert (posed_class_to_original_class_hash,
-                 posingClass,
-                 originalClass);
-}
-
-/***********************************************************************
-* getOriginalClassForPosingClass.
-**********************************************************************/
-Class  getOriginalClassForPosingClass  (Class  posingClass)
-{
-    return NXMapGet (posed_class_to_original_class_hash, posingClass);
-}
-
-/***********************************************************************
-* objc_getOrigClass.
-**********************************************************************/
-Class  objc_getOrigClass                  (const char *        name)
-{
-    struct objc_class *        ret;
-
-    // Look for class among the posers
-    ret = Nil;
-    OBJC_LOCK(&classLock);
-    if (posed_class_hash)
-        ret = (Class) NXMapGet (posed_class_hash, name);
-    OBJC_UNLOCK(&classLock);
-    if (ret)
-        return ret;
-
-    // Not a poser.  Do a normal lookup.
-    ret = objc_getClass (name);
-    if (!ret)
-        _objc_inform ("class `%s' not linked into application", name);
-
-    return ret;
-}
-
-/***********************************************************************
-* _objc_addOrigClass.  This function is only used from class_poseAs.
-* Registers the original class names, before they get obscured by
-* posing, so that [super ..] will work correctly from categories
-* in posing classes and in categories in classes being posed for.
-**********************************************************************/
-static void    _objc_addOrigClass         (Class       origClass)
-{
-    OBJC_LOCK(&classLock);
-
-    // Create the poser's hash table on first use
-    if (!posed_class_hash)
-    {
-        posed_class_hash = NXCreateMapTableFromZone (NXStrValueMapPrototype,
-                                                     8,
-                                                     _objc_internal_zone ());
-    }
-
-    // Add the named class iff it is not already there (or collides?)
-    if (NXMapGet (posed_class_hash, ((struct objc_class *)origClass)->name) == 0)
-        NXMapInsert (posed_class_hash, ((struct objc_class *)origClass)->name, origClass);
-
-    OBJC_UNLOCK(&classLock);
-}
 
 /***********************************************************************
-* class_poseAs.
-*
-* !!! class_poseAs () does not currently flush any caches.
+* class_getMethodImplementation.
+* Returns the IMP that would be invoked if [obj sel] were sent, 
+* where obj is an instance of class cls.
 **********************************************************************/
-Class          class_poseAs           (Class           imposter,
-                            Class              original)
+IMP class_lookupMethod(Class cls, SEL sel)
 {
-    struct objc_class * clsObject;
-    char *                     imposterNamePtr;
-    NXHashTable *              class_hash;
-    NXHashState                state;
-    struct objc_class *                        copy;
-#ifdef OBJC_CLASS_REFS
-    header_info *              hInfo;
-#endif
-
-    // Trivial case is easy
-    if (imposter == original)
-        return imposter;
-
-    // Imposter must be an immediate subclass of the original
-    if (((struct objc_class *)imposter)->super_class != original) {
-        __objc_error(imposter, _errNotSuper, ((struct objc_class *)imposter)->name, ((struct objc_class *)original)->name);
-    }
-
-    // Can't pose when you have instance variables (how could it work?)
-    if (((struct objc_class *)imposter)->ivars) {
-        __objc_error(imposter, _errNewVars, ((struct objc_class *)imposter)->name, ((struct objc_class *)original)->name, ((struct objc_class *)imposter)->name);
-    }
-
-    // Build a string to use to replace the name of the original class.
-    #define imposterNamePrefix "_%"
-    imposterNamePtr = _malloc_internal(strlen(((struct objc_class *)original)->name) + strlen(imposterNamePrefix) + 1);
-    strcpy(imposterNamePtr, imposterNamePrefix);
-    strcat(imposterNamePtr, ((struct objc_class *)original)->name);
-    #undef imposterNamePrefix
-
-    // We lock the class hashtable, so we are thread safe with respect to
-    // calls to objc_getClass ().  However, the class names are not
-    // changed atomically, nor are all of the subclasses updated
-    // atomically.  I have ordered the operations so that you will
-    // never crash, but you may get inconsistent results....
-
-    // Register the original class so that [super ..] knows
-    // exactly which classes are the "original" classes.
-    _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 ();
-
-    // Remove both the imposter and the original class.
-    NXHashRemove (class_hash, imposter);
-    NXHashRemove (class_hash, original);
-
-    NXHashInsert (class_hash, copy);
-    addClassToOriginalClass (imposter, copy);
-
-    // Mark the imposter as such
-    _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;
-    ((struct objc_class *)imposter)->isa->name = ((struct objc_class *)original)->isa->name;
-
-    // Also copy the version field to avoid archiving problems.
-    ((struct objc_class *)imposter)->version = ((struct objc_class *)original)->version;
-
-    // Change all subclasses of the original to point to the imposter.
-    state = NXInitHashState (class_hash);
-    while (NXNextHashState (class_hash, &state, (void **) &clsObject))
-    {
-        while  ((clsObject) && (clsObject != imposter) &&
-                (clsObject != copy))
-        {
-            if (clsObject->super_class == original)
-            {
-                clsObject->super_class = imposter;
-                clsObject->isa->super_class = ((struct objc_class *)imposter)->isa;
-                // We must flush caches here!
-                break;
-            }
-
-            clsObject = clsObject->super_class;
-        }
-    }
-
-#ifdef OBJC_CLASS_REFS
-    // Replace the original with the imposter in all class refs
-    // Major loop - process all headers
-    for (hInfo = _objc_headerStart(); hInfo != NULL; hInfo = hInfo->next)
-    {
-        Class *                cls_refs;
-        unsigned int   refCount;
-        unsigned int   index;
-
-        // Get refs associated with this header
-        cls_refs = (Class *) _getObjcClassRefs ((headerType *) hInfo->mhdr, &refCount);
-        if (!cls_refs || !refCount)
-            continue;
-
-        // Minor loop - process this header's refs
-        cls_refs = (Class *) ((unsigned long) cls_refs + hInfo->image_slide);
-        for (index = 0; index < refCount; index += 1)
-        {
-            if (cls_refs[index] == original)
-                cls_refs[index] = imposter;
-        }
-    }
-#endif // OBJC_CLASS_REFS
-
-    // Change the name of the original class.
-    ((struct objc_class *)original)->name          = imposterNamePtr + 1;
-    ((struct objc_class *)original)->isa->name = imposterNamePtr;
-
-    // Restore the imposter and the original class with their new names.
-    NXHashInsert (class_hash, imposter);
-    NXHashInsert (class_hash, original);
-
-    OBJC_UNLOCK(&classLock);
-
-    return imposter;
-}
-
-/***********************************************************************
-* _freedHandler.
-**********************************************************************/
-static void    _freedHandler          (id              self,
-                                  SEL          sel)
-{
-    __objc_error (self, _errFreedObject, SELNAME(sel), self);
-}
-
-/***********************************************************************
-* _nonexistentHandler.
-**********************************************************************/
-static void    _nonexistentHandler    (id              self,
-                                    SEL                sel)
-{
-    __objc_error (self, _errNonExistentObject, SELNAME(sel), self);
-}
-
-/***********************************************************************
-* class_respondsToMethod.
-*
-* Called from -[Object respondsTo:] and +[Object instancesRespondTo:]
-**********************************************************************/
-BOOL   class_respondsToMethod         (Class           cls,
-                                    SEL                sel)
-{
-    Method                             meth;
-    IMP imp;
-
-    // No one responds to zero!
-    if (!sel)
-        return NO;
-
-    imp = _cache_getImp(cls, sel);
-    if (imp) {
-        // Found method in cache. 
-        // If the cache entry is forward::, the class does not respond to sel.
-        return (imp != &_objc_msgForward);
-    }
-
-    // Handle cache miss
-    OBJC_LOCK(&methodListLock);
-    meth = _getMethod(cls, sel);
-    OBJC_UNLOCK(&methodListLock);
-    if (meth) {
-        _cache_fill(cls, meth, sel);
-        return YES;
-    }
-
-    // Not implemented.  Use _objc_msgForward.
-    _cache_addForwardEntry(cls, sel);
-
-    return NO;
-}
-
-
-/***********************************************************************
-* class_lookupMethod.
-*
-* Called from -[Object methodFor:] and +[Object instanceMethodFor:]
-**********************************************************************/
-IMP            class_lookupMethod             (Class           cls,
-                                SEL            sel)
-{
-    IMP imp;
+    OBJC_WARN_DEPRECATED;
 
     // No one responds to zero!
     if (!sel) {
-        __objc_error(cls, _errBadSel, sel);
-    }
-
-    imp = _cache_getImp(cls, sel);
-    if (imp) return imp;
-
-    // Handle cache miss
-    return _class_lookupMethodAndLoadCache (cls, sel);
-}
-
-/***********************************************************************
-* 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.
-**********************************************************************/
-__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);
-}
-
-
-/***********************************************************************
-* _cache_malloc.
-*
-* Called from _cache_create() and cache_expand()
-* Cache locks: cacheUpdateLock must be held by the caller.
-**********************************************************************/
-static Cache _cache_malloc(int slotCount)
-{
-    Cache new_cache;
-    size_t size;
-
-    // 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);
-    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;
-}
-
-
-/***********************************************************************
-* _cache_create.
-*
-* Called from _cache_expand().
-* Cache locks: cacheUpdateLock must be held by the caller.
-**********************************************************************/
-Cache          _cache_create           (Class          cls)
-{
-    Cache              new_cache;
-    int                        slotCount;
-
-    // Select appropriate size
-    slotCount = (ISMETA(cls)) ? INIT_META_CACHE_SIZE : INIT_CACHE_SIZE;
-
-    new_cache = _cache_malloc(slotCount);
-
-    // Install the cache
-    ((struct objc_class *)cls)->cache = new_cache;
-
-    // Clear the cache flush flag so that we will not flush this cache
-    // before expanding it for the first time.
-    _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)
-        _class_clearInfo(cls, CLS_GROW_CACHE);
-
-    // Return our creation
-    return new_cache;
-}
-
-/***********************************************************************
-* _cache_expand.
-*
-* Called from _cache_fill ()
-* Cache locks: cacheUpdateLock must be held by the caller.
-**********************************************************************/
-static Cache           _cache_expand          (Class           cls)
-{
-    Cache              old_cache;
-    Cache              new_cache;
-    unsigned int       slotCount;
-    unsigned int       index;
-
-    // First growth goes from emptyCache to a real one
-    old_cache = ((struct objc_class *)cls)->cache;
-    if (old_cache == &emptyCache)
-        return _cache_create (cls);
-
-    // iff _class_slow_grow, trade off actual cache growth with re-using
-    // the current one, so that growth only happens every odd time
-    if (_class_slow_grow)
-    {
-        // CLS_GROW_CACHE controls every-other-time behavior.  If it
-        // 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)
-            _class_clearInfo(cls, CLS_GROW_CACHE);
-
-        // Reuse the current cache storage this time
-        else
-        {
-            // Clear the valid-entry counter
-            old_cache->occupied = 0;
-
-            // Invalidate all the cache entries
-            for (index = 0; index < old_cache->mask + 1; index += 1)
-            {
-                // Remember what this entry was, so we can possibly
-                // deallocate it after the bucket has been invalidated
-                Method         oldEntry = old_cache->buckets[index];
-                // Skip invalid entry
-                if (!CACHE_BUCKET_VALID(old_cache->buckets[index]))
-                    continue;
-
-                // Invalidate this entry
-                CACHE_BUCKET_VALID(old_cache->buckets[index]) = NULL;
-
-                // Deallocate "forward::" entry
-                if (CACHE_BUCKET_IMP(oldEntry) == &_objc_msgForward)
-                {
-                    _cache_collect_free (oldEntry, sizeof(struct objc_method), NO);
-                }
-            }
-
-            // Set the slow growth flag so the cache is next grown
-            _class_setInfo(cls, CLS_GROW_CACHE);
-
-            // Return the same old cache, freshly emptied
-            return old_cache;
-        }
-
-    }
-
-    // Double the cache size
-    slotCount = (old_cache->mask + 1) << 1;
-
-    new_cache = _cache_malloc(slotCount);
-
-#ifdef OBJC_INSTRUMENTED
-    // Propagate the instrumentation data
-    {
-        CacheInstrumentation * oldCacheData;
-        CacheInstrumentation * newCacheData;
-
-        oldCacheData = CACHE_INSTRUMENTATION(old_cache);
-        newCacheData = CACHE_INSTRUMENTATION(new_cache);
-        bcopy ((const char *)oldCacheData, (char *)newCacheData, sizeof(CacheInstrumentation));
-    }
-#endif
-
-    // iff _class_uncache, copy old cache entries into the new cache
-    if (_class_uncache == 0)
-    {
-        int    newMask;
-
-        newMask = new_cache->mask;
-
-        // Look at all entries in the old cache
-        for (index = 0; index < old_cache->mask + 1; index += 1)
-        {
-            int        index2;
-
-            // Skip invalid entry
-            if (!CACHE_BUCKET_VALID(old_cache->buckets[index]))
-                continue;
-
-            // Hash the old entry into the new table
-            index2 = CACHE_HASH(CACHE_BUCKET_NAME(old_cache->buckets[index]), 
-                                newMask);
-
-            // Find an available spot, at or following the hashed spot;
-            // Guaranteed to not infinite loop, because table has grown
-            for (;;)
-            {
-                if (!CACHE_BUCKET_VALID(new_cache->buckets[index2]))
-                {
-                    new_cache->buckets[index2] = old_cache->buckets[index];
-                    break;
-                }
-
-                index2 += 1;
-                index2 &= newMask;
-            }
-
-            // Account for the addition
-            new_cache->occupied += 1;
-        }
-
-        // Set the cache flush flag so that we will flush this cache
-        // before expanding it again.
-        _class_setInfo(cls, CLS_FLUSH_CACHE);
-    }
-
-    // Deallocate "forward::" entries from the old cache
-    else
-    {
-        for (index = 0; index < old_cache->mask + 1; index += 1)
-        {
-            if (CACHE_BUCKET_VALID(old_cache->buckets[index]) &&
-                CACHE_BUCKET_IMP(old_cache->buckets[index]) == &_objc_msgForward)
-            {
-                _cache_collect_free (old_cache->buckets[index], sizeof(struct objc_method), NO);
-            }
-        }
-    }
-
-    // Install new cache
-    ((struct objc_class *)cls)->cache = new_cache;
-
-    // Deallocate old cache, try freeing all the garbage
-    _cache_collect_free (old_cache, old_cache->mask * sizeof(Method), YES);
-    return new_cache;
-}
-
-/***********************************************************************
-* instrumentObjcMessageSends/logObjcMessageSends.
-**********************************************************************/
-static int     LogObjCMessageSend (BOOL                        isClassMethod,
-                               const char *    objectsClass,
-                               const char *    implementingClass,
-                               SEL                             selector)
-{
-    char       buf[ 1024 ];
-
-    // Create/open the log file
-    if (objcMsgLogFD == (-1))
-    {
-        snprintf (buf, sizeof(buf), "/tmp/msgSends-%d", (int) getpid ());
-        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
-    snprintf(buf, sizeof(buf), "%c %s %s %s\n",
-            isClassMethod ? '+' : '-',
-            objectsClass,
-            implementingClass,
-            (char *) selector);
-
-    write (objcMsgLogFD, buf, strlen(buf));
-
-    // Tell caller to not cache the method
-    return 0;
-}
-
-void   instrumentObjcMessageSends       (BOOL          flag)
-{
-    int                enabledValue = (flag) ? 1 : 0;
-
-    // Shortcut NOP
-    if (objcMsgLogEnabled == enabledValue)
-        return;
-
-    // If enabling, flush all method caches so we get some traces
-    if (flag)
-        flush_caches (Nil, YES);
-
-    // Sync our log file
-    if (objcMsgLogFD != (-1))
-        fsync (objcMsgLogFD);
-
-    objcMsgLogEnabled = enabledValue;
-}
-
-void   logObjcMessageSends      (ObjCLogProc   logProc)
-{
-    if (logProc)
-    {
-        objcMsgLogProc = logProc;
-        objcMsgLogEnabled = 1;
-    }
-    else
-    {
-        objcMsgLogProc = logProc;
-        objcMsgLogEnabled = 0;
-    }
-
-    if (objcMsgLogFD != (-1))
-        fsync (objcMsgLogFD);
-}
-
-
-/***********************************************************************
-* _cache_fill.  Add the specified method to the specified class' cache.
-* Returns NO if the cache entry wasn't added: cache was busy, 
-*  class is still being initialized, new entry is a duplicate.
-*
-* Called only from _class_lookupMethodAndLoadCache and
-* class_respondsToMethod and _cache_addForwardEntry.
-*
-* Cache locks: cacheUpdateLock must not be held.
-**********************************************************************/
-static BOOL    _cache_fill(Class cls, Method smt, SEL sel)
-{
-    unsigned int               newOccupied;
-    arith_t index;
-    Method *buckets;
-    Cache cache;
-
-    // Never cache before +initialize is done
-    if (!ISINITIALIZED(cls)) {
-        return NO;
-    }
-
-    // Keep tally of cache additions
-    totalCacheFills += 1;
-
-    OBJC_LOCK(&cacheUpdateLock);
-
-    cache = ((struct objc_class *)cls)->cache;
-
-    // Check for duplicate entries, if we're in the mode
-    if (traceDuplicates)
-    {
-        int    index2;
-        arith_t mask = cache->mask;
-        buckets        = cache->buckets;        
-
-        // Scan the cache
-        for (index2 = 0; index2 < mask + 1; index2 += 1)
-        {
-            // Skip invalid or non-duplicate entry
-            if ((!CACHE_BUCKET_VALID(buckets[index2])) ||
-                (strcmp ((char *) CACHE_BUCKET_NAME(buckets[index2]), (char *) smt->method_name) != 0))
-                continue;
-
-            // Tally duplication, but report iff wanted
-            cacheFillDuplicates += 1;
-            if (traceDuplicatesVerbose)
-            {
-                _objc_inform  ("Cache fill duplicate #%d: found %x adding %x: %s\n",
-                               cacheFillDuplicates,
-                               (unsigned int) CACHE_BUCKET_NAME(buckets[index2]),
-                               (unsigned int) smt->method_name,
-                               (char *) smt->method_name);
-            }
-        }
-    }
-
-    // Make sure the entry wasn't added to the cache by some other thread 
-    // before we grabbed the cacheUpdateLock.
-    // Don't use _cache_getMethod() because _cache_getMethod() doesn't 
-    // return forward:: entries.
-    if (_cache_getImp(cls, sel)) {
-        OBJC_UNLOCK(&cacheUpdateLock);
-        return NO; // entry is already cached, didn't add new one
-    }
-
-    // Use the cache as-is if it is less than 3/4 full
-    newOccupied = cache->occupied + 1;
-    if ((newOccupied * 4) <= (cache->mask + 1) * 3) {
-        // Cache is less than 3/4 full.
-        cache->occupied = newOccupied;
-    } else {
-        // Cache is too full. Flush it or expand it.
-        if ((((struct objc_class * )cls)->info & CLS_FLUSH_CACHE) != 0) {
-            _cache_flush (cls);
-        } else {
-            cache = _cache_expand (cls);
-        }
-
-        // Account for the addition
-        cache->occupied += 1;
-    }
-
-    // Insert the new entry.  This can be done by either:
-    //         (a) Scanning for the first unused spot.  Easy!
-    // (b) Opening up an unused spot by sliding existing
-    //     entries down by one.  The benefit of this
-    //     extra work is that it puts the most recently
-    //     loaded entries closest to where the selector
-    //     hash starts the search.
-    //
-    // The loop is a little more complicated because there
-    // are two kinds of entries, so there have to be two ways
-    // to slide them.
-    buckets    = cache->buckets;
-    index      = CACHE_HASH(sel, cache->mask); 
-    for (;;)
-    {
-        // Slide existing entries down by one
-        Method         saveMethod;
-
-        // Copy current entry to a local
-        saveMethod = buckets[index];
-
-        // Copy previous entry (or new entry) to current slot
-        buckets[index] = smt;
-
-        // Done if current slot had been invalid
-        if (saveMethod == NULL)
-            break;
-
-        // Prepare to copy saved value into next slot
-        smt = saveMethod;
-
-        // Move on to next slot
-        index += 1;
-        index &= cache->mask;
-    }
-
-    OBJC_UNLOCK(&cacheUpdateLock);
-
-    return YES; // successfully added new cache entry
-}
-
-
-/***********************************************************************
-* _cache_addForwardEntry
-* Add a forward:: entry  for the given selector to cls's method cache.
-* Does nothing if the cache addition fails for any reason.
-* Called from class_respondsToMethod and _class_lookupMethodAndLoadCache.
-* Cache locks: cacheUpdateLock must not be held.
-**********************************************************************/
-static void _cache_addForwardEntry(Class cls, SEL sel)
-{
-    Method smt;
-  
-    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.
-        _free_internal(smt);
-    }
-}
-
-
-/***********************************************************************
-* _cache_flush.  Invalidate all valid entries in the given class' cache,
-* and clear the CLS_FLUSH_CACHE in the cls->info.
-*
-* Called from flush_caches() and _cache_fill()
-* Cache locks: cacheUpdateLock must be held by the caller.
-**********************************************************************/
-static void    _cache_flush            (Class          cls)
-{
-    Cache                      cache;
-    unsigned int       index;
-
-    // Locate cache.  Ignore unused cache.
-    cache = ((struct objc_class *)cls)->cache;
-    if (cache == NULL  ||  cache == &emptyCache)
-        return;
-
-#ifdef OBJC_INSTRUMENTED
-    {
-        CacheInstrumentation * cacheData;
-
-        // Tally this flush
-        cacheData = CACHE_INSTRUMENTATION(cache);
-        cacheData->flushCount += 1;
-        cacheData->flushedEntries += cache->occupied;
-        if (cache->occupied > cacheData->maxFlushedEntries)
-            cacheData->maxFlushedEntries = cache->occupied;
+        __objc_error(cls, "invalid selector (null)");
     }
-#endif
 
-    // Traverse the cache
-    for (index = 0; index <= cache->mask; index += 1)
-    {
-        // Remember what this entry was, so we can possibly
-        // deallocate it after the bucket has been invalidated
-        Method         oldEntry = cache->buckets[index];
+    return class_getMethodImplementation(cls, sel);
+}
 
-        // Invalidate this entry
-        CACHE_BUCKET_VALID(cache->buckets[index]) = NULL;
+IMP class_getMethodImplementation(Class cls, SEL sel)
+{
+    IMP imp;
 
-        // Deallocate "forward::" entry
-        if (oldEntry && oldEntry->method_imp == &_objc_msgForward)
-            _cache_collect_free (oldEntry, sizeof(struct objc_method), NO);
-    }
+    if (!cls  ||  !sel) return NULL;
 
-    // Clear the valid-entry counter
-    cache->occupied = 0;
+    // fixme _objc_msgForward does not conform to ABI and cannot be 
+    // called externally
 
-    // Clear the cache flush flag so that we will not flush this cache
-    // before expanding it again.
-    _class_clearInfo(cls, CLS_FLUSH_CACHE);
+    imp = _cache_getImp(cls, sel);
+    if (!imp) {
+        // Handle cache miss
+        imp = _class_lookupMethodAndLoadCache (cls, sel);
+    }
+    return imp;
 }
 
-/***********************************************************************
-* _objc_getFreedObjectClass.  Return a pointer to the dummy freed
-* object class.  Freed objects get their isa pointers replaced with
-* a pointer to the freedObjectClass, so that we can catch usages of
-* the freed object.
-**********************************************************************/
-Class          _objc_getFreedObjectClass          (void)
-{
-    return (Class) &freedObjectClass;
-}
 
-/***********************************************************************
-* _objc_getNonexistentClass.  Return a pointer to the dummy nonexistent
-* object class.  This is used when, for example, mapping the class
-* refs for an image, and the class can not be found, so that we can
-* catch later uses of the non-existent class.
-**********************************************************************/
-Class          _objc_getNonexistentClass          (void)
+IMP class_getMethodImplementation_stret(Class cls, SEL sel)
 {
-    return (Class) &nonexistentObjectClass;
+    IMP imp = class_getMethodImplementation(cls, sel);
+    // fixme check for forwarding and use stret forwarder instead
+    return imp;
 }
 
 
-/***********************************************************************
-* struct _objc_initializing_classes
-* Per-thread list of classes currently being initialized by that thread. 
-* During initialization, that thread is allowed to send messages to that 
-* class, but other threads have to wait.
-* The list is a simple array of metaclasses (the metaclass stores 
-* the initialization state). 
-**********************************************************************/
-typedef struct _objc_initializing_classes {
-    int classesAllocated;
-    struct objc_class** metaclasses;
-} _objc_initializing_classes;
+// Ignored selectors get method->imp = &_objc_ignored_method
+__private_extern__ id _objc_ignored_method(id self, SEL _cmd) { return self; }
 
 
 /***********************************************************************
-* _fetchInitializingClassList
-* Return the list of classes being initialized by this thread.
-* If create == YES, create the list when no classes are being initialized by this thread.
-* If create == NO, return NULL when no classes are being initialized by this thread.
+* instrumentObjcMessageSends/logObjcMessageSends.
 **********************************************************************/
-static _objc_initializing_classes *_fetchInitializingClassList(BOOL create)
+static int     LogObjCMessageSend (BOOL                        isClassMethod,
+                               const char *    objectsClass,
+                               const char *    implementingClass,
+                               SEL                             selector)
 {
-    _objc_pthread_data *data;
-    _objc_initializing_classes *list;
-    struct objc_class **classes;
-
-    data = pthread_getspecific(_objc_pthread_key);
-    if (data == NULL) {
-        if (!create) {
-            return NULL;
-        } else {
-            data = _calloc_internal(1, sizeof(_objc_pthread_data));
-            pthread_setspecific(_objc_pthread_key, data);
-        }
-    }
+    char       buf[ 1024 ];
 
-    list = data->initializingClasses;
-    if (list == NULL) {
-        if (!create) {
-            return NULL;
-        } else {
-            list = _calloc_internal(1, sizeof(_objc_initializing_classes));
-            data->initializingClasses = list;
+    // Create/open the log file
+    if (objcMsgLogFD == (-1))
+    {
+        snprintf (buf, sizeof(buf), "/tmp/msgSends-%d", (int) getpid ());
+        objcMsgLogFD = secure_open (buf, O_WRONLY | O_CREAT, geteuid());
+        if (objcMsgLogFD < 0) {
+            // no log file - disable logging
+            objcMsgLogEnabled = 0;
+            objcMsgLogFD = -1;
+            return 1;
         }
     }
 
-    classes = list->metaclasses;
-    if (classes == NULL) {
-        // If _objc_initializing_classes exists, allocate metaclass array, 
-        // even if create == NO.
-        // Allow 4 simultaneous class inits on this thread before realloc.
-        list->classesAllocated = 4;
-        classes = _calloc_internal(list->classesAllocated, sizeof(struct objc_class *));
-        list->metaclasses = classes;
-    }
-    return list;
-}
+    // Make the log entry
+    snprintf(buf, sizeof(buf), "%c %s %s %s\n",
+            isClassMethod ? '+' : '-',
+            objectsClass,
+            implementingClass,
+            (char *) selector);
 
+    write (objcMsgLogFD, buf, strlen(buf));
 
-/***********************************************************************
-* _destroyInitializingClassList
-* Deallocate memory used by the given initialization list. 
-* Any part of the list may be NULL.
-* Called from _objc_pthread_destroyspecific().
-**********************************************************************/
-void _destroyInitializingClassList(_objc_initializing_classes *list)
-{
-    if (list != NULL) {
-        if (list->metaclasses != NULL) {
-            _free_internal(list->metaclasses);
-        }
-        _free_internal(list);
-    }
+    // Tell caller to not cache the method
+    return 0;
 }
 
-
-/***********************************************************************
-* _thisThreadIsInitializingClass
-* Return TRUE if this thread is currently initializing the given class.
-**********************************************************************/
-static BOOL _thisThreadIsInitializingClass(struct objc_class *cls)
+void   instrumentObjcMessageSends       (BOOL          flag)
 {
-    int i;
-
-    _objc_initializing_classes *list = _fetchInitializingClassList(NO);
-    if (list) {
-        cls = GETMETA(cls);
-        for (i = 0; i < list->classesAllocated; i++) {
-            if (cls == list->metaclasses[i]) return YES;
-        }
-    }
+    int                enabledValue = (flag) ? 1 : 0;
 
-    // no list or not found in list
-    return NO;
-}
+    // Shortcut NOP
+    if (objcMsgLogEnabled == enabledValue)
+        return;
 
+    // If enabling, flush all method caches so we get some traces
+    if (flag)
+        flush_caches (Nil, YES);
 
-/***********************************************************************
-* _setThisThreadIsInitializingClass
-* Record that this thread is currently initializing the given class. 
-* This thread will be allowed to send messages to the class, but 
-*   other threads will have to wait.
-**********************************************************************/
-static void _setThisThreadIsInitializingClass(struct objc_class *cls)
-{
-    int i;
-    _objc_initializing_classes *list = _fetchInitializingClassList(YES);
-    cls = GETMETA(cls);
-  
-    // paranoia: explicitly disallow duplicates
-    for (i = 0; i < list->classesAllocated; i++) {
-        if (cls == list->metaclasses[i]) {
-            _objc_fatal("thread is already initializing this class!");
-            return; // already the initializer
-        }
-    }
-  
-    for (i = 0; i < list->classesAllocated; i++) {
-        if (0   == list->metaclasses[i]) {
-            list->metaclasses[i] = cls;
-            return;
-        }
-    }
+    // Sync our log file
+    if (objcMsgLogFD != (-1))
+        fsync (objcMsgLogFD);
 
-    // class list is full - reallocate
-    list->classesAllocated = list->classesAllocated * 2 + 1;
-    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++) {
-        list->metaclasses[i] = NULL;
-    }
+    objcMsgLogEnabled = enabledValue;
 }
 
-
-/***********************************************************************
-* _setThisThreadIsNotInitializingClass
-* Record that this thread is no longer initializing the given class. 
-**********************************************************************/
-static void _setThisThreadIsNotInitializingClass(struct objc_class *cls)
+__private_extern__ void        logObjcMessageSends      (ObjCLogProc   logProc)
 {
-    int i;
-
-    _objc_initializing_classes *list = _fetchInitializingClassList(NO);
-    if (list) {
-        cls = GETMETA(cls);    
-        for (i = 0; i < list->classesAllocated; i++) {
-            if (cls == list->metaclasses[i]) {
-                list->metaclasses[i] = NULL;
-                return;
-            }
-        }
+    if (logProc)
+    {
+        objcMsgLogProc = logProc;
+        objcMsgLogEnabled = 1;
+    }
+    else
+    {
+        objcMsgLogProc = logProc;
+        objcMsgLogEnabled = 0;
     }
 
-    // no list or not found in list
-    _objc_fatal("thread is not initializing this class!");  
+    if (objcMsgLogFD != (-1))
+        fsync (objcMsgLogFD);
 }
 
 
 /***********************************************************************
-* class_initialize.  Send the '+initialize' message on demand to any
-* uninitialized class. Force initialization of superclasses first.
-*
-* Called only from _class_lookupMethodAndLoadCache (or itself).
+* log_and_fill_cache
+* Log this method call. If the logger permits it, fill the method cache.
+* cls is the method whose cache should be filled. 
+* implementer is the class that owns the implementation in question.
 **********************************************************************/
-static void class_initialize(struct objc_class *cls)
+static void
+log_and_fill_cache(Class cls, Class implementer, Method meth, SEL sel)
 {
-    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, 
-            // 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);
-        }
-    }
+    BOOL cacheIt = YES;
 
-    // Make sure super is done initializing BEFORE beginning to initialize cls.
-    // See note about deadlock above.
-    if (cls->super_class  &&  !ISINITIALIZED(cls->super_class)) {
-        class_initialize(cls->super_class);
-    }
-    
-    // Try to atomically set CLS_INITIALIZING.
-    pthread_mutex_lock(&classInitLock);
-    if (!ISINITIALIZED(cls) && !ISINITIALIZING(cls)) {
-        _class_setInfo(infoCls, CLS_INITIALIZING);
-        reallyInitialize = YES;
-    }
-    pthread_mutex_unlock(&classInitLock);
-    
-    if (reallyInitialize) {
-        // We successfully set the CLS_INITIALIZING bit. Initialize the class.
-        
-        // Record that we're initializing this class so we can message it.
-        _setThisThreadIsInitializingClass(cls);
-        
-        // Send the +initialize message.
-        // Note that +initialize is sent to the superclass (again) if 
-        // this class doesn't implement +initialize. 2157218
-        [(id)cls initialize];
-        
-        // Done initializing. Update the info bits and notify waiting threads.
-        pthread_mutex_lock(&classInitLock);
-        _class_changeInfo(infoCls, CLS_INITIALIZED, CLS_INITIALIZING);
-        pthread_cond_broadcast(&classInitWaitCond);
-        pthread_mutex_unlock(&classInitLock);
-        _setThisThreadIsNotInitializingClass(cls);
-        return;
-    }
-    
-    else if (ISINITIALIZING(cls)) {
-        // We couldn't set INITIALIZING because INITIALIZING was already set.
-        // If this thread set it earlier, continue normally.
-        // If some other thread set it, block until initialize is done.
-        // It's ok if INITIALIZING changes to INITIALIZED while we're here, 
-        //   because we safely check for INITIALIZED inside the lock 
-        //   before blocking.
-        if (_thisThreadIsInitializingClass(cls)) {
-            return;
-        } else {
-            pthread_mutex_lock(&classInitLock);
-            while (!ISINITIALIZED(cls)) {
-                pthread_cond_wait(&classInitWaitCond, &classInitLock);
-            }
-            pthread_mutex_unlock(&classInitLock);
-            return;
-        }
-    }
-    
-    else if (ISINITIALIZED(cls)) {
-        // Set CLS_INITIALIZING failed because someone else already 
-        //   initialized the class. Continue normally.
-        // NOTE this check must come AFTER the ISINITIALIZING case.
-        // Otherwise: Another thread is initializing this class. ISINITIALIZED 
-        //   is false. Skip this clause. Then the other thread finishes 
-        //   initialization and sets INITIALIZING=no and INITIALIZED=yes. 
-        //   Skip the ISINITIALIZING clause. Die horribly.
-        return;
-    }
-    
-    else {
-        // We shouldn't be here. 
-        _objc_fatal("thread-safe class init in objc runtime is buggy!");
+    if (objcMsgLogEnabled) {
+        cacheIt = objcMsgLogProc (_class_isMetaClass(implementer) ? YES : NO,
+                                  _class_getName(cls),
+                                  _class_getName(implementer), 
+                                  sel);
     }
+    if (cacheIt) {
+        _cache_fill (cls, meth, sel);
+    }    
 }
 
 
@@ -2433,112 +867,80 @@ static void class_initialize(struct objc_class *cls)
 *
 * Called only from objc_msgSend, objc_msgSendSuper and class_lookupMethod.
 **********************************************************************/
-IMP    _class_lookupMethodAndLoadCache    (Class       cls,
-                                        SEL            sel)
+__private_extern__ IMP _class_lookupMethodAndLoadCache(Class cls, SEL sel)
 {
-    struct objc_class *        curClass;
-    Method meth;
+    Class curClass;
     IMP methodPC = NULL;
 
-    trace(0xb300, 0, 0, 0);
-
     // Check for freed class
-    if (cls == &freedObjectClass)
+    if (cls == _class_getFreedObjectClass())
         return (IMP) _freedHandler;
 
     // Check for nonexistent class
-    if (cls == &nonexistentObjectClass)
+    if (cls == _class_getNonexistentObjectClass())
         return (IMP) _nonexistentHandler;
 
-    trace(0xb301, 0, 0, 0);
+#if __OBJC2__
+    // fixme hack
+    _class_realize(cls);
+#endif
 
-    if (!ISINITIALIZED(cls)) {
-        class_initialize ((struct objc_class *)cls);
-        // If sel == initialize, class_initialize will send +initialize and 
+    if (!_class_isInitialized(cls)) {
+        _class_initialize (cls);
+        // If sel == initialize, _class_initialize will send +initialize and 
         // then the messenger will send +initialize again after this 
         // procedure finishes. Of course, if this is not being called 
         // from the messenger then it won't happen. 2778172
     }
 
-    trace(0xb302, 0, 0, 0);
-
     // Outer loop - search the caches and method lists of the
     // class and its super-classes
-    for (curClass = cls; curClass; curClass = ((struct objc_class * )curClass)->super_class)
+    for (curClass = cls; curClass; curClass = _class_getSuperclass(curClass))
     {
-#ifdef PRELOAD_SUPERCLASS_CACHES
-        struct objc_class *curClass2;
-#endif
-
-        trace(0xb303, 0, 0, 0);
-
         // Beware of thread-unsafety and double-freeing of forward:: 
         // entries here! See note in "Method cache locking" above.
         // The upshot is that _cache_getMethod() will return NULL 
         // instead of returning a forward:: entry.
-        meth = _cache_getMethod(curClass, sel, &_objc_msgForward);
+        Method meth = _cache_getMethod(curClass, sel, &_objc_msgForward);
         if (meth) {
             // Found the method in this class or a superclass.
             // Cache the method in this class, unless we just found it in 
             // this class's cache.
             if (curClass != cls) {
-#ifdef PRELOAD_SUPERCLASS_CACHES
-                for (curClass2 = cls; curClass2 != curClass; curClass2 = curClass2->super_class)
-                    _cache_fill (curClass2, meth, sel);
-                _cache_fill (curClass, meth, sel);
-#else
                 _cache_fill (cls, meth, sel);
-#endif
             }
 
-            methodPC = meth->method_imp;
+            methodPC = method_getImplementation(meth);
             break;
         }
 
-        trace(0xb304, (int)methodPC, 0, 0);
-
         // Cache scan failed. Search method list.
 
-        OBJC_LOCK(&methodListLock);
-        meth = _findMethodInClass(curClass, sel);
-        OBJC_UNLOCK(&methodListLock);
+        meth = _class_getMethodNoSuper(curClass, sel);
         if (meth) {
-            // If logging is enabled, log the message send and let
-            // the logger decide whether to encache the method.
-            if ((objcMsgLogEnabled == 0) ||
-                (objcMsgLogProc (CLS_GETINFO(((struct objc_class * )curClass),
-                                             CLS_META) ? YES : NO,
-                                 ((struct objc_class *)cls)->name,
-                                 curClass->name, sel)))
-            {
-                // Cache the method implementation
-#ifdef PRELOAD_SUPERCLASS_CACHES
-                for (curClass2 = cls; curClass2 != curClass; curClass2 = curClass2->super_class)
-                    _cache_fill (curClass2, meth, sel);
-                _cache_fill (curClass, meth, sel);
-#else
-                _cache_fill (cls, meth, sel);
-#endif
-            }
-
-            methodPC = meth->method_imp;
+            log_and_fill_cache(cls, curClass, meth, sel);
+            methodPC = method_getImplementation(meth);
             break;
         }
-
-        trace(0xb305, (int)methodPC, 0, 0);
     }
 
-    trace(0xb306, (int)methodPC, 0, 0);
+    if (methodPC == NULL) {
+        // Class and superclasses do not respond -- try resolve handler
+        Method meth = _class_resolveMethod(cls, sel);
+        if (meth) {
+            // GrP fixme this isn't quite right
+            log_and_fill_cache(cls, cls, meth, sel);
+            methodPC = method_getImplementation(meth);
+        }        
+    }
 
-    if (methodPC == NULL)
-    {
-        // Class and superclasses do not respond -- use forwarding
+    if (methodPC == NULL) {
+        // Class and superclasses do not respond and
+        // resolve handler didn't help -- use forwarding
         _cache_addForwardEntry(cls, sel);
         methodPC = &_objc_msgForward;
     }
 
-    trace(0xb30f, (int)methodPC, 0, 0);
-
     return methodPC;
 }
 
@@ -2557,380 +959,22 @@ static IMP lookupMethodInClassAndLoadCache(Class cls, SEL sel)
     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.
-*
-* Delegation.
-**********************************************************************/
-static int     SubtypeUntil           (const char *    type,
-                                char           end)
-{
-    int                level = 0;
-    const char *       head = type;
-
-    //
-    while (*type)
-    {
-        if (!*type || (!level && (*type == end)))
-            return (int)(type - head);
-
-        switch (*type)
-        {
-            case ']': case '}': case ')': level--; break;
-            case '[': case '{': case '(': level += 1; break;
-        }
-
-        type += 1;
-    }
-
-    _objc_fatal ("Object: SubtypeUntil: end of type encountered prematurely\n");
-    return 0;
-}
-
-/***********************************************************************
-* SkipFirstType.
-**********************************************************************/
-static const char *    SkipFirstType      (const char *        type)
-{
-    while (1)
-    {
-        switch (*type++)
-        {
-            case 'O':  /* bycopy */
-            case 'n':  /* in */
-            case 'o':  /* out */
-            case 'N':  /* inout */
-            case 'r':  /* const */
-            case 'V':  /* oneway */
-            case '^':  /* pointers */
-                break;
-
-                /* arrays */
-            case '[':
-                while ((*type >= '0') && (*type <= '9'))
-                    type += 1;
-                return type + SubtypeUntil (type, ']') + 1;
-
-                /* structures */
-            case '{':
-                return type + SubtypeUntil (type, '}') + 1;
-
-                /* unions */
-            case '(':
-                return type + SubtypeUntil (type, ')') + 1;
-
-                /* basic types */
-            default:
-                return type;
-        }
-    }
-}
-
-/***********************************************************************
-* method_getNumberOfArguments.
-**********************************************************************/
-unsigned       method_getNumberOfArguments        (Method      method)
-{
-    const char *               typedesc;
-    unsigned           nargs;
-
-    // First, skip the return type
-    typedesc = method->method_types;
-    typedesc = SkipFirstType (typedesc);
-
-    // Next, skip stack size
-    while ((*typedesc >= '0') && (*typedesc <= '9'))
-        typedesc += 1;
-
-    // Now, we have the arguments - count how many
-    nargs = 0;
-    while (*typedesc)
-    {
-        // Traverse argument type
-        typedesc = SkipFirstType (typedesc);
-
-        // Skip GNU runtime's register parameter hint
-        if (*typedesc == '+') typedesc++;
-
-        // Traverse (possibly negative) argument offset
-        if (*typedesc == '-')
-            typedesc += 1;
-        while ((*typedesc >= '0') && (*typedesc <= '9'))
-            typedesc += 1;
-
-        // Made it past an argument
-        nargs += 1;
-    }
-
-    return nargs;
-}
-
-/***********************************************************************
-* method_getSizeOfArguments.
-**********************************************************************/
-#ifndef __alpha__
-unsigned       method_getSizeOfArguments       (Method         method)
-{
-    const char *               typedesc;
-    unsigned           stack_size;
-#if defined(__ppc__) || defined(ppc)
-    unsigned           trueBaseOffset;
-    unsigned           foundBaseOffset;
-#endif
-
-    // Get our starting points
-    stack_size = 0;
-    typedesc = method->method_types;
-
-    // Skip the return type
-#if defined (__ppc__) || defined(ppc)
-    // Struct returns cause the parameters to be bumped
-    // by a register, so the offset to the receiver is
-    // 4 instead of the normal 0.
-    trueBaseOffset = (*typedesc == '{') ? 4 : 0;
-#endif
-    typedesc = SkipFirstType (typedesc);
-
-    // Convert ASCII number string to integer
-    while ((*typedesc >= '0') && (*typedesc <= '9'))
-        stack_size = (stack_size * 10) + (*typedesc++ - '0');
-#if defined (__ppc__) || defined(ppc)
-    // NOTE: This is a temporary measure pending a compiler fix.
-    // Work around PowerPC compiler bug wherein the method argument
-    // string contains an incorrect value for the "stack size."
-    // Generally, the size is reported 4 bytes too small, so we apply
-    // that fudge factor.  Unfortunately, there is at least one case
-    // where the error is something other than -4: when the last
-    // parameter is a double, the reported stack is much too high
-    // (about 32 bytes).  We do not attempt to detect that case.
-    // The result of returning a too-high value is that objc_msgSendv
-    // can bus error if the destination of the marg_list copying
-    // butts up against excluded memory.
-    // This fix disables itself when it sees a correctly built
-    // type string (i.e. the offset for the Id is correct).  This
-    // keeps us out of lockstep with the compiler.
-
-    // skip the '@' marking the Id field
-    typedesc = SkipFirstType (typedesc);
-
-    // Skip GNU runtime's register parameter hint
-    if (*typedesc == '+') typedesc++;
-
-    // pick up the offset for the Id field
-    foundBaseOffset = 0;
-    while ((*typedesc >= '0') && (*typedesc <= '9'))
-        foundBaseOffset = (foundBaseOffset * 10) + (*typedesc++ - '0');
-
-    // add fudge factor iff the Id field offset was wrong
-    if (foundBaseOffset != trueBaseOffset)
-        stack_size += 4;
-#endif
-
-    return stack_size;
-}
-
-#else // __alpha__
-      // XXX Getting the size of a type is done all over the place
-      // (Here, Foundation, remote project)! - Should unify
-
-unsigned int   getSizeOfType   (const char * type, unsigned int * alignPtr);
-
-unsigned       method_getSizeOfArguments          (Method      method)
-{
-    const char *       type;
-    int                size;
-    int                index;
-    int                align;
-    int                offset;
-    unsigned   stack_size;
-    int                nargs;
-
-    nargs              = method_getNumberOfArguments (method);
-    stack_size = (*method->method_types == '{') ? sizeof(void *) : 0;
-
-    for (index = 0; index < nargs; index += 1)
-    {
-        (void) method_getArgumentInfo (method, index, &type, &offset);
-        size = getSizeOfType (type, &align);
-        stack_size += ((size + 7) & ~7);
-    }
-
-    return stack_size;
-}
-#endif // __alpha__
-
-/***********************************************************************
-* method_getArgumentInfo.
-**********************************************************************/
-unsigned       method_getArgumentInfo         (Method          method,
-                                        int            arg,
-                                        const char **  type,
-                                        int *          offset)
-{
-    const char *       typedesc           = method->method_types;
-    unsigned   nargs              = 0;
-    unsigned   self_offset        = 0;
-    BOOL               offset_is_negative = NO;
-
-    // First, skip the return type
-    typedesc = SkipFirstType (typedesc);
-
-    // Next, skip stack size
-    while ((*typedesc >= '0') && (*typedesc <= '9'))
-        typedesc += 1;
-
-    // Now, we have the arguments - position typedesc to the appropriate argument
-    while (*typedesc && nargs != arg)
-    {
-
-        // Skip argument type
-        typedesc = SkipFirstType (typedesc);
-
-        if (nargs == 0)
-        {
-            // Skip GNU runtime's register parameter hint
-            if (*typedesc == '+') typedesc++;
-
-            // Skip negative sign in offset
-            if (*typedesc == '-')
-            {
-                offset_is_negative = YES;
-                typedesc += 1;
-            }
-            else
-                offset_is_negative = NO;
-
-            while ((*typedesc >= '0') && (*typedesc <= '9'))
-                self_offset = self_offset * 10 + (*typedesc++ - '0');
-            if (offset_is_negative)
-                self_offset = -(self_offset);
-
-        }
-
-        else
-        {
-            // Skip GNU runtime's register parameter hint
-            if (*typedesc == '+') typedesc++;
-
-            // Skip (possibly negative) argument offset
-            if (*typedesc == '-')
-                typedesc += 1;
-            while ((*typedesc >= '0') && (*typedesc <= '9'))
-                typedesc += 1;
-        }
-
-        nargs += 1;
-    }
-
-    if (*typedesc)
-    {
-        unsigned arg_offset = 0;
-
-        *type   = typedesc;
-        typedesc = SkipFirstType (typedesc);
-
-        if (arg == 0)
-        {
-#ifdef hppa
-            *offset = -sizeof(id);
-#else
-            *offset = 0;
-#endif // hppa
-        }
-
-        else
-        {
-            // Skip GNU register parameter hint
-            if (*typedesc == '+') typedesc++;
-
-            // Pick up (possibly negative) argument offset
-            if (*typedesc == '-')
-            {
-                offset_is_negative = YES;
-                typedesc += 1;
-            }
-            else
-                offset_is_negative = NO;
-
-            while ((*typedesc >= '0') && (*typedesc <= '9'))
-                arg_offset = arg_offset * 10 + (*typedesc++ - '0');
-            if (offset_is_negative)
-                arg_offset = - arg_offset;
-
-#ifdef hppa
-            // For stacks which grow up, since margs points
-            // to the top of the stack or the END of the args,
-            // the first offset is at -sizeof(id) rather than 0.
-            self_offset += sizeof(id);
-#endif
-            *offset = arg_offset - self_offset;
-        }
+    // Cache miss. Search method list.
 
-    }
+    meth = _class_getMethodNoSuper(cls, sel);
 
-    else
-    {
-        *type  = 0;
-        *offset        = 0;
+    if (meth) {
+        // Hit in method list. Cache it.
+        _cache_fill(cls, meth, sel);
+        return method_getImplementation(meth);
+    } else {
+        // Miss in method list. Cache objc_msgForward.
+        _cache_addForwardEntry(cls, sel);
+        return &_objc_msgForward;
     }
-
-    return nargs;
 }
 
+
 /***********************************************************************
 * _objc_create_zone.
 **********************************************************************/
@@ -2967,6 +1011,8 @@ __private_extern__ malloc_zone_t *_objc_internal_zone(void)
 * _calloc_internal
 * _realloc_internal
 * _strdup_internal
+* _strdupcat_internal
+* _memdup_internal
 * _free_internal
 * Convenience functions for the internal malloc zone.
 **********************************************************************/
@@ -2987,1139 +1033,179 @@ __private_extern__ void *_realloc_internal(void *ptr, size_t size)
 
 __private_extern__ char *_strdup_internal(const char *str)
 {
+    if (!str) return NULL;
     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)
+// allocate a new string that concatenates s1+s2.
+__private_extern__ char *_strdupcat_internal(const char *s1, const char *s2)
 {
-    malloc_zone_free(_objc_internal_zone(), ptr);
+    size_t len1 = strlen(s1);
+    size_t len2 = strlen(s2);
+    char *dup = malloc_zone_malloc(_objc_internal_zone(), len1 + len2 + 1);
+    memcpy(dup, s1, len1);
+    memcpy(dup + len1, s2, len2 + 1);
+    return dup;
 }
 
-
-
-/***********************************************************************
-* cache collection.
-**********************************************************************/
-
-static unsigned long   _get_pc_for_thread     (mach_port_t     thread)
-#ifdef hppa
-{
-    struct hp_pa_frame_thread_state            state;
-    unsigned int count = HPPA_FRAME_THREAD_STATE_COUNT;
-    kern_return_t okay = thread_get_state (thread, HPPA_FRAME_THREAD_STATE, (thread_state_t)&state, &count);
-    return (okay == KERN_SUCCESS) ? state.ts_pcoq_front : PC_SENTINAL;
-}
-#elif defined(sparc)
-{
-    struct sparc_thread_state_regs             state;
-    unsigned int count = SPARC_THREAD_STATE_REGS_COUNT;
-    kern_return_t okay = thread_get_state (thread, SPARC_THREAD_STATE_REGS, (thread_state_t)&state, &count);
-    return (okay == KERN_SUCCESS) ? state.regs.r_pc : PC_SENTINAL;
-}
-#elif defined(__i386__) || defined(i386)
-{
-    i386_thread_state_t                        state;
-    unsigned int count = i386_THREAD_STATE_COUNT;
-    kern_return_t okay = thread_get_state (thread, i386_THREAD_STATE, (thread_state_t)&state, &count);
-    return (okay == KERN_SUCCESS) ? state.eip : PC_SENTINAL;
-}
-#elif defined(m68k)
-{
-    struct m68k_thread_state_regs              state;
-    unsigned int count = M68K_THREAD_STATE_REGS_COUNT;
-    kern_return_t okay = thread_get_state (thread, M68K_THREAD_STATE_REGS, (thread_state_t)&state, &count);
-    return (okay == KERN_SUCCESS) ? state.pc : PC_SENTINAL;
-}
-#elif defined(__ppc__) || defined(ppc)
-{
-    struct ppc_thread_state                    state;
-    unsigned int count = PPC_THREAD_STATE_COUNT;
-    kern_return_t okay = thread_get_state (thread, PPC_THREAD_STATE, (thread_state_t)&state, &count);
-    return (okay == KERN_SUCCESS) ? state.srr0 : PC_SENTINAL;
-}
-#else
+__private_extern__ void *_memdup_internal(const void *mem, size_t len)
 {
-#error _get_pc_for_thread () not implemented for this architecture
+    void *dup = malloc_zone_malloc(_objc_internal_zone(), len);
+    memcpy(dup, mem, len);
+    return dup;
 }
-#endif
-
-/***********************************************************************
-* _collecting_in_critical.
-* Returns TRUE if some thread is currently executing a cache-reading 
-* function. Collection of cache garbage is not allowed when a cache-
-* reading function is in progress because it might still be using 
-* the garbage memory.
-**********************************************************************/
-OBJC_EXPORT unsigned long      objc_entryPoints[];
-OBJC_EXPORT unsigned long      objc_exitPoints[];
 
-static int     _collecting_in_critical         (void)
+__private_extern__ void _free_internal(void *ptr)
 {
-    thread_act_port_array_t            threads;
-    unsigned                   number;
-    unsigned                   count;
-    kern_return_t              ret;
-    int                                        result;
-
-    mach_port_t mythread = pthread_mach_thread_np(pthread_self());
-
-    // Get a list of all the threads in the current task
-    ret = task_threads (mach_task_self (), &threads, &number);
-    if (ret != KERN_SUCCESS)
-    {
-        _objc_fatal("task_thread failed (result %d)\n", ret);
-    }
-
-    // Check whether any thread is in the cache lookup code
-    result = FALSE;
-    for (count = 0; count < number; count++)
-    {
-        int region;
-        unsigned long pc;
-
-        // Don't bother checking ourselves
-        if (threads[count] == mythread)
-            continue;
-
-        // Find out where thread is executing
-        pc = _get_pc_for_thread (threads[count]);
-
-        // Check for bad status, and if so, assume the worse (can't collect)
-        if (pc == PC_SENTINAL)
-        {
-            result = TRUE;
-            goto done;
-        }
-        
-        // Check whether it is in the cache lookup code
-        for (region = 0; objc_entryPoints[region] != 0; region++)
-        {
-            if ((pc >= objc_entryPoints[region]) &&
-                (pc <= objc_exitPoints[region])) 
-            {
-                result = TRUE;
-                goto done;
-            }
-        }
-    }
-
- done:
-    // Deallocate the port rights for the threads
-    for (count = 0; count < number; count++) {
-        mach_port_deallocate(mach_task_self (), threads[count]);
-    }
-
-    // Deallocate the thread list
-    vm_deallocate (mach_task_self (), (vm_address_t) threads, sizeof(threads) * number);
-
-    // Return our finding
-    return result;
+    malloc_zone_free(_objc_internal_zone(), ptr);
 }
 
-/***********************************************************************
-* _garbage_make_room.  Ensure that there is enough room for at least
-* one more ref in the garbage.
-**********************************************************************/
-
-// amount of memory represented by all refs in the garbage
-static int garbage_byte_size   = 0;
-
-// do not empty the garbage until garbage_byte_size gets at least this big
-static int garbage_threshold   = 1024;
-
-// table of refs to free
-static void **garbage_refs     = 0;
-
-// current number of refs in garbage_refs
-static int garbage_count       = 0;
-
-// capacity of current garbage_refs
-static int garbage_max         = 0;
 
-// capacity of initial garbage_refs
-enum {
-    INIT_GARBAGE_COUNT = 128
-};
-
-static void    _garbage_make_room              (void)
+const char *class_getName(Class cls)
 {
-    static int first = 1;
-    volatile void *    tempGarbage;
-
-    // Create the collection table the first time it is needed
-    if (first)
-    {
-        first          = 0;
-        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    = _realloc_internal(garbage_refs, garbage_max * 2 * sizeof(void *));
-        garbage_refs   = (void **) tempGarbage;
-        garbage_max    *= 2;
-    }
+    return _class_getName(cls);
 }
 
-/***********************************************************************
-* _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, size_t size, BOOL tryCollect)
+Class class_getSuperclass(Class cls)
 {
-    static char *report_garbage = (char *)0xffffffff;
-
-    if ((char *)0xffffffff == report_garbage) {
-        // Check whether to log our activity
-        report_garbage = getenv ("OBJC_REPORT_GARBAGE");
-    }
-
-    // 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 += size;
-    garbage_refs[garbage_count++] = data;
-
-    // Log our progress
-    if (tryCollect && report_garbage)
-        _objc_inform ("total of %d bytes of garbage ...", garbage_byte_size);
-
-    // Done if caller says not to empty or the garbage is not full
-    if (!tryCollect || (garbage_byte_size < garbage_threshold))
-    {
-        if (tryCollect && report_garbage)
-            _objc_inform ("couldn't collect cache garbage: below threshold\n");
-
-        return;
-    }
-
-    // tryCollect is guaranteed to be true after this point
-
-    // Synchronize garbage collection with objc_msgSend and other cache readers
-    if (!_collecting_in_critical ()) {
-        // No cache readers in progress - garbage is now deletable
-
-        // Log our progress
-        if (report_garbage)
-            _objc_inform ("collecting!\n");
-        
-        // Dispose all refs now in the garbage
-        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 {     
-        // objc_msgSend (or other cache reader) is currently looking in the 
-        // cache and might still be using some garbage.
-        if (report_garbage) {
-            _objc_inform ("couldn't collect cache garbage: objc_msgSend in progress\n");
-        }
-    }
+    return _class_getSuperclass(cls);
 }
 
-
-
-/***********************************************************************
-* 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)
+BOOL class_isMetaClass(Class cls)
 {
-    return (size - sizeof(struct objc_cache)) / sizeof(Method);
+    return _class_isMetaClass(cls);
 }
 
-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)
+size_t class_getInstanceSize(Class cls)
 {
-    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;
+    return _class_getInstanceSize(cls);
 }
 
-
-/***********************************************************************
-* 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)
+void method_exchangeImplementations(Method m1, Method m2)
 {
-    if (block->size + (uintptr_t)block == (uintptr_t)block->nextFree) {
-        block->size += block->nextFree->size;
-        block->nextFree = block->nextFree->nextFree;
-    }
+    // fixme thread safe
+    IMP m1_imp;
+    if (!m1  ||  !m2) return;
+    m1_imp = method_getImplementation(m1);
+    method_setImplementation(m1, method_setImplementation(m2, m1_imp));
 }
 
 
 /***********************************************************************
-* 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.
+* method_getNumberOfArguments.
 **********************************************************************/
-static void *cache_region_calloc(cache_allocator_region *rgn, size_t size)
+unsigned int method_getNumberOfArguments(Method m)
 {
-    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;
+    if (!m) return 0;
+    return encoding_getNumberOfArguments(method_getTypeEncoding(m));
 }
 
 
-/***********************************************************************
-* 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)
+unsigned int method_getSizeOfArguments(Method m)
 {
-    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);
+    OBJC_WARN_DEPRECATED;
+    if (!m) return 0;
+    return encoding_getSizeOfArguments(method_getTypeEncoding(m));
 }
 
 
-/***********************************************************************
-* 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) 
+unsigned int method_getArgumentInfo(Method m, int arg,
+                                    const char **type, int *offset)
 {
-    cache_allocator_region *rgn;
-    for (rgn = cacheRegion; rgn != NULL; rgn = rgn->next) {
-        if (block >= rgn->start  &&  block < rgn->end) return rgn;
-    }
-    return NULL;
+    OBJC_WARN_DEPRECATED;
+    if (!m) return 0;
+    return encoding_getArgumentInfo(method_getTypeEncoding(m), 
+                                    arg, type, offset);
 }
 
 
-/***********************************************************************
-* 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)
+void method_getReturnType(Method m, char *dst, size_t dst_len)
 {
-    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);
+    return encoding_getReturnType(method_getTypeEncoding(m), dst, dst_len);
 }
 
 
-/***********************************************************************
-* _cache_print.
-**********************************************************************/
-static void    _cache_print           (Cache           cache)
-{
-    unsigned int       index;
-    unsigned int       count;
-
-    count = cache->mask + 1;
-    for (index = 0; index < count; index += 1)
-        if (CACHE_BUCKET_VALID(cache->buckets[index]))
-        {
-            if (CACHE_BUCKET_IMP(cache->buckets[index]) == &_objc_msgForward)
-                printf ("does not recognize: \n");
-            printf ("%s\n", (const char *) CACHE_BUCKET_NAME(cache->buckets[index]));
-        }
-}
-
-/***********************************************************************
-* _class_printMethodCaches.
-**********************************************************************/
-void   _class_printMethodCaches       (Class           cls)
+char * method_copyReturnType(Method m)
 {
-    if (((struct objc_class *)cls)->cache == &emptyCache)
-        printf ("no instance-method cache for class %s\n", ((struct objc_class *)cls)->name);
-
-    else
-    {
-        printf ("instance-method cache for class %s:\n", ((struct objc_class *)cls)->name);
-        _cache_print (((struct objc_class *)cls)->cache);
-    }
-
-    if (((struct objc_class * )((struct objc_class * )cls)->isa)->cache == &emptyCache)
-        printf ("no class-method cache for class %s\n", ((struct objc_class *)cls)->name);
-
-    else
-    {
-        printf ("class-method cache for class %s:\n", ((struct objc_class *)cls)->name);
-        _cache_print (((struct objc_class * )((struct objc_class * )cls)->isa)->cache);
-    }
+    return encoding_copyReturnType(method_getTypeEncoding(m));
 }
 
-/***********************************************************************
-* log2.
-**********************************************************************/
-static unsigned int    log2           (unsigned int    x)
-{
-    unsigned int       log;
-
-    log = 0;
-    while (x >>= 1)
-        log += 1;
-
-    return log;
-}
 
-/***********************************************************************
-* _class_printDuplicateCacheEntries.
-**********************************************************************/
-void   _class_printDuplicateCacheEntries          (BOOL        detail)
+void method_getArgumentType(Method m, unsigned int index, 
+                            char *dst, size_t dst_len)
 {
-    NXHashTable *      class_hash;
-    NXHashState        state;
-    struct objc_class *                cls;
-    unsigned int       duplicates;
-    unsigned int       index1;
-    unsigned int       index2;
-    unsigned int       mask;
-    unsigned int       count;
-    unsigned int       isMeta;
-    Cache              cache;
-
-
-    printf ("Checking for duplicate cache entries \n");
-
-    // Outermost loop - iterate over all classes
-    class_hash = objc_getClasses ();
-    state         = NXInitHashState (class_hash);
-    duplicates = 0;
-    while (NXNextHashState (class_hash, &state, (void **) &cls))
-    {
-        // Control loop - do given class' cache, then its isa's cache
-        for (isMeta = 0; isMeta <= 1; isMeta += 1)
-        {
-            // Select cache of interest and make sure it exists
-            cache = isMeta ? cls->isa->cache : ((struct objc_class *)cls)->cache;
-            if (cache == &emptyCache)
-                continue;
-
-            // Middle loop - check each entry in the given cache
-            mask  = cache->mask;
-            count = mask + 1;
-            for (index1 = 0; index1 < count; index1 += 1)
-            {
-                // Skip invalid entry
-                if (!CACHE_BUCKET_VALID(cache->buckets[index1]))
-                    continue;
-
-                // Inner loop - check that given entry matches no later entry
-                for (index2 = index1 + 1; index2 < count; index2 += 1)
-                {
-                    // Skip invalid entry
-                    if (!CACHE_BUCKET_VALID(cache->buckets[index2]))
-                        continue;
-
-                    // Check for duplication by method name comparison
-                    if (strcmp ((char *) CACHE_BUCKET_NAME(cache->buckets[index1]),
-                                (char *) CACHE_BUCKET_NAME(cache->buckets[index2])) == 0)
-                    {
-                        if (detail)
-                            printf ("%s %s\n", ((struct objc_class *)cls)->name, (char *) CACHE_BUCKET_NAME(cache->buckets[index1]));
-                        duplicates += 1;
-                        break;
-                    }
-                }
-            }
-        }
-    }
-
-    // Log the findings
-    printf ("duplicates = %d\n", duplicates);
-    printf ("total cache fills = %d\n", totalCacheFills);
+    return encoding_getArgumentType(method_getTypeEncoding(m),
+                                    index, dst, dst_len);
 }
 
-/***********************************************************************
-* PrintCacheHeader.
-**********************************************************************/
-static void    PrintCacheHeader        (void)
-{
-#ifdef OBJC_INSTRUMENTED
-    printf ("Cache  Cache  Slots  Avg    Max   AvgS  MaxS  AvgS  MaxS  TotalD   AvgD  MaxD  TotalD   AvgD  MaxD  TotD  AvgD  MaxD\n");
-    printf ("Size   Count  Used   Used   Used  Hit   Hit   Miss  Miss  Hits     Prbs  Prbs  Misses   Prbs  Prbs  Flsh  Flsh  Flsh\n");
-    printf ("-----  -----  -----  -----  ----  ----  ----  ----  ----  -------  ----  ----  -------  ----  ----  ----  ----  ----\n");
-#else
-    printf ("Cache  Cache  Slots  Avg    Max   AvgS  MaxS  AvgS  MaxS\n");
-    printf ("Size   Count  Used   Used   Used  Hit   Hit   Miss  Miss\n");
-    printf ("-----  -----  -----  -----  ----  ----  ----  ----  ----\n");
-#endif
-}
 
-/***********************************************************************
-* PrintCacheInfo.
-**********************************************************************/
-static void            PrintCacheInfo (unsigned int    cacheSize,
-                             unsigned int      cacheCount,
-                             unsigned int      slotsUsed,
-                             float             avgUsed,
-                             unsigned int      maxUsed,
-                             float             avgSHit,
-                             unsigned int      maxSHit,
-                             float             avgSMiss,
-                             unsigned int      maxSMiss
-#ifdef OBJC_INSTRUMENTED
-                             , unsigned int    totDHits,
-                             float             avgDHit,
-                             unsigned int      maxDHit,
-                             unsigned int      totDMisses,
-                             float             avgDMiss,
-                             unsigned int      maxDMiss,
-                             unsigned int      totDFlsh,
-                             float             avgDFlsh,
-                             unsigned int      maxDFlsh
-#endif
-                             )
+char * method_copyArgumentType(Method m, unsigned int index)
 {
-#ifdef OBJC_INSTRUMENTED
-    printf ("%5u  %5u  %5u  %5.1f  %4u  %4.1f  %4u  %4.1f  %4u  %7u  %4.1f  %4u  %7u  %4.1f  %4u  %4u  %4.1f  %4u\n",
-#else
-            printf ("%5u  %5u  %5u  %5.1f  %4u  %4.1f  %4u  %4.1f  %4u\n",
-#endif
-                    cacheSize, cacheCount, slotsUsed, avgUsed, maxUsed, avgSHit, maxSHit, avgSMiss, maxSMiss
-#ifdef OBJC_INSTRUMENTED
-                    , totDHits, avgDHit, maxDHit, totDMisses, avgDMiss, maxDMiss, totDFlsh, avgDFlsh, maxDFlsh
-#endif
-                    );
-            
+    return encoding_copyArgumentType(method_getTypeEncoding(m), index);
 }
 
-#ifdef OBJC_INSTRUMENTED
-/***********************************************************************
-* PrintCacheHistogram.  Show the non-zero entries from the specified
-* cache histogram.
-**********************************************************************/
-static void    PrintCacheHistogram    (char *          title,
-                                    unsigned int *     firstEntry,
-                                    unsigned int       entryCount)
-{
-    unsigned int       index;
-    unsigned int *     thisEntry;
-
-    printf ("%s\n", title);
-    printf ("    Probes    Tally\n");
-    printf ("    ------    -----\n");
-    for (index = 0, thisEntry = firstEntry;
-         index < entryCount;
-         index += 1, thisEntry += 1)
-    {
-        if (*thisEntry == 0)
-            continue;
-
-        printf ("    %6d    %5d\n", index, *thisEntry);
-    }
-}
-#endif
 
 /***********************************************************************
-* _class_printMethodCacheStatistics.
+* _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, C++ default constructors are called, and all other fields are zeroed.
 **********************************************************************/
-
-#define MAX_LOG2_SIZE          32
-#define MAX_CHAIN_SIZE         100
-
-void           _class_printMethodCacheStatistics               (void)
+__private_extern__ id 
+_internal_class_createInstanceFromZone(Class cls, size_t extraBytes,
+                                       void *zone)
 {
-    unsigned int       isMeta;
-    unsigned int       index;
-    NXHashTable *      class_hash;
-    NXHashState        state;
-    struct objc_class *                cls;
-    unsigned int       totalChain;
-    unsigned int       totalMissChain;
-    unsigned int       maxChain;
-    unsigned int       maxMissChain;
-    unsigned int       classCount;
-    unsigned int       negativeEntryCount;
-    unsigned int       cacheExpandCount;
-    unsigned int       cacheCountBySize[2][MAX_LOG2_SIZE]        = {{0}};
-    unsigned int       totalEntriesBySize[2][MAX_LOG2_SIZE]      = {{0}};
-    unsigned int       maxEntriesBySize[2][MAX_LOG2_SIZE]        = {{0}};
-    unsigned int       totalChainBySize[2][MAX_LOG2_SIZE]        = {{0}};
-    unsigned int       totalMissChainBySize[2][MAX_LOG2_SIZE]    = {{0}};
-    unsigned int       totalMaxChainBySize[2][MAX_LOG2_SIZE]     = {{0}};
-    unsigned int       totalMaxMissChainBySize[2][MAX_LOG2_SIZE] = {{0}};
-    unsigned int       maxChainBySize[2][MAX_LOG2_SIZE]          = {{0}};
-    unsigned int       maxMissChainBySize[2][MAX_LOG2_SIZE]      = {{0}};
-    unsigned int       chainCount[MAX_CHAIN_SIZE]                = {0};
-    unsigned int       missChainCount[MAX_CHAIN_SIZE]            = {0};
-#ifdef OBJC_INSTRUMENTED
-    unsigned int       hitCountBySize[2][MAX_LOG2_SIZE]          = {{0}};
-    unsigned int       hitProbesBySize[2][MAX_LOG2_SIZE]         = {{0}};
-    unsigned int       maxHitProbesBySize[2][MAX_LOG2_SIZE]      = {{0}};
-    unsigned int       missCountBySize[2][MAX_LOG2_SIZE]         = {{0}};
-    unsigned int       missProbesBySize[2][MAX_LOG2_SIZE]        = {{0}};
-    unsigned int       maxMissProbesBySize[2][MAX_LOG2_SIZE]     = {{0}};
-    unsigned int       flushCountBySize[2][MAX_LOG2_SIZE]        = {{0}};
-    unsigned int       flushedEntriesBySize[2][MAX_LOG2_SIZE]    = {{0}};
-    unsigned int       maxFlushedEntriesBySize[2][MAX_LOG2_SIZE] = {{0}};
-#endif
-
-    printf ("Printing cache statistics\n");
-
-    // Outermost loop - iterate over all classes
-    class_hash         = objc_getClasses ();
-    state                      = NXInitHashState (class_hash);
-    classCount         = 0;
-    negativeEntryCount = 0;
-    cacheExpandCount   = 0;
-    while (NXNextHashState (class_hash, &state, (void **) &cls))
-    {
-        // Tally classes
-        classCount += 1;
-
-        // Control loop - do given class' cache, then its isa's cache
-        for (isMeta = 0; isMeta <= 1; isMeta += 1)
-        {
-            Cache              cache;
-            unsigned int       mask;
-            unsigned int       log2Size;
-            unsigned int       entryCount;
-
-            // Select cache of interest
-            cache = isMeta ? cls->isa->cache : ((struct objc_class *)cls)->cache;
-
-            // Ignore empty cache... should we?
-            if (cache == &emptyCache)
-                continue;
-
-            // Middle loop - do each entry in the given cache
-            mask               = cache->mask;
-            entryCount = 0;
-            totalChain = 0;
-            totalMissChain     = 0;
-            maxChain   = 0;
-            maxMissChain       = 0;
-            for (index = 0; index < mask + 1; index += 1)
-            {
-                Method *                       buckets;
-                Method                         method;
-                uarith_t                       hash;
-                uarith_t                       methodChain;
-                uarith_t                       methodMissChain;
-                uarith_t                       index2;
-
-                // If entry is invalid, the only item of
-                // interest is that future insert hashes
-                // to this entry can use it directly.
-                buckets = cache->buckets;
-                if (!CACHE_BUCKET_VALID(buckets[index]))
-                {
-                    missChainCount[0] += 1;
-                    continue;
-                }
-
-                method = buckets[index];
-
-                // Tally valid entries
-                entryCount += 1;
-
-                // Tally "forward::" entries
-                if (CACHE_BUCKET_IMP(method) == &_objc_msgForward)
-                    negativeEntryCount += 1;
-
-                // Calculate search distance (chain length) for this method
-                // The chain may wrap around to the beginning of the table.
-                hash = CACHE_HASH(CACHE_BUCKET_NAME(method), mask);
-                if (index >= hash) methodChain = index - hash;
-                else methodChain = (mask+1) + index - hash;
-
-                // Tally chains of this length
-                if (methodChain < MAX_CHAIN_SIZE)
-                    chainCount[methodChain] += 1;
-
-                // Keep sum of all chain lengths
-                totalChain += methodChain;
-
-                // Record greatest chain length
-                if (methodChain > maxChain)
-                    maxChain = methodChain;
-
-                // Calculate search distance for miss that hashes here
-                index2 = index;
-                while (CACHE_BUCKET_VALID(buckets[index2]))
-                {
-                    index2 += 1;
-                    index2 &= mask;
-                }
-                methodMissChain = ((index2 - index) & mask);
-
-                // Tally miss chains of this length
-                if (methodMissChain < MAX_CHAIN_SIZE)
-                    missChainCount[methodMissChain] += 1;
-
-                // Keep sum of all miss chain lengths in this class
-                totalMissChain += methodMissChain;
-
-                // Record greatest miss chain length
-                if (methodMissChain > maxMissChain)
-                    maxMissChain = methodMissChain;
-            }
+    id obj;
+    size_t size;
 
-            // Factor this cache into statistics about caches of the same
-            // type and size (all caches are a power of two in size)
-            log2Size                                            = log2 (mask + 1);
-            cacheCountBySize[isMeta][log2Size]                 += 1;
-            totalEntriesBySize[isMeta][log2Size]                       += entryCount;
-            if (entryCount > maxEntriesBySize[isMeta][log2Size])
-                maxEntriesBySize[isMeta][log2Size]              = entryCount;
-            totalChainBySize[isMeta][log2Size]                 += totalChain;
-            totalMissChainBySize[isMeta][log2Size]                     += totalMissChain;
-            totalMaxChainBySize[isMeta][log2Size]                      += maxChain;
-            totalMaxMissChainBySize[isMeta][log2Size]          += maxMissChain;
-            if (maxChain > maxChainBySize[isMeta][log2Size])
-                maxChainBySize[isMeta][log2Size]                = maxChain;
-            if (maxMissChain > maxMissChainBySize[isMeta][log2Size])
-                maxMissChainBySize[isMeta][log2Size]            = maxMissChain;
-#ifdef OBJC_INSTRUMENTED
-            {
-                CacheInstrumentation * cacheData;
-
-                cacheData = CACHE_INSTRUMENTATION(cache);
-                hitCountBySize[isMeta][log2Size]                       += cacheData->hitCount;
-                hitProbesBySize[isMeta][log2Size]                      += cacheData->hitProbes;
-                if (cacheData->maxHitProbes > maxHitProbesBySize[isMeta][log2Size])
-                    maxHitProbesBySize[isMeta][log2Size]                = cacheData->maxHitProbes;
-                missCountBySize[isMeta][log2Size]                      += cacheData->missCount;
-                missProbesBySize[isMeta][log2Size]                     += cacheData->missProbes;
-                if (cacheData->maxMissProbes > maxMissProbesBySize[isMeta][log2Size])
-                    maxMissProbesBySize[isMeta][log2Size]               = cacheData->maxMissProbes;
-                flushCountBySize[isMeta][log2Size]                     += cacheData->flushCount;
-                flushedEntriesBySize[isMeta][log2Size]                 += cacheData->flushedEntries;
-                if (cacheData->maxFlushedEntries > maxFlushedEntriesBySize[isMeta][log2Size])
-                    maxFlushedEntriesBySize[isMeta][log2Size]   = cacheData->maxFlushedEntries;
-            }
-#endif
-            // Caches start with a power of two number of entries, and grow by doubling, so
-            // we can calculate the number of times this cache has expanded
-            if (isMeta)
-                cacheExpandCount += log2Size - INIT_META_CACHE_SIZE_LOG2;
-            else
-                cacheExpandCount += log2Size - INIT_CACHE_SIZE_LOG2;
+    // Can't create something for nothing
+    if (!cls) return nil;
 
-        }
+    // Allocate and initialize
+    size = _class_getInstanceSize(cls) + extraBytes;
+    if (UseGC) {
+        obj = (id) auto_zone_allocate_object(gc_zone, size, 
+                                             AUTO_OBJECT_SCANNED, false, true);
+    } else if (zone) {
+        obj = (id) malloc_zone_calloc (zone, 1, size);
+    } else {
+        obj = (id) calloc(1, size);
     }
+    if (!obj) return nil;
 
-    {
-        unsigned int   cacheCountByType[2] = {0};
-        unsigned int   totalCacheCount     = 0;
-        unsigned int   totalEntries        = 0;
-        unsigned int   maxEntries          = 0;
-        unsigned int   totalSlots          = 0;
-#ifdef OBJC_INSTRUMENTED
-        unsigned int   totalHitCount       = 0;
-        unsigned int   totalHitProbes      = 0;
-        unsigned int   maxHitProbes        = 0;
-        unsigned int   totalMissCount      = 0;
-        unsigned int   totalMissProbes     = 0;
-        unsigned int   maxMissProbes       = 0;
-        unsigned int   totalFlushCount     = 0;
-        unsigned int   totalFlushedEntries = 0;
-        unsigned int   maxFlushedEntries   = 0;
-#endif
-
-        totalChain     = 0;
-        maxChain       = 0;
-        totalMissChain = 0;
-        maxMissChain   = 0;
-
-        // Sum information over all caches
-        for (isMeta = 0; isMeta <= 1; isMeta += 1)
-        {
-            for (index = 0; index < MAX_LOG2_SIZE; index += 1)
-            {
-                cacheCountByType[isMeta] += cacheCountBySize[isMeta][index];
-                totalEntries      += totalEntriesBySize[isMeta][index];
-                totalSlots        += cacheCountBySize[isMeta][index] * (1 << index);
-                totalChain        += totalChainBySize[isMeta][index];
-                if (maxEntriesBySize[isMeta][index] > maxEntries)
-                    maxEntries  = maxEntriesBySize[isMeta][index];
-                if (maxChainBySize[isMeta][index] > maxChain)
-                    maxChain    = maxChainBySize[isMeta][index];
-                totalMissChain    += totalMissChainBySize[isMeta][index];
-                if (maxMissChainBySize[isMeta][index] > maxMissChain)
-                    maxMissChain = maxMissChainBySize[isMeta][index];
-#ifdef OBJC_INSTRUMENTED
-                totalHitCount     += hitCountBySize[isMeta][index];
-                totalHitProbes    += hitProbesBySize[isMeta][index];
-                if (maxHitProbesBySize[isMeta][index] > maxHitProbes)
-                    maxHitProbes = maxHitProbesBySize[isMeta][index];
-                totalMissCount    += missCountBySize[isMeta][index];
-                totalMissProbes           += missProbesBySize[isMeta][index];
-                if (maxMissProbesBySize[isMeta][index] > maxMissProbes)
-                    maxMissProbes = maxMissProbesBySize[isMeta][index];
-                totalFlushCount           += flushCountBySize[isMeta][index];
-                totalFlushedEntries += flushedEntriesBySize[isMeta][index];
-                if (maxFlushedEntriesBySize[isMeta][index] > maxFlushedEntries)
-                    maxFlushedEntries = maxFlushedEntriesBySize[isMeta][index];
-#endif
-            }
-
-            totalCacheCount += cacheCountByType[isMeta];
-        }
-
-        // Log our findings
-        printf ("There are %u classes\n", classCount);
-
-        for (isMeta = 0; isMeta <= 1; isMeta += 1)
-        {
-            // Number of this type of class
-            printf    ("\nThere are %u %s-method caches, broken down by size (slot count):\n",
-                       cacheCountByType[isMeta],
-                       isMeta ? "class" : "instance");
-
-            // Print header
-            PrintCacheHeader ();
-
-            // Keep format consistent even if there are caches of this kind
-            if (cacheCountByType[isMeta] == 0)
-            {
-                printf ("(none)\n");
-                continue;
-            }
-
-            // Usage information by cache size
-            for (index = 0; index < MAX_LOG2_SIZE; index += 1)
-            {
-                unsigned int   cacheCount;
-                unsigned int   cacheSlotCount;
-                unsigned int   cacheEntryCount;
-
-                // Get number of caches of this type and size
-                cacheCount = cacheCountBySize[isMeta][index];
-                if (cacheCount == 0)
-                    continue;
-
-                // Get the cache slot count and the total number of valid entries
-                cacheSlotCount  = (1 << index);
-                cacheEntryCount = totalEntriesBySize[isMeta][index];
-
-                // Give the analysis
-                PrintCacheInfo (cacheSlotCount,
-                                cacheCount,
-                                cacheEntryCount,
-                                (float) cacheEntryCount / (float) cacheCount,
-                                maxEntriesBySize[isMeta][index],
-                                (float) totalChainBySize[isMeta][index] / (float) cacheEntryCount,
-                                maxChainBySize[isMeta][index],
-                                (float) totalMissChainBySize[isMeta][index] / (float) (cacheCount * cacheSlotCount),
-                                maxMissChainBySize[isMeta][index]
-#ifdef OBJC_INSTRUMENTED
-                                , hitCountBySize[isMeta][index],
-                                hitCountBySize[isMeta][index] ?
-                                (float) hitProbesBySize[isMeta][index] / (float) hitCountBySize[isMeta][index] : 0.0,
-                                maxHitProbesBySize[isMeta][index],
-                                missCountBySize[isMeta][index],
-                                missCountBySize[isMeta][index] ?
-                                (float) missProbesBySize[isMeta][index] / (float) missCountBySize[isMeta][index] : 0.0,
-                                maxMissProbesBySize[isMeta][index],
-                                flushCountBySize[isMeta][index],
-                                flushCountBySize[isMeta][index] ?
-                                (float) flushedEntriesBySize[isMeta][index] / (float) flushCountBySize[isMeta][index] : 0.0,
-                                maxFlushedEntriesBySize[isMeta][index]
-#endif
-                                );
-            }
-        }
-
-        // Give overall numbers
-        printf ("\nCumulative:\n");
-        PrintCacheHeader ();
-        PrintCacheInfo (totalSlots,
-                        totalCacheCount,
-                        totalEntries,
-                        (float) totalEntries / (float) totalCacheCount,
-                        maxEntries,
-                        (float) totalChain / (float) totalEntries,
-                        maxChain,
-                        (float) totalMissChain / (float) totalSlots,
-                        maxMissChain
-#ifdef OBJC_INSTRUMENTED
-                        , totalHitCount,
-                        totalHitCount ?
-                        (float) totalHitProbes / (float) totalHitCount : 0.0,
-                        maxHitProbes,
-                        totalMissCount,
-                        totalMissCount ?
-                        (float) totalMissProbes / (float) totalMissCount : 0.0,
-                        maxMissProbes,
-                        totalFlushCount,
-                        totalFlushCount ?
-                        (float) totalFlushedEntries / (float) totalFlushCount : 0.0,
-                        maxFlushedEntries
-#endif
-                        );
-
-        printf ("\nNumber of \"forward::\" entries: %d\n", negativeEntryCount);
-        printf ("Number of cache expansions: %d\n", cacheExpandCount);
-#ifdef OBJC_INSTRUMENTED
-        printf ("flush_caches:   total calls  total visits  average visits  max visits  total classes  visits/class\n");
-        printf ("                -----------  ------------  --------------  ----------  -------------  -------------\n");
-        printf ("  linear        %11u  %12u  %14.1f  %10u  %13u  %12.2f\n",
-                LinearFlushCachesCount,
-                LinearFlushCachesVisitedCount,
-                LinearFlushCachesCount ?
-                (float) LinearFlushCachesVisitedCount / (float) LinearFlushCachesCount : 0.0,
-                MaxLinearFlushCachesVisitedCount,
-                LinearFlushCachesVisitedCount,
-                1.0);
-        printf ("  nonlinear     %11u  %12u  %14.1f  %10u  %13u  %12.2f\n",
-                NonlinearFlushCachesCount,
-                NonlinearFlushCachesVisitedCount,
-                NonlinearFlushCachesCount ?
-                (float) NonlinearFlushCachesVisitedCount / (float) NonlinearFlushCachesCount : 0.0,
-                MaxNonlinearFlushCachesVisitedCount,
-                NonlinearFlushCachesClassCount,
-                NonlinearFlushCachesClassCount ?
-                (float) NonlinearFlushCachesVisitedCount / (float) NonlinearFlushCachesClassCount : 0.0);
-        printf ("  ideal         %11u  %12u  %14.1f  %10u  %13u  %12.2f\n",
-                LinearFlushCachesCount + NonlinearFlushCachesCount,
-                IdealFlushCachesCount,
-                LinearFlushCachesCount + NonlinearFlushCachesCount ?
-                (float) IdealFlushCachesCount / (float) (LinearFlushCachesCount + NonlinearFlushCachesCount) : 0.0,
-                MaxIdealFlushCachesCount,
-                LinearFlushCachesVisitedCount + NonlinearFlushCachesClassCount,
-                LinearFlushCachesVisitedCount + NonlinearFlushCachesClassCount ?
-                (float) IdealFlushCachesCount / (float) (LinearFlushCachesVisitedCount + NonlinearFlushCachesClassCount) : 0.0);
-
-        PrintCacheHistogram ("\nCache hit histogram:",  &CacheHitHistogram[0],  CACHE_HISTOGRAM_SIZE);
-        PrintCacheHistogram ("\nCache miss histogram:", &CacheMissHistogram[0], CACHE_HISTOGRAM_SIZE);
-#endif
-
-#if 0
-        printf ("\nLookup chains:");
-        for (index = 0; index < MAX_CHAIN_SIZE; index += 1)
-        {
-            if (chainCount[index] != 0)
-                printf ("  %u:%u", index, chainCount[index]);
-        }
+    // Set the isa pointer
+    obj->isa = cls;
 
-        printf ("\nMiss chains:");
-        for (index = 0; index < MAX_CHAIN_SIZE; index += 1)
-        {
-            if (missChainCount[index] != 0)
-                printf ("  %u:%u", index, missChainCount[index]);
+    // Call C++ constructors, if any.
+    if (!object_cxxConstruct(obj)) {
+        // Some C++ constructor threw an exception. 
+        if (UseGC) {
+            auto_zone_retain(gc_zone, obj);  // gc free expects retain count==1
         }
-
-        printf ("\nTotal memory usage for cache data structures: %lu bytes\n",
-                totalCacheCount * (sizeof(struct objc_cache) - sizeof(Method)) +
-                totalSlots * sizeof(Method) +
-                negativeEntryCount * sizeof(struct objc_method));
-#endif
+        free(obj);
+        return nil;
     }
+
+    return obj;
 }
 
-/***********************************************************************
-* checkUniqueness.
-**********************************************************************/
-void           checkUniqueness        (SEL             s1,
-                              SEL              s2)
-{
-    if (s1 == s2)
-        return;
 
-    if (s1 && s2 && (strcmp ((const char *) s1, (const char *) s2) == 0))
-        _objc_inform ("%p != %p but !strcmp (%s, %s)\n", s1, s2, (char *) s1, (char *) s2);
+__private_extern__ id 
+_internal_object_dispose(id anObject) 
+{
+    if (anObject==nil) return nil;
+    object_cxxDestruct(anObject);
+    if (UseGC) {
+        auto_zone_retain(gc_zone, anObject); // gc free expects retain count==1
+    } else {
+        // only clobber isa for non-gc
+        anObject->isa = _objc_getFreedObjectClass (); 
+    }
+    free(anObject);
+    return nil;
 }
 
index 220256177479e19d805218b71b75448267e7c0a5..ec63b65eb3450b2617663fcf4d9800a0d9f5a50e 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
+ * Copyright (c) 1999-2002, 2005-2006 Apple Inc.  All Rights Reserved.
  * 
- * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
+ * @APPLE_LICENSE_HEADER_START@
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
 // because objc-class.h is public and objc-config.h is not.
 //#define OBJC_INSTRUMENTED
 
-// Turn on support for class refs
-#define OBJC_CLASS_REFS
-
-    #define __S(x) x
-
 // Get the nice macros for subroutine calling, etc.
 // Not available on all architectures.  Not needed
 // (by us) on some configurations.
     #import <architecture/i386/asm_help.h>
 #elif defined (__ppc__) || defined(ppc)
     #import <architecture/ppc/asm_help.h>
+#elif defined (__ppc64__)
+    // no asm_help for ppc64
+#elif defined (__x86_64__)
+    // no asm_help for x86-64
 #else
     #error We need asm_help.h for this architecture
 #endif
index 4a161116a9a307d137a587723c80aa8016272a0b..7a9f677889fbb27a8271d6ed8ad9d75c9caaa3c7 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
+ * Copyright (c) 1999-2003, 2005-2007 Apple Inc.  All Rights Reserved.
  * 
- * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
+ * @APPLE_LICENSE_HEADER_START@
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
 
 #import "objc-private.h"
 
-static volatile void _objc_trap(void);
+__private_extern__ char *__crashreporter_info__ = NULL;
 
+OBJC_EXPORT void       (*_error)(id, const char *, va_list);
 
-static int hasTerminal()
-{
-    static char hasTerm = -1;
-
-    if (hasTerm == -1) {
-       int fd = open("/dev/tty", O_RDWR, 0);
-       if (fd >= 0) {
-           (void)close(fd);
-           hasTerm = 1;
-       } else
-           hasTerm = 0;
-    }
-    return hasTerm;
-}
+static void _objc_trap(void) __attribute__((noreturn));
 
-void _objc_syslog(const char *format, ...)
+// Add "message" to any forthcoming crash log.
+static void _objc_crashlog(const char *message)
 {
-    va_list ap;
-    char bigBuffer[4*1024];
+    char *newmsg;
 
-    va_start(ap, format);
-    vsnprintf(bigBuffer, sizeof(bigBuffer), format, ap);
-    va_end(ap);
+    if (!__crashreporter_info__) {
+        newmsg = strdup(message);
+    } else {
+        asprintf(&newmsg, "%s\n%s", __crashreporter_info__, message);
+    }
 
+    if (newmsg) {
+        // Strip trailing newline
+        char *c = &newmsg[strlen(newmsg)-1];
+        if (*c == '\n') *c = '\0';
+        
+        if (__crashreporter_info__) free(__crashreporter_info__);
+        __crashreporter_info__ = newmsg;
+    }
+}
 
-    if (hasTerminal()) {
-       fwrite(bigBuffer, sizeof(char), strlen(bigBuffer), stderr);
-       if (bigBuffer[strlen(bigBuffer)-1] != '\n')
-           fputc('\n', stderr);
+// Print "message" to the console.
+static void _objc_syslog(const char *message)
+{
+    if (fcntl(STDERR_FILENO, F_GETFL, 0) != -1) {
+        // stderr is open - use it
+        write(STDERR_FILENO, message, strlen(message));
+        if (message[strlen(message)-1] != '\n') {
+            write(STDERR_FILENO, "\n", 1);
+        }
     } else {
-       syslog(LOG_ERR, "%s", bigBuffer);
+        syslog(LOG_ERR, "%s", message);
     }
 }
-/*     
- *     this routine handles errors that involve an object (or class).
+/*
+ * this routine handles errors that involve an object (or class).
  */
-volatile void __objc_error(id rcv, const char *fmt, ...) 
+__private_extern__ void __objc_error(id rcv, const char *fmt, ...) 
 { 
-       va_list vp; 
-
-       va_start(vp,fmt); 
-       (*_error)(rcv, fmt, vp); 
-       va_end(vp);
-       _objc_error (rcv, fmt, vp);     /* In case (*_error)() returns. */
+    va_list vp; 
+
+    va_start(vp,fmt); 
+#if !__OBJC2__
+    (*_error)(rcv, fmt, vp); 
+#endif
+    _objc_error (rcv, fmt, vp);  /* In case (*_error)() returns. */
+    va_end(vp);
 }
 
 /*
- *     this routine is never called directly...it is only called indirectly
- *     through "_error", which can be overriden by an application. It is
- *     not declared static because it needs to be referenced in 
- *     "objc-globaldata.m" (this file organization simplifies the shlib
- *     maintenance problem...oh well). It is, however, a "private extern".
+ * _objc_error is the default *_error handler.
  */
-volatile void _objc_error(id self, const char *fmt, va_list ap) 
+#if __OBJC2__
+__private_extern__
+#endif
+void _objc_error(id self, const char *fmt, va_list ap) 
 { 
-    char bigBuffer[4*1024];
+    char *buf1;
+    char *buf2;
 
-    vsnprintf (bigBuffer, sizeof(bigBuffer), fmt, ap);
-    _objc_syslog ("objc: %s: %s", object_getClassName (self), bigBuffer);
+    vasprintf(&buf1, fmt, ap);
+    asprintf(&buf2, "objc[%d]: %s: %s\n", 
+             getpid(), object_getClassName(self), buf1);
+    _objc_syslog(buf2);
+    _objc_crashlog(buf2);
 
     _objc_trap();
 }
 
-/*     
- *     this routine handles severe runtime errors...like not being able
- *     to read the mach headers, allocate space, etc...very uncommon.
+/*
+ * this routine handles severe runtime errors...like not being able
+ * to read the mach headers, allocate space, etc...very uncommon.
  */
-volatile void _objc_fatal(const char *fmt, ...)
+__private_extern__ void _objc_fatal(const char *fmt, ...)
 {
     va_list ap; 
-    char bigBuffer[4*1024];
+    char *buf1;
+    char *buf2;
 
-    va_start (ap,fmt); 
-    vsnprintf (bigBuffer, sizeof(bigBuffer), fmt, ap);
-    _objc_syslog ("objc: %s", bigBuffer);
+    va_start(ap,fmt); 
+    vasprintf(&buf1, fmt, ap);
     va_end (ap);
 
+    asprintf(&buf2, "objc[%d]: %s\n", getpid(), buf1);
+    _objc_syslog(buf2);
+    _objc_crashlog(buf2);
+
     _objc_trap();
 }
 
 /*
- *     this routine handles soft runtime errors...like not being able
- *      add a category to a class (because it wasn't linked in).
+ * this routine handles soft runtime errors...like not being able
+ * add a category to a class (because it wasn't linked in).
+ */
+__private_extern__ void _objc_inform(const char *fmt, ...)
+{
+    va_list ap; 
+    char *buf1;
+    char *buf2;
+
+    va_start (ap,fmt); 
+    vasprintf(&buf1, fmt, ap);
+    va_end (ap);
+
+    asprintf(&buf2, "objc[%d]: %s\n", getpid(), buf1);
+    _objc_syslog(buf2);
+
+    free(buf2);
+    free(buf1);
+}
+
+
+/* 
+ * Like _objc_inform(), but prints the message only in any 
+ * forthcoming crash log, not to the console.
  */
-void _objc_inform(const char *fmt, ...)
+__private_extern__ void _objc_inform_on_crash(const char *fmt, ...)
 {
     va_list ap; 
-    char bigBuffer[4*1024];
+    char *buf1;
+    char *buf2;
 
     va_start (ap,fmt); 
-    vsnprintf (bigBuffer, sizeof(bigBuffer), fmt, ap);
-    _objc_syslog ("objc: %s", bigBuffer);
+    vasprintf(&buf1, fmt, ap);
     va_end (ap);
+
+    asprintf(&buf2, "objc[%d]: %s\n", getpid(), buf1);
+    _objc_crashlog(buf2);
+
+    free(buf2);
+    free(buf1);
+}
+
+
+/* 
+ * Like calling both _objc_inform and _objc_inform_on_crash.
+ */
+__private_extern__ void _objc_inform_now_and_on_crash(const char *fmt, ...)
+{
+    va_list ap; 
+    char *buf1;
+    char *buf2;
+
+    va_start (ap,fmt); 
+    vasprintf(&buf1, fmt, ap);
+    va_end (ap);
+
+    asprintf(&buf2, "objc[%d]: %s\n", getpid(), buf1);
+    _objc_crashlog(buf2);
+    _objc_syslog(buf2);
+
+    free(buf2);
+    free(buf1);
 }
 
 
 /* Kill the process in a way that generates a crash log. 
  * This is better than calling exit(). */
-static volatile void _objc_trap(void) 
+static void _objc_trap(void) 
+{
+    __builtin_trap();
+}
+
+/* Try to keep _objc_warn_deprecated out of crash logs 
+ * caused by _objc_trap(). rdar://4546883 */
+__attribute__((used))
+static void _objc_trap2(void)
 {
-#if defined(__ppc__) || defined(ppc)
-    asm("trap");
-#elif defined(__i386__) || defined(i386)
-    asm("int3");
-#else
-#warning _objc_trap not specified for this architecture; using _exit instead
-    _exit(1);
-#endif   
+    __builtin_trap();
 }
+
+__private_extern__ void _objc_warn_deprecated(const char *old, const char *new)
+{
+    if (PrintDeprecation) {
+        if (new) {
+            _objc_inform("The function %s is obsolete. Use %s instead. Set a breakpoint on _objc_warn_deprecated to find the culprit.", old, new);
+        } else {
+            _objc_inform("The function %s is obsolete. Do not use it. Set a breakpoint on _objc_warn_deprecated to find the culprit.", old);
+        }
+    }
+}
+
+
+/* Entry points for breakable errors. For some reason, can't inhibit the compiler's inlining aggression.
+ */
+__private_extern__ void objc_assign_ivar_error(id base, ptrdiff_t offset) {
+}
+
+__private_extern__ void objc_assign_global_error(id value, id *slot) {
+}
+
+__private_extern__ void objc_exception_during_finalize_error(void) {
+}
+
index 02e907c8f375ca3a77550e33d6062705c992a3d1..1667108765aa09ec78207a2254d638410340b663 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
+ * Copyright (c) 2002-2003, 2006-2007 Apple Inc.  All Rights Reserved.
  * 
- * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
+ * @APPLE_LICENSE_HEADER_START@
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
  * 
  * @APPLE_LICENSE_HEADER_END@
  */
-//  objc_exception.h
-//  Support for Objective-C language Exceptions
-//
-//  Created by Blaine Garst on Fri Nov 01 2002.
-//  Copyright (c) 2002-3 Apple Computer, Inc. All rights reserved.
-//
 
 #ifndef __OBJC_EXCEPTION_H_
 #define __OBJC_EXCEPTION_H_
 
-#import "objc/objc-class.h"
+#import <objc/objc.h>
+
+// ZEROCOST_SWITCH
+#if !__LP64__  ||  !OBJC_ZEROCOST_EXCEPTIONS
 
 // compiler reserves a setjmp buffer + 4 words as localExceptionData
 
@@ -60,5 +54,31 @@ OBJC_EXPORT void objc_exception_get_functions(objc_exception_functions_t *table)
 // set table
 OBJC_EXPORT void objc_exception_set_functions(objc_exception_functions_t *table);
 
+
+// !__LP64__
+#else
+// __LP64__
+
+typedef id (*objc_exception_preprocessor)(id exception);
+typedef int (*objc_exception_matcher)(Class catch_type, id exception);
+typedef void (*objc_uncaught_exception_handler)(id exception);
+typedef void (*objc_exception_handler)(id unused, void *context);
+
+OBJC_EXPORT void objc_exception_throw(id exception);
+OBJC_EXPORT void objc_exception_rethrow(void);
+OBJC_EXPORT id objc_begin_catch(void *exc_buf);
+OBJC_EXPORT void objc_end_catch(void);
+
+OBJC_EXPORT uintptr_t objc_addExceptionHandler(objc_exception_handler fn, void *context);
+OBJC_EXPORT void objc_removeExceptionHandler(uintptr_t token);
+
+OBJC_EXPORT objc_exception_preprocessor objc_setExceptionPreprocessor(objc_exception_preprocessor fn);
+OBJC_EXPORT objc_exception_matcher objc_setExceptionMatcher(objc_exception_matcher fn);
+OBJC_EXPORT objc_uncaught_exception_handler objc_setUncaughtExceptionHandler(objc_uncaught_exception_handler fn);
+
+
+// __LP64__
+#endif
+
 #endif  // __OBJC_EXCEPTION_H_
 
index 03296f1473afbec19001283a51fe029b16a2a982..250c796fa9d0d2d303c7c6857b5889536fe44eea 100644 (file)
@@ -1,10 +1,8 @@
 /*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2002-2007 Apple 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
  * 
  * @APPLE_LICENSE_HEADER_END@
  */
-//
-//  objc_exception.m
-//  Support minimal stand-alone implementation plus hooks for swapping
-//  in a richer implementation.
-//
-//  Created by Blaine Garst on Fri Nov 01 2002.
-//  Copyright (c) 2002 Apple Computer, Inc. All rights reserved.
-//
 
-#undef _BUILDING_OBJC
+// ZEROCOST_SWITCH
+#if !__LP64__  ||  !OBJC_ZEROCOST_EXCEPTIONS
+
+/***********************************************************************
+* 32-bit implementation
+**********************************************************************/
+
+#include <stdlib.h>
 
 #import "objc-exception.h"
+#import "objc-private.h"
 
 static objc_exception_functions_t xtab;
 
@@ -69,6 +67,7 @@ void objc_exception_throw(id exception) {
         set_default_handlers();
     }
     xtab.throw_exc(exception);
+    _objc_fatal("objc_exception_throw failed");
 }
 
 void objc_exception_try_enter(void *localExceptionData) {
@@ -124,8 +123,6 @@ typedef struct _threadChain {
 }
     ThreadChainLink_t;
 
-#define _ExceptionDebug 0
-
 static ThreadChainLink_t ThreadChainLink;
 
 static ThreadChainLink_t *getChainLink() {
@@ -153,20 +150,20 @@ static void default_try_enter(void *localExceptionData) {
     ThreadChainLink_t *chainLink = getChainLink();
     ((LocalData_t *)localExceptionData)->pointers[1] = chainLink->topHandler;
     chainLink->topHandler = localExceptionData;
-    if (_ExceptionDebug) _objc_inform("entered try block %x\n", chainLink->topHandler);
+    if (PrintExceptions) _objc_inform("EXCEPTIONS: entered try block %p\n", chainLink->topHandler);
 }
 
 static void default_throw(id value) {
     ThreadChainLink_t *chainLink = getChainLink();
     if (value == nil) {
-        if (_ExceptionDebug) _objc_inform("objc_exception_throw with nil value\n");
+        if (PrintExceptions) _objc_inform("EXCEPTIONS: objc_exception_throw with nil value\n");
         return;
     }
     if (chainLink == NULL) {
-        if (_ExceptionDebug) _objc_inform("No handler in place!\n");
+        if (PrintExceptions) _objc_inform("EXCEPTIONS: No handler in place!\n");
         return;
     }
-    if (_ExceptionDebug) _objc_inform("exception thrown, going to handler block %x\n", chainLink->topHandler);
+    if (PrintExceptions) _objc_inform("EXCEPTIONS: exception thrown, going to handler block %p\n", chainLink->topHandler);
     LocalData_t *led = chainLink->topHandler;
     chainLink->topHandler = led->pointers[1];  // pop top handler
     led->pointers[0] = value;                  // store exception that is thrown
@@ -176,10 +173,10 @@ static void default_throw(id value) {
 static void default_try_exit(void *led) {
     ThreadChainLink_t *chainLink = getChainLink();
     if (!chainLink || led != chainLink->topHandler) {
-        if (_ExceptionDebug) _objc_inform("!!! mismatched try block exit handlers !!!\n");
+        if (PrintExceptions) _objc_inform("EXCEPTIONS: *** mismatched try block exit handlers\n");
         return;
     }
-    if (_ExceptionDebug) _objc_inform("removing try block handler %x\n", chainLink->topHandler);
+    if (PrintExceptions) _objc_inform("EXCEPTIONS: removing try block handler %p\n", chainLink->topHandler);
     chainLink->topHandler = chainLink->topHandler->pointers[1];        // pop top handler
 }
 
@@ -191,7 +188,7 @@ static id default_extract(void *localExceptionData) {
 static int default_match(Class exceptionClass, id exception) {
     //return [exception isKindOfClass:exceptionClass];
     Class cls;
-    for (cls = exception->isa; nil != cls; cls = cls->super_class
+    for (cls = exception->isa; nil != cls; cls = _class_getSuperclass(cls)
        if (cls == exceptionClass) return 1;
     return 0;
 }
@@ -201,7 +198,916 @@ static void set_default_handlers() {
         0, default_throw, default_try_enter, default_try_exit, default_extract, default_match };
 
     // should this always print?
-    if (_ExceptionDebug) _objc_inform("*** Setting default (non-Foundation) exception mechanism\n");
+    if (PrintExceptions) _objc_inform("EXCEPTIONS: *** Setting default (non-Foundation) exception mechanism\n");
     objc_exception_set_functions(&default_functions);
 }
+
+
+__private_extern__ void exception_init(void)
+{
+    // nothing to do
+}
+
+__private_extern__ void _destroyAltHandlerList(struct alt_handler_list *list)
+{
+    // nothing to do
+}
+
+
+// !__LP64__
+#else
+// __LP64__
+
+/***********************************************************************
+* 64-bit implementation.
+**********************************************************************/
+
+#include <objc/objc-exception.h>
+#include "objc-private.h"
+
+
+// unwind library types and functions
+// Mostly adapted from Itanium C++ ABI: Exception Handling
+//   http://www.codesourcery.com/cxx-abi/abi-eh.html
+
+struct _Unwind_Exception;
+struct _Unwind_Context;
+
+typedef int _Unwind_Action;
+static const _Unwind_Action _UA_SEARCH_PHASE = 1;
+static const _Unwind_Action _UA_CLEANUP_PHASE = 2;
+static const _Unwind_Action _UA_HANDLER_FRAME = 4;
+static const _Unwind_Action _UA_FORCE_UNWIND = 8;
+
+typedef enum {
+    _URC_NO_REASON = 0,
+    _URC_FOREIGN_EXCEPTION_CAUGHT = 1,
+    _URC_FATAL_PHASE2_ERROR = 2,
+    _URC_FATAL_PHASE1_ERROR = 3,
+    _URC_NORMAL_STOP = 4,
+    _URC_END_OF_STACK = 5,
+    _URC_HANDLER_FOUND = 6,
+    _URC_INSTALL_CONTEXT = 7,
+    _URC_CONTINUE_UNWIND = 8
+} _Unwind_Reason_Code;
+
+
+typedef _Unwind_Reason_Code (*_Unwind_Trace_Fn)(struct _Unwind_Context *, void *);
+
+struct dwarf_eh_bases
+{
+    uintptr_t tbase;
+    uintptr_t dbase;
+    uintptr_t func;
+};
+
+extern uintptr_t _Unwind_GetIP (struct _Unwind_Context *);
+extern uintptr_t _Unwind_GetCFA (struct _Unwind_Context *);
+extern uintptr_t _Unwind_GetLanguageSpecificData(struct _Unwind_Context *);
+extern const void * _Unwind_Find_FDE (void *, struct dwarf_eh_bases *);
+extern _Unwind_Reason_Code _Unwind_Backtrace (_Unwind_Trace_Fn, void *);
+
+
+// C++ runtime types and functions
+// Mostly adapted from Itanium C++ ABI: Exception Handling
+//   http://www.codesourcery.com/cxx-abi/abi-eh.html
+
+typedef void (*terminate_handler) ();
+
+// mangled std::set_terminate()
+extern terminate_handler _ZSt13set_terminatePFvvE(terminate_handler);
+extern void *__cxa_allocate_exception(size_t thrown_size);
+extern void __cxa_throw(void *exc, void *typeinfo, void (*destructor)(void *)) __attribute__((noreturn));
+extern void *__cxa_begin_catch(void *exc);
+extern void __cxa_end_catch(void);
+extern void __cxa_rethrow(void);
+extern void *__cxa_current_exception_type(void);
+
+extern _Unwind_Reason_Code 
+__gxx_personality_v0(int version,
+                     _Unwind_Action actions,
+                     uint64_t exceptionClass,
+                     struct _Unwind_Exception *exceptionObject,
+                     struct _Unwind_Context *context);
+
+
+// objc's internal exception types and data
+
+extern const void *objc_ehtype_vtable[];
+
+struct objc_typeinfo {
+    // Position of vtable and name fields must match C++ typeinfo object
+    const void **vtable;  // always objc_ehtype_vtable
+    const char *name;     // c++ typeinfo string
+
+    Class cls;
+};
+
+struct objc_exception {
+    id obj;
+    struct objc_typeinfo tinfo;
+};
+
+
+static void _objc_exception_noop(void) { } 
+static char _objc_exception_false(void) { return 0; } 
+static char _objc_exception_true(void) { return 1; } 
+static char _objc_exception_do_catch(struct objc_typeinfo *catch_tinfo, 
+                                     struct objc_typeinfo *throw_tinfo, 
+                                     void **throw_obj_p, 
+                                     unsigned outer);
+
+const void *objc_ehtype_vtable[] = {
+    NULL,  // typeinfo's vtable? - fixme 
+    NULL,  // typeinfo's typeinfo - fixme
+    _objc_exception_noop,      // in-place destructor?
+    _objc_exception_noop,      // destructor?
+    _objc_exception_true,      // __is_pointer_p
+    _objc_exception_false,     // __is_function_p
+    _objc_exception_do_catch,  // __do_catch
+    _objc_exception_false,     // __do_upcast
+};
+
+struct objc_typeinfo OBJC_EHTYPE_id = {
+    objc_ehtype_vtable+2, 
+    "id", 
+    NULL
+};
+
+
+
+/***********************************************************************
+* Foundation customization
+**********************************************************************/
+
+/***********************************************************************
+* _objc_default_exception_preprocessor
+* Default exception preprocessor. Expected to be overridden by Foundation.
+**********************************************************************/
+static id _objc_default_exception_preprocessor(id exception)
+{
+    return exception;
+}
+static objc_exception_preprocessor exception_preprocessor = _objc_default_exception_preprocessor;
+
+
+/***********************************************************************
+* _objc_default_exception_matcher
+* Default exception matcher. Expected to be overridden by Foundation.
+**********************************************************************/
+static int _objc_default_exception_matcher(Class catch_cls, id exception)
+{
+    Class cls;
+    for (cls = exception->isa;
+         cls != NULL; 
+         cls = class_getSuperclass(cls))
+    {
+        if (cls == catch_cls) return 1;
+    }
+
+    return 0;
+}
+static objc_exception_matcher exception_matcher = _objc_default_exception_matcher;
+
+
+/***********************************************************************
+* _objc_default_uncaught_exception_handler
+* Default uncaught exception handler. Expected to be overridden by Foundation.
+**********************************************************************/
+static void _objc_default_uncaught_exception_handler(id exception)
+{
+}
+static objc_uncaught_exception_handler uncaught_handler = _objc_default_uncaught_exception_handler;
+
+
+/***********************************************************************
+* objc_setExceptionPreprocessor
+* Set a handler for preprocessing Objective-C exceptions. 
+* Returns the previous handler. 
+**********************************************************************/
+objc_exception_preprocessor
+objc_setExceptionPreprocessor(objc_exception_preprocessor fn)
+{
+    objc_exception_preprocessor result = exception_preprocessor;
+    exception_preprocessor = fn;
+    return result;
+}
+
+
+/***********************************************************************
+* objc_setExceptionMatcher
+* Set a handler for matching Objective-C exceptions. 
+* Returns the previous handler. 
+**********************************************************************/
+objc_exception_matcher
+objc_setExceptionMatcher(objc_exception_matcher fn)
+{
+    objc_exception_matcher result = exception_matcher;
+    exception_matcher = fn;
+    return result;
+}
+
+
+/***********************************************************************
+* objc_setUncaughtExceptionHandler
+* Set a handler for uncaught Objective-C exceptions. 
+* Returns the previous handler. 
+**********************************************************************/
+objc_uncaught_exception_handler 
+objc_setUncaughtExceptionHandler(objc_uncaught_exception_handler fn)
+{
+    objc_uncaught_exception_handler result = uncaught_handler;
+    uncaught_handler = fn;
+    return result;
+}
+
+
+/***********************************************************************
+* Exception personality
+**********************************************************************/
+
+static void call_alt_handlers(struct _Unwind_Context *ctx);
+
+_Unwind_Reason_Code 
+__objc_personality_v0(int version,
+                      _Unwind_Action actions,
+                      uint64_t exceptionClass,
+                      struct _Unwind_Exception *exceptionObject,
+                      struct _Unwind_Context *context)
+{
+    BOOL unwinding = ((actions & _UA_CLEANUP_PHASE)  ||  
+                      (actions & _UA_FORCE_UNWIND));
+
+    if (PrintExceptions) {
+        _objc_inform("EXCEPTIONS: %s through frame [ip=%p sp=%p] "
+                     "for exception %p", 
+                     unwinding ? "unwinding" : "searching", 
+                     (void*)(_Unwind_GetIP(context)-1),
+                     (void*)_Unwind_GetCFA(context), exceptionObject);
+    }
+
+    // If we're executing the unwind, call this frame's alt handlers, if any.
+    if (unwinding) {
+        call_alt_handlers(context);
+    }
+
+    // Let C++ handle the unwind itself.
+    return __gxx_personality_v0(version, actions, exceptionClass, 
+                                exceptionObject, context);
+}
+
+
+/***********************************************************************
+* Compiler ABI
+**********************************************************************/
+
+static void _objc_exception_destructor(void *exc_gen) {
+    struct objc_exception *exc = (struct objc_exception *)exc_gen;
+    if (UseGC  &&  auto_zone_is_valid_pointer(gc_zone, exc->obj)) {
+        // retained by objc_exception_throw
+        auto_zone_release(gc_zone, exc->obj);
+    }
+}
+
+
+void objc_exception_throw(id obj)
+{
+    struct objc_exception *exc = 
+        __cxa_allocate_exception(sizeof(struct objc_exception));
+
+    exc->obj = (*exception_preprocessor)(obj);
+    if (UseGC  &&  auto_zone_is_valid_pointer(gc_zone, obj)) {
+        // exc is non-scanned memory. Retain the object for the duration.
+        auto_zone_retain(gc_zone, obj);
+    }
+
+    exc->tinfo.vtable = objc_ehtype_vtable;
+    exc->tinfo.name = object_getClassName(obj);
+    exc->tinfo.cls = obj ? obj->isa : Nil;
+
+    if (PrintExceptions) {
+        _objc_inform("EXCEPTIONS: throwing %p (object %p, a %s)", 
+                     exc, obj, object_getClassName(obj));
+    }
+
+    __cxa_throw(exc, &exc->tinfo, &_objc_exception_destructor);
+}
+
+
+void objc_exception_rethrow(void)
+{
+    // exception_preprocessor doesn't get another bite of the apple
+    if (PrintExceptions) {
+        _objc_inform("EXCEPTIONS: rethrowing current exception");
+    }
+    __cxa_rethrow();
+}
+
+
+id objc_begin_catch(void *exc_gen)
+{
+    if (PrintExceptions) {
+        _objc_inform("EXCEPTIONS: handling exception %p at %p", 
+                     exc_gen, __builtin_return_address(0));
+    }
+    // NOT actually an id in the catch(...) case!
+    return (id)__cxa_begin_catch(exc_gen);
+}
+
+
+void objc_end_catch(void)
+{
+    if (PrintExceptions) {
+        _objc_inform("EXCEPTIONS: finishing handler");
+    }
+    __cxa_end_catch();
+}
+
+
+static char _objc_exception_do_catch(struct objc_typeinfo *catch_tinfo, 
+                                     struct objc_typeinfo *throw_tinfo, 
+                                     void **throw_obj_p, 
+                                     unsigned outer)
+{
+    id exception;
+
+    if (throw_tinfo->vtable != objc_ehtype_vtable) {
+        // Only objc types can be caught here.
+        return 0;
+    }
+
+    // `catch (id)` always catches objc types.
+    if (catch_tinfo == &OBJC_EHTYPE_id) {
+        if (PrintExceptions) _objc_inform("EXCEPTIONS: catch(id)");
+        return 1;
+    }
+
+    exception = *(id *)throw_obj_p;
+    // fixme remapped catch_tinfo->cls
+    if ((*exception_matcher)(catch_tinfo->cls, exception)) {
+        if (PrintExceptions) _objc_inform("EXCEPTIONS: catch(%s)", 
+                                          class_getName(catch_tinfo->cls));
+        return 1;
+    }
+
+    return 0;
+}
+
+
+/***********************************************************************
+* _objc_terminate
+* Custom std::terminate handler.
+*
+* The uncaught exception callback is implemented as a std::terminate handler. 
+* 1. Check if there's an active exception
+* 2. If so, check if it's an Objective-C exception
+* 3. If so, call our registered callback with the object.
+* 4. Finally, call the previous terminate handler.
+**********************************************************************/
+static terminate_handler old_terminate = NULL;
+static void _objc_terminate(void)
+{
+    if (PrintExceptions) {
+        _objc_inform("EXCEPTIONS: terminating");
+    }
+
+    if (! __cxa_current_exception_type()) {
+        // No current exception.
+        (*old_terminate)();
+    }
+    else {
+        // There is a current exception. Check if it's an objc exception.
+        @try {
+            __cxa_rethrow();
+        } @catch (id e) {
+            // It's an objc object. Call Foundation's handler, if any.
+            (*uncaught_handler)(e);
+            (*old_terminate)();
+        } @catch (...) {
+            // It's not an objc object. Continue to C++ terminate.
+            (*old_terminate)();
+        }
+    }
+}
+
+
+/***********************************************************************
+* alt handler support
+**********************************************************************/
+
+
+// Dwarf eh data encodings
+#define DW_EH_PE_omit      0xff  // no data follows
+
+#define DW_EH_PE_absptr    0x00
+#define DW_EH_PE_uleb128   0x01
+#define DW_EH_PE_udata2    0x02
+#define DW_EH_PE_udata4    0x03
+#define DW_EH_PE_udata8    0x04
+#define DW_EH_PE_sleb128   0x09
+#define DW_EH_PE_sdata2    0x0A
+#define DW_EH_PE_sdata4    0x0B
+#define DW_EH_PE_sdata8    0x0C
+
+#define DW_EH_PE_pcrel     0x10
+#define DW_EH_PE_textrel   0x20
+#define DW_EH_PE_datarel   0x30
+#define DW_EH_PE_funcrel   0x40
+#define DW_EH_PE_aligned   0x50  // fixme
+
+#define DW_EH_PE_indirect  0x80  // gcc extension
+
+
+/***********************************************************************
+* read_uleb
+* Read a LEB-encoded unsigned integer from the address stored in *pp.
+* Increments *pp past the bytes read.
+* Adapted from DWARF Debugging Information Format 1.1, appendix 4
+**********************************************************************/
+static uintptr_t read_uleb(uintptr_t *pp)
+{
+    uintptr_t result = 0;
+    uintptr_t shift = 0;
+    unsigned char byte;
+    do {
+        byte = *(const unsigned char *)(*pp)++;
+        result |= (byte & 0x7f) << shift;
+        shift += 7;
+    } while (byte & 0x80);
+    return result;
+}
+
+
+/***********************************************************************
+* read_sleb
+* Read a LEB-encoded signed integer from the address stored in *pp.
+* Increments *pp past the bytes read.
+* Adapted from DWARF Debugging Information Format 1.1, appendix 4
+**********************************************************************/
+static intptr_t read_sleb(uintptr_t *pp)
+{
+    uintptr_t result = 0;
+    uintptr_t shift = 0;
+    unsigned char byte;
+    do {
+        byte = *(const unsigned char *)(*pp)++;
+        result |= (byte & 0x7f) << shift;
+        shift += 7;
+    } while (byte & 0x80);
+    if ((shift < 8*sizeof(intptr_t))  &&  (byte & 0x40)) {
+        result |= ((intptr_t)-1) << shift;
+    }
+    return result;
+}
+
+
+/***********************************************************************
+* get_cie
+* Returns the address of the CIE for the given FDE.
+**********************************************************************/
+static uintptr_t get_cie(uintptr_t fde) {
+    uintptr_t deltap = fde + sizeof(int32_t);
+    int32_t delta = *(int32_t *)deltap;
+    return deltap - delta;
+}
+
+
+/***********************************************************************
+* get_cie_augmentation
+* Returns the augmentation string for the given CIE.
+**********************************************************************/
+static const char *get_cie_augmentation(uintptr_t cie) {
+    return (const char *)(cie + 2*sizeof(int32_t) + 1);
+}
+
+
+/***********************************************************************
+* read_address
+* Reads an encoded address from the address stored in *pp.
+* Increments *pp past the bytes read.
+* The data is interpreted according to the given dwarf encoding 
+* and base addresses.
+**********************************************************************/
+static uintptr_t read_address(uintptr_t *pp, 
+                              struct dwarf_eh_bases *bases, 
+                              unsigned char encoding)
+{
+    uintptr_t result = 0;
+    uintptr_t oldp = *pp;
+
+    // fixme need DW_EH_PE_aligned?
+
+#define READ(type) \
+    result = *(type *)(*pp); \
+    *pp += sizeof(type);
+
+    if (encoding == DW_EH_PE_omit) return 0;
+
+    switch (encoding & 0x0f) {
+    case DW_EH_PE_absptr:
+        READ(uintptr_t);
+        break;
+    case DW_EH_PE_uleb128:
+        result = read_uleb(pp);
+        break;
+    case DW_EH_PE_udata2:
+        READ(uint16_t);
+        break;
+    case DW_EH_PE_udata4:
+        READ(uint32_t);
+        break;
+#if __LP64__
+    case DW_EH_PE_udata8:
+        READ(uint64_t);
+        break;
+#endif
+    case DW_EH_PE_sleb128:
+        result = read_sleb(pp);
+        break;
+    case DW_EH_PE_sdata2:
+        READ(int16_t);
+        break;
+    case DW_EH_PE_sdata4:
+        READ(int32_t);
+        break;
+#if __LP64__
+    case DW_EH_PE_sdata8:
+        READ(int64_t);
+        break;
+#endif
+    default:
+        _objc_inform("unknown DWARF EH encoding 0x%x at %p", 
+                     encoding, (void *)*pp);
+        break;
+    }
+
+#undef READ
+
+    if (result) {
+        switch (encoding & 0x70) {
+        case DW_EH_PE_pcrel:
+            // fixme correct?
+            result += (uintptr_t)oldp;
+            break;
+        case DW_EH_PE_textrel:
+            result += bases->tbase;
+            break;
+        case DW_EH_PE_datarel:
+            result += bases->dbase;
+            break;
+        case DW_EH_PE_funcrel:
+            result += bases->func;
+            break;
+        case DW_EH_PE_aligned:
+            _objc_inform("unknown DWARF EH encoding 0x%x at %p", 
+                         encoding, (void *)*pp);
+            break;
+        default:
+            // no adjustment
+            break;
+        }
+
+        if (encoding & DW_EH_PE_indirect) {
+            result = *(uintptr_t *)result;
+        }
+    }
+
+    return (uintptr_t)result;
+}
+
+
+/***********************************************************************
+* frame_finder
+* Determines whether the frame represented by ctx is 
+* (1) an Objective-C or Objective-C++ frame, and 
+* (2) has any catch handlers.
+**********************************************************************/
+struct frame_range {
+    uintptr_t ip_start;
+    uintptr_t ip_end;
+    uintptr_t cfa;
+};
+
+static _Unwind_Reason_Code frame_finder(struct _Unwind_Context *ctx, void *arg)
+{
+    uintptr_t ip_start;
+    uintptr_t ip_end;
+
+    uintptr_t lsda = _Unwind_GetLanguageSpecificData(ctx);
+    if (!lsda) return _URC_NO_REASON; 
+
+    uintptr_t ip = _Unwind_GetIP(ctx) - 1;
+
+    struct dwarf_eh_bases bases;
+    uintptr_t fde = (uintptr_t)_Unwind_Find_FDE((void *)ip, &bases);
+    if (!fde) return _URC_NO_REASON;
+
+    uintptr_t cie = get_cie(fde);
+    const char *aug = get_cie_augmentation(cie);
+    uintptr_t augdata = (uintptr_t)(aug + strlen(aug) + 1);
+    read_uleb(&augdata); // code alignment factor
+    read_sleb(&augdata); // data alignment factor
+    augdata++; // RA register
+
+    // 'z' must be first, if present
+    if (*aug == 'z') {
+        aug++;
+        read_uleb(&augdata);  // augmentation length
+    }
+
+    uintptr_t personality = 0;
+    char ch;
+    while ((ch = *aug++)) {
+        if (ch == 'L') {
+            // LSDA encoding
+            augdata++;  
+        } else if (ch == 'R') {
+            // pointer encoding
+            augdata++;
+        } else if (ch == 'P') {
+            // personality function
+            unsigned char enc = *(const unsigned char *)augdata++;
+            personality = read_address(&augdata, &bases, enc);
+        } else {
+            // unknown augmentation - ignore the rest
+            break;
+        }
+    }
+                                                
+    // No personality means no handlers in this frame
+    if (!personality) return _URC_NO_REASON;
+
+    // Only the objc personality will honor our attached handlers.
+    if (personality != (uintptr_t)__objc_personality_v0) return _URC_NO_REASON;
+
+    // We have the LSDA and the right personality. 
+    // Scan the LSDA for handlers matching this IP
+
+    unsigned char LPStart_enc = *(const unsigned char *)lsda++;
+    if (LPStart_enc != DW_EH_PE_omit) {
+        read_address(&lsda, &bases, LPStart_enc); // LPStart
+    }
+
+    unsigned char TType_enc = *(const unsigned char *)lsda++;
+    if (TType_enc != DW_EH_PE_omit) {
+        read_uleb(&lsda);  // TType
+    }
+
+    unsigned char call_site_enc = *(const unsigned char *)lsda++;
+    uintptr_t length = read_uleb(&lsda);
+    uintptr_t call_site_table = lsda;
+    uintptr_t call_site_table_end = call_site_table + length;
+    uintptr_t action_record_table = call_site_table_end;
+
+    uintptr_t action_record = 0;
+    uintptr_t p = call_site_table;
+
+    while (p < call_site_table_end) {
+        uintptr_t start = read_address(&p, &bases, call_site_enc);
+        uintptr_t len = read_address(&p, &bases, call_site_enc);
+        uintptr_t pad = read_address(&p, &bases, call_site_enc);
+        uintptr_t action = read_uleb(&p);
+
+        if (ip < bases.func + start) {
+            // no more source ranges
+            return _URC_NO_REASON;
+        } 
+        else if (ip < bases.func + start + len) {
+            // found the range
+            if (!pad) return _URC_NO_REASON;  // ...but it has no landing pad
+            // found the landing pad
+            ip_start = bases.func + start;
+            ip_end = bases.func + start + len;
+            action_record = action ? action_record_table + action - 1 : 0;
+            break;
+        }        
+    }
+    
+    if (!action_record) return _URC_NO_REASON;  // no catch handlers
+
+    // has handlers, destructors, and/or throws specifications
+    // Use this frame if it has any handlers
+    int has_handler = 0;
+    p = action_record;
+    intptr_t offset;
+    do {
+        intptr_t filter = read_sleb(&p);
+        uintptr_t temp = p;
+        offset = read_sleb(&temp);
+        p += offset;
+        
+        if (filter < 0) {
+            // throws specification - ignore
+        } else if (filter == 0) {
+            // destructor - ignore
+        } else /* filter >= 0 */ {
+            // catch handler - use this frame
+            has_handler = 1;
+            break;
+        }
+    } while (offset);
+    
+    if (!has_handler) return _URC_NO_REASON;  // no catch handlers - ignore
+
+    struct frame_range *result = (struct frame_range *)arg;
+    result->ip_start = ip_start;
+    result->ip_end = ip_end;
+    result->cfa = _Unwind_GetCFA(ctx);
+
+    return _URC_HANDLER_FOUND;
+}
+
+
+// This data structure assumes the number of 
+// active alt handlers per frame is small.
+struct alt_handler_data {
+    uintptr_t ip_start;
+    uintptr_t ip_end;
+    uintptr_t cfa;
+    objc_exception_handler fn;
+    void *context;
+};
+
+struct alt_handler_list {
+    unsigned int allocated;
+    unsigned int used;
+    struct alt_handler_data *handlers;
+};
+
+
+static struct alt_handler_list *
+fetch_handler_list(BOOL create)
+{
+    _objc_pthread_data *data = _objc_fetch_pthread_data(create);
+    if (!data) return NULL;
+
+    struct alt_handler_list *list = data->handlerList;
+    if (!list) {
+        if (!create) return NULL;
+        list = _calloc_internal(1, sizeof(*list));
+        data->handlerList = list;
+    }
+
+    return list;
+}
+
+
+__private_extern__ void _destroyAltHandlerList(struct alt_handler_list *list)
+{
+    if (list) {
+        if (list->handlers) {
+            _free_internal(list->handlers);
+        }
+        _free_internal(list);
+    }
+}
+
+
+uintptr_t objc_addExceptionHandler(objc_exception_handler fn, void *context)
+{ 
+    struct frame_range target_frame = {0, 0, 0};
+
+    // Find the closest enclosing frame with objc catch handlers
+    _Unwind_Backtrace(&frame_finder, &target_frame);
+    if (!target_frame.ip_start) {
+        // No suitable enclosing handler found.
+        return 0;
+    }
+
+    // Record this alt handler for the discovered frame.
+    struct alt_handler_list *list = fetch_handler_list(YES);
+    unsigned int i = 0;
+
+    if (list->used == list->allocated) {
+        list->allocated = list->allocated*2 ?: 4;
+        list->handlers = _realloc_internal(list->handlers, list->allocated * sizeof(list->handlers[0]));
+        bzero(&list->handlers[list->used], (list->allocated - list->used) * sizeof(list->handlers[0]));
+        i = list->used;
+    }
+    else {
+        for (i = 0; i < list->allocated; i++) {
+            if (list->handlers[i].ip_start == 0  &&  
+                list->handlers[i].ip_end == 0  &&  
+                list->handlers[i].cfa == 0) 
+            {
+                break;
+            }
+        }
+        if (i == list->allocated) {
+            _objc_fatal("alt handlers in objc runtime are buggy!");
+        }
+    }
+
+    struct alt_handler_data *data = &list->handlers[i];
+
+    data->ip_start = target_frame.ip_start;
+    data->ip_end = target_frame.ip_end;
+    data->cfa = target_frame.cfa;
+    data->fn = fn;
+    data->context = context;
+    list->used++;
+
+    if (PrintAltHandlers) {
+        _objc_inform("ALT HANDLERS: installing alt handler %d %p(%p) on "
+                     "frame [ip=%p..%p sp=%p]", i+1, data->fn, data->context, 
+                     (void *)data->ip_start, (void *)data->ip_end, 
+                     (void *)data->cfa);
+    }
+
+    if (list->used > 1000) {
+        static int warned = 0;
+        if (!warned) {
+            _objc_inform("ALT_HANDLERS: *** over 1000 alt handlers installed; "
+                         "this is probably a bug");
+            warned = 1;
+        }
+    }
+
+    return i+1;
+}
+
+
+void objc_removeExceptionHandler(uintptr_t token)
+{
+    if (!token) {
+        // objc_addExceptionHandler failed
+        return;
+    }
+    unsigned int i = (unsigned int)(token - 1);
+    
+    struct alt_handler_list *list = fetch_handler_list(NO);
+    if (!list  ||  list->used == 0) {
+        // no handlers present
+        if (PrintAltHandlers) {
+            _objc_inform("ALT HANDLERS: *** can't remove alt handler %lu "
+                         "(no alt handlers present)", token);
+        }
+        return;
+    }
+    if (i >= list->allocated) {
+        // bogus token
+        if (PrintAltHandlers) {
+            _objc_inform("ALT HANDLERS: *** can't remove alt handler %lu "
+                         "(current max is %u)", token, list->allocated);
+        }
+        return;
+    }
+
+    struct alt_handler_data *data = &list->handlers[i];
+    if (PrintAltHandlers) {
+        _objc_inform("ALT HANDLERS: removing   alt handler %d %p(%p) on "
+                     "frame [ip=%p..%p sp=%p]", i+1, data->fn, data->context, 
+                     (void *)data->ip_start, (void *)data->ip_end, 
+                     (void *)data->cfa);
+    }
+    bzero(data, sizeof(*data));
+    list->used--;
+}
+
+
+// called in order registered, to match 32-bit _NSAddAltHandler2
+// fixme reverse registration order matches c++ destructors better
+static void call_alt_handlers(struct _Unwind_Context *ctx)
+{
+    uintptr_t ip = _Unwind_GetIP(ctx) - 1;
+    uintptr_t cfa = _Unwind_GetCFA(ctx);
+    unsigned int i;
     
+    struct alt_handler_list *list = fetch_handler_list(NO);
+    if (!list  ||  list->used == 0) return;
+
+    for (i = 0; i < list->allocated; i++) {
+        struct alt_handler_data *data = &list->handlers[i];
+        if (ip >= data->ip_start  &&  ip < data->ip_end  &&  data->cfa == cfa) 
+        {
+            // Copy and clear before the callback, in case the 
+            // callback manipulates the alt handler list.
+            struct alt_handler_data copy = *data;
+            bzero(data, sizeof(*data));
+            list->used--;
+            if (PrintExceptions || PrintAltHandlers) {
+                _objc_inform("EXCEPTIONS: calling alt handler %p(%p) from "
+                             "frame [ip=%p..%p sp=%p]", copy.fn, copy.context, 
+                             (void *)copy.ip_start, (void *)copy.ip_end, 
+                             (void *)copy.cfa);
+            }
+            if (copy.fn) (*copy.fn)(nil, copy.context);
+        }
+    }
+}
+
+
+/***********************************************************************
+* exception_init
+* Initialize libobjc's exception handling system.
+* Called by map_images().
+**********************************************************************/
+__private_extern__ void exception_init(void)
+{
+    // call std::set_terminate
+    old_terminate = _ZSt13set_terminatePFvvE(&_objc_terminate);
+}
+
+
+// __LP64__
+#endif
index df0cde439ade0b230a589af5c9294fefc9b2c50b..370cdf108c94947194218319d2731d41cff3f7b8 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
+ * Copyright (c) 1999-2007 Apple Inc.  All Rights Reserved.
  * 
- * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
+ * @APPLE_LICENSE_HEADER_START@
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
  */
 // Copyright 1988-1996 NeXT Software, Inc.
 
-#import "objc-private.h"
-#import <mach-o/ldsyms.h>
-#import <mach-o/dyld.h>
-#import <mach-o/getsect.h>
+#include <mach-o/ldsyms.h>
+#include <mach-o/dyld.h>
+#include <mach-o/getsect.h>
 #include <string.h>
 #include <stdlib.h>
+#include <crt_externs.h>
 
-#import <crt_externs.h>
+#define OLD 1
+#import "objc-private.h"
 
+#ifndef __LP64__
+#define SEGMENT_CMD LC_SEGMENT
+#define GETSECTDATAFROMHEADER(mh, seg, sect, sizep) \
+    getsectdatafromheader(mh, seg, sect, (uint32_t *)sizep)
+#else
+#define SEGMENT_CMD LC_SEGMENT_64
+#define GETSECTDATAFROMHEADER(mh, seg, sect, sizep) \
+    getsectdatafromheader_64(mh, seg, sect, (uint64_t *)sizep)
+#endif
 
-/* Returns an array of all the objc headers in the executable
- * Caller is responsible for freeing.
- */    
-headerType **_getObjcHeaders()
+__private_extern__ objc_image_info *
+_getObjcImageInfo(const headerType *head, ptrdiff_t slide, size_t *sizep)
 {
-  const struct mach_header **headers;
-  headers = malloc(sizeof(struct mach_header *) * 2);
-  headers[0] = (const struct mach_header *)_NSGetMachExecuteHeader();
-  headers[1] = 0;
-  return (headerType**)headers;
+  objc_image_info *info = (objc_image_info *)
+#if __OBJC2__
+      GETSECTDATAFROMHEADER(head, SEG_DATA, "__objc_imageinfo", sizep);
+  if (!info) info = (objc_image_info *)
+#endif
+      GETSECTDATAFROMHEADER(head, SEG_OBJC, "__image_info", sizep);
+  // size is BYTES, not count!
+  if (info) info = (objc_image_info *)((uintptr_t)info + slide);
+  return info;
 }
 
-Module _getObjcModules(const headerType *head, int *nmodules)
+// fixme !objc2 only (used for new-abi paranoia)
+__private_extern__ Module 
+_getObjcModules(const headerType *head, ptrdiff_t slide, size_t *nmodules)
 {
-  uint32_t size;
-  void *mods = getsectdatafromheader((headerType *)head,
-                                     SEG_OBJC,
-                                    SECT_OBJC_MODULES,
-                                    &size);
+  size_t size;
+  void *mods = 
+      GETSECTDATAFROMHEADER(head, SEG_OBJC, SECT_OBJC_MODULES, &size);
+#if !__OBJC2__
   *nmodules = size / sizeof(struct objc_module);
+#endif
+  if (mods) mods = (void *)((uintptr_t)mods + slide);
   return (Module)mods;
 }
 
-SEL *_getObjcMessageRefs(headerType *head, int *nmess)
+// fixme !objc2 only (used for new-abi paranoia)
+__private_extern__ SEL *
+_getObjcSelectorRefs(const header_info *hi, size_t *nmess)
 {
-  uint32_t size;
-  void *refs = getsectdatafromheader ((headerType *)head,
-                                 SEG_OBJC, "__message_refs", &size);
+  size_t size;
+  void *refs = 
+      GETSECTDATAFROMHEADER (hi->mhdr, SEG_OBJC, "__message_refs", &size);
+  if (refs) refs = (void *)((uintptr_t)refs + hi->image_slide);
   *nmess = size / sizeof(SEL);
   return (SEL *)refs;
 }
 
-ProtocolTemplate *_getObjcProtocols(headerType *head, int *nprotos)
+#if !__OBJC2__
+
+__private_extern__ struct old_protocol *
+_getObjcProtocols(const header_info *hi, size_t *nprotos)
 {
-  uint32_t size;
-  void *protos = getsectdatafromheader ((headerType *)head,
-                                SEG_OBJC, "__protocol", &size);
-  *nprotos = size / sizeof(ProtocolTemplate);
-  return (ProtocolTemplate *)protos;
+  size_t size;
+  void *protos = 
+      GETSECTDATAFROMHEADER (hi->mhdr, SEG_OBJC, "__protocol", &size);
+  *nprotos = size / sizeof(struct old_protocol);
+  if (protos) protos = (struct old_protocol *)((uintptr_t)protos+hi->image_slide);
+  return (struct old_protocol *)protos;
 }
 
-NXConstantStringTemplate *_getObjcStringObjects(headerType *head, int *nstrs)
+__private_extern__ struct old_class **
+_getObjcClassRefs(const header_info *hi, size_t *nclasses)
 {
-  *nstrs = 0;
-  return NULL;
+  size_t size;
+  void *classes = 
+      GETSECTDATAFROMHEADER(hi->mhdr, SEG_OBJC, "__cls_refs", &size);
+  *nclasses = size / sizeof(struct old_class *);
+  if (classes) classes = (void *)((uintptr_t)classes + hi->image_slide);
+  return (struct old_class **)classes;
 }
 
-Class *_getObjcClassRefs(headerType *head, int *nclasses)
+// __OBJC,__class_names section only emitted by CodeWarrior  rdar://4951638
+__private_extern__ const char *
+_getObjcClassNames(const header_info *hi, size_t *size)
 {
-  uint32_t size;
-  void *classes = getsectdatafromheader ((headerType *)head,
-                                SEG_OBJC, "__cls_refs", &size);
-  *nclasses = size / sizeof(Class);
-  return (Class *)classes;
+  void *names = 
+      GETSECTDATAFROMHEADER(hi->mhdr, SEG_OBJC, "__class_names", size);
+  if (names) names = (void *)((uintptr_t)names + hi->image_slide);
+  return (const char *)names;
 }
 
-objc_image_info *_getObjcImageInfo(const headerType *head, uint32_t *sizep)
+#endif
+
+#if __OBJC2__
+
+__private_extern__ SEL *
+_getObjc2SelectorRefs(const header_info *hi, size_t *nmess)
 {
-  objc_image_info *info = (objc_image_info *)
-      getsectdatafromheader(head, SEG_OBJC, "__image_info", sizep);
-  return info;
+  size_t size;
+  void *refs = 
+      GETSECTDATAFROMHEADER (hi->mhdr, SEG_DATA, "__objc_selrefs", &size);
+  if (!refs) refs =
+      GETSECTDATAFROMHEADER (hi->mhdr, SEG_OBJC2, "__selector_refs", &size);
+  if (refs) refs = (void *)((uintptr_t)refs + hi->image_slide);
+  *nmess = size / sizeof(SEL);
+  return (SEL *)refs;
+}
+
+__private_extern__ message_ref *
+_getObjc2MessageRefs(const header_info *hi, size_t *nmess)
+{
+  size_t size;
+  void *refs = 
+      GETSECTDATAFROMHEADER (hi->mhdr, SEG_DATA, "__objc_msgrefs", &size);
+  if (!refs) refs =
+      GETSECTDATAFROMHEADER (hi->mhdr, SEG_OBJC2, "__message_refs", &size);
+  if (refs) refs = (void *)((uintptr_t)refs + hi->image_slide);
+  *nmess = size / sizeof(message_ref);
+  return (message_ref *)refs;
+}
+
+__private_extern__ struct class_t **
+_getObjc2ClassRefs(const header_info *hi, size_t *nclasses)
+{
+  size_t size;
+  void *classes = 
+      GETSECTDATAFROMHEADER(hi->mhdr, SEG_DATA, "__objc_classrefs", &size);
+  if (!classes) classes =
+      GETSECTDATAFROMHEADER(hi->mhdr, SEG_OBJC2, "__class_refs", &size);
+  *nclasses = size / sizeof(struct class_t *);
+  if (classes) classes = (void *)((uintptr_t)classes + hi->image_slide);
+  return (struct class_t **)classes;
+}
+
+__private_extern__ struct class_t **
+_getObjc2SuperRefs(const header_info *hi, size_t *nclasses)
+{
+  size_t size;
+  void *classes = 
+      GETSECTDATAFROMHEADER(hi->mhdr, SEG_DATA, "__objc_superrefs", &size);
+  if (!classes) classes =
+      GETSECTDATAFROMHEADER(hi->mhdr, SEG_OBJC2, "__super_refs", &size);
+  *nclasses = size / sizeof(struct class_t *);
+  if (classes) classes = (void *)((uintptr_t)classes + hi->image_slide);
+  return (struct class_t **)classes;
 }
 
-const struct segment_command *getsegbynamefromheader(const headerType *head, 
-                                                     const char *segname)
+__private_extern__ struct class_t **
+_getObjc2ClassList(const header_info *hi, size_t *nclasses)
 {
-    const struct segment_command *sgp;
+  size_t size;
+  void *classes = 
+      GETSECTDATAFROMHEADER(hi->mhdr, SEG_DATA, "__objc_classlist", &size);
+  if (!classes) classes =
+      GETSECTDATAFROMHEADER(hi->mhdr, SEG_OBJC2, "__class_list", &size);
+  *nclasses = size / sizeof(struct class_t *);
+  if (classes) classes = (void *)((uintptr_t)classes + hi->image_slide);
+  return (struct class_t **)classes;
+}
+
+__private_extern__ struct class_t **
+_getObjc2NonlazyClassList(const header_info *hi, size_t *nclasses)
+{
+  size_t size;
+  void *classes = 
+      GETSECTDATAFROMHEADER(hi->mhdr, SEG_DATA, "__objc_nlclslist", &size);
+  if (!classes) classes =
+      GETSECTDATAFROMHEADER(hi->mhdr, SEG_OBJC2, "__nonlazy_class", &size);
+  *nclasses = size / sizeof(struct class_t *);
+  if (classes) classes = (void *)((uintptr_t)classes + hi->image_slide);
+  return (struct class_t **)classes;
+}
+
+__private_extern__ struct category_t **
+_getObjc2CategoryList(const header_info *hi, size_t *ncats)
+{
+  size_t size;
+  void *cats = 
+      GETSECTDATAFROMHEADER(hi->mhdr, SEG_DATA, "__objc_catlist", &size);
+  if (!cats) cats = 
+      GETSECTDATAFROMHEADER(hi->mhdr, SEG_OBJC2, "__category_list", &size);
+  *ncats = size / sizeof(struct category_t *);
+  if (cats) cats = (void *)((uintptr_t)cats + hi->image_slide);
+  return (struct category_t **)cats;
+}
+
+__private_extern__ struct category_t **
+_getObjc2NonlazyCategoryList(const header_info *hi, size_t *ncats)
+{
+  size_t size;
+  void *cats = 
+      GETSECTDATAFROMHEADER(hi->mhdr, SEG_DATA, "__objc_nlcatlist", &size);
+  if (!cats) cats = 
+      GETSECTDATAFROMHEADER(hi->mhdr, SEG_OBJC2, "__nonlazy_catgry", &size);
+  *ncats = size / sizeof(struct category_t *);
+  if (cats) cats = (void *)((uintptr_t)cats + hi->image_slide);
+  return (struct category_t **)cats;
+}
+
+__private_extern__ struct protocol_t **
+_getObjc2ProtocolList(const header_info *hi, size_t *nprotos)
+{
+  size_t size;
+  void *protos = 
+      GETSECTDATAFROMHEADER (hi->mhdr, SEG_DATA, "__objc_protolist", &size);
+  if (!protos) protos =
+      GETSECTDATAFROMHEADER (hi->mhdr, SEG_OBJC2, "__protocol_list", &size);
+  *nprotos = size / sizeof(struct protocol_t *);
+  if (protos) protos = (struct protocol_t **)((uintptr_t)protos+hi->image_slide);
+  return (struct protocol_t **)protos;
+}
+
+__private_extern__ struct protocol_t **
+_getObjc2ProtocolRefs(const header_info *hi, size_t *nprotos)
+{
+  size_t size;
+  void *protos = 
+      GETSECTDATAFROMHEADER (hi->mhdr, SEG_DATA, "__objc_protorefs", &size);
+  if (!protos) protos =
+      GETSECTDATAFROMHEADER (hi->mhdr, SEG_OBJC2, "__protocol_refs", &size);
+  *nprotos = size / sizeof(struct protocol_t *);
+  if (protos) protos = (struct protocol_t **)((uintptr_t)protos+hi->image_slide);
+  return (struct protocol_t **)protos;
+}
+
+#endif
+
+__private_extern__ const segmentType *
+getsegbynamefromheader(const headerType *head, const char *segname)
+{
+    const segmentType *sgp;
     unsigned long i;
     
-    sgp = (const struct segment_command *) ((char *)head + sizeof(headerType));
+    sgp = (const segmentType *) (head + 1);
     for (i = 0; i < head->ncmds; i++){
-        if (sgp->cmd == LC_SEGMENT) {
+        if (sgp->cmd == SEGMENT_CMD) {
             if (strncmp(sgp->segname, segname, sizeof(sgp->segname)) == 0) {
                 return sgp;
             }
         }
-        sgp = (const struct segment_command *)((char *)sgp + sgp->cmdsize);
+        sgp = (const segmentType *)((char *)sgp + sgp->cmdsize);
     }
     return NULL;
 }
 
-static const headerType *_getExecHeader (void)
+__private_extern__ const char *
+_getObjcHeaderName(const headerType *header)
 {
-       return (const struct mach_header *)_NSGetMachExecuteHeader();
-}
+    Dl_info info;
 
-const char *_getObjcHeaderName(const headerType *header)
-{
-    const headerType *execHeader;
-    const struct fvmlib_command *libCmd, *endOfCmds;
-       
-    if (header && ((headerType *)header)->filetype == MH_FVMLIB) {
-           execHeader = _getExecHeader();
-           for (libCmd = (const struct fvmlib_command *)(execHeader + 1),
-                 endOfCmds = ((void *)libCmd) + execHeader->sizeofcmds;
-                 libCmd < endOfCmds; ((void *)libCmd) += libCmd->cmdsize) {
-                   if ((libCmd->cmd == LC_LOADFVMLIB) && (libCmd->fvmlib.header_addr
-                           == (unsigned long)header)) {
-                           return (char *)libCmd
-                                   + libCmd->fvmlib.name.offset;
-                   }
-           }
-           return NULL;
-   } else {
-      unsigned long i, n = _dyld_image_count();
-      for( i = 0; i < n ; i++ ) {
-         if ( _dyld_get_image_header(i) == header )
-            return _dyld_get_image_name(i);
-      }
-
-      return (*_NSGetArgv())[0];
-   }
+    if (dladdr(header, &info)) {
+        return info.dli_fname;
+    }
+    else {
+        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)
+__private_extern__ ptrdiff_t 
+_getImageSlide(const headerType *header)
 {
-    int i;
-    const struct segment_command *sgp = 
-        (const struct segment_command *)(header + 1);
+    unsigned long i;
+    const segmentType *sgp = (const segmentType *)(header + 1);
 
     for (i = 0; i < header->ncmds; i++){
-        if (sgp->cmd == LC_SEGMENT) {
+        if (sgp->cmd == SEGMENT_CMD) {
             if (sgp->fileoff == 0  &&  sgp->filesize != 0) {
                 return (uintptr_t)header - (uintptr_t)sgp->vmaddr;
             }
         }
-        sgp = (const struct segment_command *)((char *)sgp + sgp->cmdsize);
+        sgp = (const segmentType *)((char *)sgp + sgp->cmdsize);
     }
 
     // uh-oh
diff --git a/runtime/objc-initialize.h b/runtime/objc-initialize.h
new file mode 100644 (file)
index 0000000..78ab45f
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2005-2006 Apple Inc.  All Rights Reserved.
+ * 
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * 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@
+ */
+
+#include "objc.h"
+
+extern BOOL _class_isInitializing(Class cls);
+BOOL _class_isInitialized(Class cls);
+
+extern void _class_initialize(Class cls);
+
+extern void _destroyInitializingClassList(struct _objc_initializing_classes *list);
+
diff --git a/runtime/objc-initialize.m b/runtime/objc-initialize.m
new file mode 100644 (file)
index 0000000..aede2e0
--- /dev/null
@@ -0,0 +1,356 @@
+/*
+ * Copyright (c) 1999-2007 Apple Inc.  All Rights Reserved.
+ * 
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * 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-initialize.m
+* +initialize support
+**********************************************************************/
+
+/***********************************************************************
+ * Thread-safety during class initialization (GrP 2001-9-24)
+ *
+ * Initial state: CLS_INITIALIZING and CLS_INITIALIZED both clear. 
+ * During initialization: CLS_INITIALIZING is set
+ * After initialization: CLS_INITIALIZING clear and CLS_INITIALIZED set.
+ * CLS_INITIALIZING and CLS_INITIALIZED are never set at the same time.
+ * CLS_INITIALIZED is never cleared once set.
+ *
+ * Only one thread is allowed to actually initialize a class and send 
+ * +initialize. Enforced by allowing only one thread to set CLS_INITIALIZING.
+ *
+ * Additionally, threads trying to send messages to a class must wait for 
+ * +initialize to finish. During initialization of a class, that class's 
+ * method cache is kept empty. objc_msgSend will revert to 
+ * class_lookupMethodAndLoadCache, which checks CLS_INITIALIZED before 
+ * messaging. If CLS_INITIALIZED is clear but CLS_INITIALIZING is set, 
+ * the thread must block, unless it is the thread that started 
+ * initializing the class in the first place. 
+ *
+ * Each thread keeps a list of classes it's initializing. 
+ * The global classInitLock is used to synchronize changes to CLS_INITIALIZED 
+ * and CLS_INITIALIZING: the transition to CLS_INITIALIZING must be 
+ * an atomic test-and-set with respect to itself and the transition 
+ * to CLS_INITIALIZED.
+ * The global classInitWaitCond is used to block threads waiting for an 
+ * initialization to complete. The classInitLock synchronizes
+ * condition checking and the condition variable.
+ **********************************************************************/
+
+/***********************************************************************
+ *  +initialize deadlock case when a class is marked initializing while 
+ *  its superclass is initialized. Solved by completely initializing 
+ *  superclasses before beginning to initialize a class.
+ *
+ *  OmniWeb class hierarchy:
+ *                 OBObject 
+ *                     |    ` OBPostLoader
+ *                 OFObject
+ *                 /     \
+ *      OWAddressEntry  OWController
+ *                        | 
+ *                      OWConsoleController
+ *
+ *  Thread 1 (evil testing thread):
+ *    initialize OWAddressEntry
+ *    super init OFObject
+ *    super init OBObject                   
+ *    [OBObject initialize] runs OBPostLoader, which inits lots of classes...
+ *    initialize OWConsoleController
+ *    super init OWController - wait for Thread 2 to finish OWController init
+ *
+ *  Thread 2 (normal OmniWeb thread):
+ *    initialize OWController
+ *    super init OFObject - wait for Thread 1 to finish OFObject init
+ *
+ *  deadlock!
+ *
+ *  Solution: fully initialize super classes before beginning to initialize 
+ *  a subclass. Then the initializing+initialized part of the class hierarchy
+ *  will be a contiguous subtree starting at the root, so other threads 
+ *  can't jump into the middle between two initializing classes, and we won't 
+ *  get stuck while a superclass waits for its subclass which waits for the 
+ *  superclass.
+ **********************************************************************/
+
+#include <pthread.h>
+#include <assert.h>
+
+#import "objc-private.h"
+#import "objc-initialize.h"
+
+/* classInitLock protects classInitWaitCond and examination and modification 
+ * of CLS_INITIALIZED and CLS_INITIALIZING. */
+static OBJC_DECLARE_LOCK(classInitLock);
+
+/* classInitWaitCond is signalled when any class is done initializing. 
+ * Threads that are waiting for a class to finish initializing wait on this. */
+static pthread_cond_t classInitWaitCond = PTHREAD_COND_INITIALIZER;
+
+
+/***********************************************************************
+* struct _objc_initializing_classes
+* Per-thread list of classes currently being initialized by that thread. 
+* During initialization, that thread is allowed to send messages to that 
+* class, but other threads have to wait.
+* The list is a simple array of metaclasses (the metaclass stores 
+* the initialization state). 
+**********************************************************************/
+typedef struct _objc_initializing_classes {
+    int classesAllocated;
+    Class *metaclasses;
+} _objc_initializing_classes;
+
+
+/***********************************************************************
+* _fetchInitializingClassList
+* Return the list of classes being initialized by this thread.
+* If create == YES, create the list when no classes are being initialized by this thread.
+* If create == NO, return NULL when no classes are being initialized by this thread.
+**********************************************************************/
+static _objc_initializing_classes *_fetchInitializingClassList(BOOL create)
+{
+    _objc_pthread_data *data;
+    _objc_initializing_classes *list;
+    Class *classes;
+
+    data = _objc_fetch_pthread_data(create);
+    if (data == NULL  &&  !create) return NULL;
+
+    list = data->initializingClasses;
+    if (list == NULL) {
+        if (!create) {
+            return NULL;
+        } else {
+            list = _calloc_internal(1, sizeof(_objc_initializing_classes));
+            data->initializingClasses = list;
+        }
+    }
+
+    classes = list->metaclasses;
+    if (classes == NULL) {
+        // If _objc_initializing_classes exists, allocate metaclass array, 
+        // even if create == NO.
+        // Allow 4 simultaneous class inits on this thread before realloc.
+        list->classesAllocated = 4;
+        classes = _calloc_internal(list->classesAllocated, sizeof(Class));
+        list->metaclasses = classes;
+    }
+    return list;
+}
+
+
+/***********************************************************************
+* _destroyInitializingClassList
+* Deallocate memory used by the given initialization list. 
+* Any part of the list may be NULL.
+* Called from _objc_pthread_destroyspecific().
+**********************************************************************/
+__private_extern__ 
+void _destroyInitializingClassList(struct _objc_initializing_classes *list)
+{
+    if (list != NULL) {
+        if (list->metaclasses != NULL) {
+            _free_internal(list->metaclasses);
+        }
+        _free_internal(list);
+    }
+}
+
+
+/***********************************************************************
+* _thisThreadIsInitializingClass
+* Return TRUE if this thread is currently initializing the given class.
+**********************************************************************/
+static BOOL _thisThreadIsInitializingClass(Class cls)
+{
+    int i;
+
+    _objc_initializing_classes *list = _fetchInitializingClassList(NO);
+    if (list) {
+        cls = _class_getMeta(cls);
+        for (i = 0; i < list->classesAllocated; i++) {
+            if (cls == list->metaclasses[i]) return YES;
+        }
+    }
+
+    // no list or not found in list
+    return NO;
+}
+
+
+/***********************************************************************
+* _setThisThreadIsInitializingClass
+* Record that this thread is currently initializing the given class. 
+* This thread will be allowed to send messages to the class, but 
+*   other threads will have to wait.
+**********************************************************************/
+static void _setThisThreadIsInitializingClass(Class cls)
+{
+    int i;
+    _objc_initializing_classes *list = _fetchInitializingClassList(YES);
+    cls = _class_getMeta(cls);
+  
+    // paranoia: explicitly disallow duplicates
+    for (i = 0; i < list->classesAllocated; i++) {
+        if (cls == list->metaclasses[i]) {
+            _objc_fatal("thread is already initializing this class!");
+            return; // already the initializer
+        }
+    }
+  
+    for (i = 0; i < list->classesAllocated; i++) {
+        if (0   == list->metaclasses[i]) {
+            list->metaclasses[i] = cls;
+            return;
+        }
+    }
+
+    // class list is full - reallocate
+    list->classesAllocated = list->classesAllocated * 2 + 1;
+    list->metaclasses = _realloc_internal(list->metaclasses, list->classesAllocated * sizeof(Class));
+    // zero out the new entries
+    list->metaclasses[i++] = cls;
+    for ( ; i < list->classesAllocated; i++) {
+        list->metaclasses[i] = NULL;
+    }
+}
+
+
+/***********************************************************************
+* _setThisThreadIsNotInitializingClass
+* Record that this thread is no longer initializing the given class. 
+**********************************************************************/
+static void _setThisThreadIsNotInitializingClass(Class cls)
+{
+    int i;
+
+    _objc_initializing_classes *list = _fetchInitializingClassList(NO);
+    if (list) {
+        cls = _class_getMeta(cls);
+        for (i = 0; i < list->classesAllocated; i++) {
+            if (cls == list->metaclasses[i]) {
+                list->metaclasses[i] = NULL;
+                return;
+            }
+        }
+    }
+
+    // no list or not found in list
+    _objc_fatal("thread is not initializing this class!");  
+}
+
+
+/***********************************************************************
+* class_initialize.  Send the '+initialize' message on demand to any
+* uninitialized class. Force initialization of superclasses first.
+*
+* Called only from _class_lookupMethodAndLoadCache (or itself).
+**********************************************************************/
+__private_extern__ void _class_initialize(Class cls)
+{
+    Class supercls;
+    BOOL reallyInitialize = NO;
+
+    // Get the real class from the metaclass. The superclass chain 
+    // hangs off the real class only.
+    cls = _class_getNonMetaClass(cls);
+
+    // Make sure super is done initializing BEFORE beginning to initialize cls.
+    // See note about deadlock above.
+    supercls = _class_getSuperclass(cls);
+    if (supercls  &&  !_class_isInitialized(supercls)) {
+        _class_initialize(supercls);
+    }
+    
+    // Try to atomically set CLS_INITIALIZING.
+    OBJC_LOCK(&classInitLock);
+    if (!_class_isInitialized(cls) && !_class_isInitializing(cls)) {
+        _class_setInitializing(cls);
+        reallyInitialize = YES;
+    }
+    OBJC_UNLOCK(&classInitLock);
+    
+    if (reallyInitialize) {
+        // We successfully set the CLS_INITIALIZING bit. Initialize the class.
+        
+        // Record that we're initializing this class so we can message it.
+        _setThisThreadIsInitializingClass(cls);
+        
+        // Send the +initialize message.
+        // Note that +initialize is sent to the superclass (again) if 
+        // this class doesn't implement +initialize. 2157218
+        if (PrintInitializing) {
+            _objc_inform("INITIALIZE: calling +[%s initialize]",
+                         _class_getName(cls));
+        }
+        [(id)cls initialize];
+        
+        // propagate finalization affinity.
+        if (UseGC && supercls && _class_shouldFinalizeOnMainThread(supercls)) {
+            _class_setFinalizeOnMainThread(cls);
+        }
+        
+        // Done initializing. Update the info bits and notify waiting threads.
+        OBJC_LOCK(&classInitLock);
+        _class_setInitialized(cls);
+        pthread_cond_broadcast(&classInitWaitCond);
+        OBJC_UNLOCK(&classInitLock);
+        _setThisThreadIsNotInitializingClass(cls);
+        return;
+    }
+    
+    else if (_class_isInitializing(cls)) {
+        // We couldn't set INITIALIZING because INITIALIZING was already set.
+        // If this thread set it earlier, continue normally.
+        // If some other thread set it, block until initialize is done.
+        // It's ok if INITIALIZING changes to INITIALIZED while we're here, 
+        //   because we safely check for INITIALIZED inside the lock 
+        //   before blocking.
+        if (_thisThreadIsInitializingClass(cls)) {
+            return;
+        } else {
+            OBJC_LOCK(&classInitLock);
+            while (!_class_isInitialized(cls)) {
+                pthread_cond_wait(&classInitWaitCond, &classInitLock);
+            }
+            OBJC_UNLOCK(&classInitLock);
+            return;
+        }
+    }
+    
+    else if (_class_isInitialized(cls)) {
+        // Set CLS_INITIALIZING failed because someone else already 
+        //   initialized the class. Continue normally.
+        // NOTE this check must come AFTER the ISINITIALIZING case.
+        // Otherwise: Another thread is initializing this class. ISINITIALIZED 
+        //   is false. Skip this clause. Then the other thread finishes 
+        //   initialization and sets INITIALIZING=no and INITIALIZED=yes. 
+        //   Skip the ISINITIALIZING clause. Die horribly.
+        return;
+    }
+    
+    else {
+        // We shouldn't be here. 
+        _objc_fatal("thread-safe class init in objc runtime is buggy!");
+    }
+}
diff --git a/runtime/objc-layout.m b/runtime/objc-layout.m
new file mode 100644 (file)
index 0000000..ed7c03c
--- /dev/null
@@ -0,0 +1,797 @@
+/*
+ * Copyright (c) 2004-2007 Apple Inc. All rights reserved.
+ *
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * 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@
+ */
+
+#include <stdlib.h>
+#include <assert.h>
+
+#import "objc-private.h"
+
+/**********************************************************************
+* Object Layouts.
+*
+* Layouts are used by the garbage collector to identify references from
+* the object to other objects.
+* 
+* Layout information is in the form of a '\0' terminated byte string. 
+* Each byte contains a word skip count in the high nibble and a
+* consecutive references count in the low nibble. Counts that exceed 15 are
+* continued in the succeeding byte with a zero in the opposite nibble. 
+* Objects that should be scanned conservatively will have a NULL layout.
+* Objects that have no references have a empty byte string.
+*
+* Example;
+* 
+*   For a class with pointers at offsets 4,12, 16, 32-128
+*   the layout is { 0x11, 0x12, 0x3f, 0x0a, 0x00 } or
+*       skip 1 - 1 reference (4)
+*       skip 1 - 2 references (12, 16)
+*       skip 3 - 15 references (32-88)
+*       no skip - 10 references (92-128)
+*       end
+* 
+**********************************************************************/
+
+
+/**********************************************************************
+* generate_layout_bytes
+*
+* Generates the layout bytes representing the specified skip and run.
+* If layout is NULL the can be used to determine the number of bytes added
+* to the layout.  Returns number of bytes added.
+*
+**********************************************************************/
+#define NIBBLE_MAX 0xf
+static long generate_layout_bytes(long skip, long run, unsigned char *layout) {
+    // number of bytes added
+    long count = 0;
+    
+    // if the skip is greater what can be put in a nibble
+    while (skip > NIBBLE_MAX) {
+        // add a skip with no run if layout is not NULL
+        if (layout) *layout++ = NIBBLE_MAX << 4;
+        
+        // another byte added
+        count++;
+        
+        // decrement skip by nibble maximum
+        skip -= NIBBLE_MAX;
+    }
+    
+    // add remaining skip and run (modulo nibble size) if layout is not NULL
+    if (layout) *layout++ = (skip << 4) | (run % NIBBLE_MAX);
+    
+    // another byte added
+    count++;
+    
+    
+    // if the run is greater what can be put in a nibble
+    while (run > NIBBLE_MAX) {
+        // add a run with no skip if layout is not NULL
+        if (layout) *layout++ = NIBBLE_MAX;
+        
+        // another byte added
+        count++;
+        
+        // decrement run by nibble maximum
+        run -= NIBBLE_MAX;
+    }
+    
+    // return number of bytes added
+    return count;
+}
+
+
+/**********************************************************************
+* scan_bits_for_layout
+*
+* Generate the layout from the bit map.  If layout is NULL then can be used to
+* determine the size of the layout.  Returns size of layout array in bytes
+* including the '\0' terminator.
+*
+**********************************************************************/
+static unsigned char *compress_layout(const uint8_t *bits, size_t bitmap_bits, BOOL weak)
+{
+    long count = 0;                     // number of bytes generated     
+    long skip = 0;                      // number of slots to skip to get to next references
+    long run = 0;                       // number of consecutive references
+    long last_bit = 0;                  // state of last bit encountered
+    BOOL all_set = YES;
+    BOOL none_set = YES;
+
+    unsigned char *layout = _calloc_internal(bitmap_bits + 1, 1);
+    
+    // iterate through bits in bits array
+    long i;
+    for (i = 0; i < bitmap_bits; i++) {
+        // determine next bit, 0 = not a reference, 1 indicates a reference
+        long bit = (bits[i/8] >> (i % 8)) & 1;
+        
+        // if not a reference and last bit was a reference then record skip and run
+        if (!bit && last_bit) {
+            //  record skip and run
+            count += generate_layout_bytes(skip, run, layout + count);
+            
+            // reset counts
+            skip = 0; run = 0;
+        }
+
+        // record the skip or run
+        if (bit) run++, none_set = NO;
+        else skip++, all_set = NO;
+        
+        // track state of last bit
+        last_bit = bit;
+    }
+
+    // Record last skip and run, if any.
+    if (skip || run) count += generate_layout_bytes(skip, run, layout + count);
+    
+    // insert terminating byte
+    layout[count] = '\0';
+    count++;
+    
+    // return result
+    unsigned char *result;
+    if (none_set  &&  weak) {
+        result = NULL;  // NULL weak layout means none-weak
+    } else if (all_set  &&  !weak) {
+        result = NULL;  // NULL ivar layout means all-scanned
+    } else {
+        result = (unsigned char *)_strdup_internal((char *)layout); 
+    }
+    _free_internal(layout);
+    return result;
+}
+
+
+static void set_bits(layout_bitmap bits, size_t which, size_t count)
+{
+    // fixme optimize for byte/word at a time
+    size_t bit;
+    for (bit = which; bit < which + count  &&  bit < bits.bitCount; bit++) {
+        bits.bits[bit/8] |= 1 << (bit % 8);
+    }
+    if (bit == bits.bitCount  &&  bit < which + count) {
+        // couldn't fit full type in bitmap
+        _objc_fatal("layout bitmap too short");
+    }
+}
+
+static void clear_bits(layout_bitmap bits, size_t which, size_t count)
+{
+    // fixme optimize for byte/word at a time
+    size_t bit;
+    for (bit = which; bit < which + count  &&  bit < bits.bitCount; bit++) {
+        bits.bits[bit/8] &= ~(1 << (bit % 8));
+    }
+    if (bit == bits.bitCount  &&  bit < which + count) {
+        // couldn't fit full type in bitmap
+        _objc_fatal("layout bitmap too short");
+    }
+}
+
+static void move_bits(layout_bitmap bits, size_t src, size_t dst, 
+                      size_t count)
+{
+    // fixme optimize for byte/word at a time
+    // Copy backwards in case of overlap
+    assert(dst >= src);
+    while (count--) {
+        size_t srcbit = src + count;
+        size_t dstbit = dst + count;
+        if (bits.bits[srcbit/8] & (1 << (srcbit % 8))) {
+            bits.bits[dstbit/8] |= 1 << (dstbit % 8);
+        } else {
+            bits.bits[dstbit/8] &= ~(1 << (dstbit % 8));
+        }
+    }
+}
+
+// emacs autoindent hack - it doesn't like the loop in set_bits/clear_bits
+#if 0
+} }
+#endif
+
+
+static void decompress_layout(const unsigned char *layout_string, layout_bitmap bits)
+{
+    unsigned char c;
+    size_t bit = 0;
+    while ((c = *layout_string++)) {
+        unsigned char skip = (c & 0xf0) >> 4;
+        unsigned char scan = (c & 0x0f);
+        bit += skip;
+        set_bits(bits, bit, scan);
+        bit += scan;
+    }
+}
+
+
+/***********************************************************************
+* layout_bitmap_create
+* Allocate a layout bitmap.
+* The new bitmap spans the given instance size bytes.
+* The start of the bitmap is filled from the given layout string (which 
+*   spans an instance size of layoutStringSize); the rest is zero-filled.
+* The returned bitmap must be freed with layout_bitmap_free().
+**********************************************************************/
+__private_extern__ layout_bitmap 
+layout_bitmap_create(const unsigned char *layout_string,
+                     size_t layoutStringInstanceSize, 
+                     size_t instanceSize, BOOL weak)
+{
+    layout_bitmap result;
+    size_t words = instanceSize / sizeof(id);
+    size_t bitmap_bytes = (words+7)/8;
+    
+    result.bits = _calloc_internal(bitmap_bytes, 1);
+    result.weak = weak;
+    result.bitCount = words;
+    result.bitsAllocated = bitmap_bytes * 8;
+    assert(bits->bitsAllocated % 8 == 0);
+
+    if (!layout_string) {
+        if (!weak) {
+            // NULL ivar layout means all-scanned
+            // (but only up to layoutStringSize instance size)
+            set_bits(result, 0, layoutStringInstanceSize/sizeof(id));
+        } else {
+            // NULL weak layout means none-weak.
+        }
+    } else {
+        decompress_layout(layout_string, result);
+    }
+
+    return result;
+}
+
+__private_extern__ void 
+layout_bitmap_free(layout_bitmap bits)
+{
+    if (bits.bits) _free_internal(bits.bits);
+}
+
+__private_extern__ const unsigned char * 
+layout_string_create(layout_bitmap bits)
+{
+    return compress_layout(bits.bits, bits.bitCount, bits.weak);
+}
+
+
+__private_extern__ void
+layout_bitmap_set_ivar(layout_bitmap bits, const char *type, size_t offset)
+{
+    // fixme only handles id and array of id
+    size_t bit = offset / sizeof(id);
+
+    if (!type) return;
+    if (type[0] == '@') {
+        set_bits(bits, bit, 1);
+    } else if (type[0] == '[') {
+        char *t;
+        unsigned long count = strtoul(type+1, &t, 10);
+        if (t  &&  t[0] == '@') {
+            set_bits(bits, bit, count);
+        }
+    } else if (strchr(type, '@')) {
+        _objc_inform("warning: failing to set GC layout for '%s'\n", type);
+    }
+}
+
+
+
+/***********************************************************************
+* layout_bitmap_grow
+* Expand a layout bitmap to span newCount bits. 
+* The new bits are undefined.
+**********************************************************************/
+__private_extern__ void 
+layout_bitmap_grow(layout_bitmap *bits, size_t newCount)
+{
+    if (bits->bitCount >= newCount) return;
+    size_t addition = newCount - bits->bitCount;
+    bits->bitCount = newCount;
+    if (bits->bitCount > bits->bitsAllocated) {
+        bits->bitsAllocated += bits->bitsAllocated + (addition+7)/8;
+        bits->bits = _realloc_internal(bits->bits, bits->bitsAllocated);
+    }
+    assert(bits->bitsAllocated % 8 == 0);
+}
+
+
+/***********************************************************************
+* layout_bitmap_slide
+* Slide the end of a layout bitmap farther from the start.
+* Slides bits [oldPos, bits.bitCount) to [newPos, bits.bitCount+newPos-oldPos)
+* Bits [oldPos, newPos) are zero-filled.
+* The bitmap is expanded and bitCount updated if necessary.
+* newPos >= oldPos.
+**********************************************************************/
+__private_extern__ void
+layout_bitmap_slide(layout_bitmap *bits, size_t oldPos, size_t newPos)
+{
+    if (oldPos >= newPos) _objc_fatal("layout bitmap sliding backwards");
+
+    size_t shift = newPos - oldPos;
+    size_t count = bits->bitCount - oldPos;
+    layout_bitmap_grow(bits, bits->bitCount + shift);
+    move_bits(*bits, oldPos, newPos, count);  // slide
+    clear_bits(*bits, oldPos, shift);         // zero-fill
+}
+
+
+/***********************************************************************
+* layout_bitmap_splat
+* Pastes the contents of bitmap src to the start of bitmap dst.
+* dst bits between the end of src and oldSrcInstanceSize are zeroed.
+* dst must be at least as long as src.
+* Returns YES if any of dst's bits were changed.
+**********************************************************************/
+__private_extern__ BOOL
+layout_bitmap_splat(layout_bitmap dst, layout_bitmap src, 
+                    size_t oldSrcInstanceSize)
+{
+    if (dst.bitCount < src.bitCount) _objc_fatal("layout bitmap too short");
+
+    BOOL changed = NO;
+    size_t oldSrcBitCount = oldSrcInstanceSize / sizeof(id);
+    
+    // fixme optimize for byte/word at a time
+    size_t bit;
+    for (bit = 0; bit < oldSrcBitCount; bit++) {
+        int dstset = dst.bits[bit/8] & (1 << (bit % 8));
+        int srcset = (bit < src.bitCount) 
+            ? src.bits[bit/8] & (1 << (bit % 8))
+            : 0;
+        if (dstset != srcset) {
+            changed = YES;
+            if (srcset) {
+                dst.bits[bit/8] |= 1 << (bit % 8);
+            } else {
+                dst.bits[bit/8] &= ~(1 << (bit % 8));
+            }
+        }
+    }
+
+    return changed;
+}
+
+
+#if 0
+// The code below may be useful when interpreting ivar types more precisely.
+
+/**********************************************************************
+* mark_offset_for_layout
+*
+* Marks the appropriate bit in the bits array cooresponding to a the
+* offset of a reference.  If we are scanning a nested pointer structure
+* then the bits array will be NULL then this function does nothing.  
+* 
+**********************************************************************/
+static void mark_offset_for_layout(long offset, long bits_size, unsigned char *bits) {
+    // references are ignored if bits is NULL
+    if (bits) {
+        long slot = offset / sizeof(long);
+        
+        // determine byte index using (offset / 8 bits per byte)
+        long i_byte = slot >> 3;
+        
+        // if the byte index is valid 
+        if (i_byte < bits_size) {
+            // set the (offset / 8 bits per byte)th bit
+            bits[i_byte] |= 1 << (slot & 7);
+        } else {
+            // offset not within instance size
+            _objc_inform ("layout - offset exceeds instance size");
+        }
+    }
+}
+
+/**********************************************************************
+* skip_ivar_type_name
+*
+* Skip over the name of a field/class in an ivar type string.  Names
+* are in the form of a double-quoted string.  Returns the remaining
+* string.
+*
+**********************************************************************/
+static char *skip_ivar_type_name(char *type) {
+    // current character
+    char ch;
+    
+    // if there is an open quote
+    if (*type == '\"') {
+        // skip quote
+        type++;
+        
+        // while no closing quote
+        while ((ch = *type) != '\"') {
+            // if end of string return end of string
+            if (!ch) return type;
+            
+            // skip character
+            type++;
+        }
+        
+        // skip closing quote
+        type++;
+    }
+    
+    // return remaining string
+    return type;
+}
+
+
+/**********************************************************************
+* skip_ivar_struct_name
+*
+* Skip over the name of a struct in an ivar type string.  Names
+* may be followed by an equals sign.  Returns the remaining string.
+*
+**********************************************************************/
+static char *skip_ivar_struct_name(char *type) {
+    // get first character
+    char ch = *type;
+    
+    if (ch == _C_UNDEF) {
+        // skip undefined name 
+        type++;
+    } else if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || ch == '_') {
+        // if alphabetic
+        
+        // scan alphanumerics
+        do {
+            // next character
+            ch = *++type;
+        } while ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || ch == '_' || (ch >= '0' && ch <= '9'));
+    } else {
+        // no struct name present
+        return type;
+    }
+    
+    // skip equals sign
+    if (*type == '=') type++;
+    
+    return type;
+}
+
+
+/**********************************************************************
+* scan_basic_ivar_type
+* 
+* Determines the size and alignment of a basic ivar type.  If the basic
+* type is a possible reference to another garbage collected type the 
+* is_reference is set to true (false otherwise.)  Returns the remaining
+* string.
+* 
+**********************************************************************/
+static char *scan_ivar_type_for_layout(char *type, long offset, long bits_size, unsigned char *bits, long *next_offset);
+static char *scan_basic_ivar_type(char *type, long *size, long *alignment, BOOL *is_reference) {
+    // assume it is a non-reference type
+    *is_reference = NO;
+    
+    // get the first character (advancing string)
+    const char *full_type = type;
+    char ch = *type++;
+    
+    // GCC 4 uses for const type*.
+    if (ch == _C_CONST) ch = *type++;
+    
+    // act on first character
+    switch (ch) {
+        case _C_ID: {
+            // ID type
+            
+            // skip over optional class name
+            type = skip_ivar_type_name(type);
+            
+            // size and alignment of an id type
+            *size = sizeof(id);
+            *alignment = __alignof(id);
+            
+            // is a reference type
+            *is_reference = YES;
+            break;
+        }        
+        case _C_PTR: {
+            // C pointer type
+            
+            // skip underlying type
+            long ignored_offset;
+            type = scan_ivar_type_for_layout(type, 0, 0, NULL, &ignored_offset);
+            
+            // size and alignment of a generic pointer type
+            *size = sizeof(void *);
+            *alignment = __alignof(void *);
+            
+            // is a reference type
+            *is_reference = YES;
+            break;
+        }
+        case _C_CHARPTR: {
+            // C string 
+            
+           // size and alignment of a char pointer type
+            *size = sizeof(char *);
+            *alignment = __alignof(char *);
+            
+            // is a reference type
+            *is_reference = YES;
+            break;
+        }
+        case _C_CLASS:
+        case _C_SEL: {
+            // classes and selectors are ignored for now
+            *size = sizeof(void *);
+            *alignment = __alignof(void *);
+            break;
+        }
+        case _C_CHR:
+        case _C_UCHR: {
+            // char and unsigned char
+            *size = sizeof(char);
+            *alignment = __alignof(char);
+            break;
+        }
+        case _C_SHT:
+        case _C_USHT: {
+            // short and unsigned short
+            *size = sizeof(short);
+            *alignment = __alignof(short);
+            break;
+        }
+        case _C_ATOM:
+        case _C_INT:
+        case _C_UINT: {
+            // int and unsigned int
+            *size = sizeof(int);
+            *alignment = __alignof(int);
+            break;
+        }
+        case _C_LNG:
+        case _C_ULNG: {
+            // long and unsigned long
+            *size = sizeof(long);
+            *alignment = __alignof(long);
+            break;
+        }
+        case _C_LNG_LNG:
+        case _C_ULNG_LNG: {
+            // long long and unsigned long long
+            *size = sizeof(long long);
+            *alignment = __alignof(long long);
+            break;
+        }
+        case _C_VECTOR: {
+            // vector
+            *size = 16;
+            *alignment = 16;
+            break;
+        }
+        case _C_FLT: {
+            // float
+            *size = sizeof(float);
+            *alignment = __alignof(float);
+            break;
+        }
+        case _C_DBL: {
+            // double
+            *size = sizeof(double);
+            *alignment = __alignof(double);
+            break;
+        }
+        case _C_BFLD: {
+            // bit field
+            
+            // get number of bits in bit field (advance type string)
+            long lng = strtol(type, &type, 10);
+            
+            // while next type is a bit field
+            while (*type == _C_BFLD) {
+                // skip over _C_BFLD
+                type++;
+                
+                // get next bit field length
+                long next_lng = strtol(type, &type, 10);
+                
+                // if spans next word then align to next word
+                if ((lng & ~31) != ((lng + next_lng) & ~31)) lng = (lng + 31) & ~31;
+                
+                // increment running length
+                lng += next_lng;
+                
+                // skip over potential field name
+                type = skip_ivar_type_name(type);
+            }
+            
+            // determine number of bytes bits represent
+            *size = (lng + 7) / 8;
+            
+            // byte alignment
+            *alignment = __alignof(char);
+            break;
+        }
+        case _C_BOOL: {
+            // double
+            *size = sizeof(BOOL);
+            *alignment = __alignof(BOOL);
+            break;
+        }
+        case _C_VOID: {
+            // skip void types
+            *size = 0;
+            *alignment = __alignof(char);
+            break;
+        }
+        case _C_UNDEF: {
+            *size = 0;
+            *alignment = __alignof(char);
+            break;
+        }
+        default: {
+            // unhandled type
+            _objc_fatal("unrecognized character \'%c\' in ivar type: \"%s\"", ch, full_type);
+        }
+    }
+    
+    return type;
+}
+
+
+/**********************************************************************
+* scan_ivar_type_for_layout
+*
+* Scan an ivar type string looking for references.  The offset indicates
+* where the ivar begins.  bits is a byte array of size bits_size used to
+* contain the references bit map.  next_offset is the offset beyond the
+* ivar.  Returns the remaining string.
+*
+**********************************************************************/
+static char *scan_ivar_type_for_layout(char *type, long offset, long bits_size, unsigned char *bits, long *next_offset) {
+    long size;                                   // size of a basic type
+    long alignment;                              // alignment of the basic type
+    BOOL is_reference;                      // true if the type indicates a reference to a garbage collected object
+    
+    // get the first character
+    char ch = *type;
+
+    // GCC 4 uses for const type*.
+    if (ch == _C_CONST) ch = *++type;
+    
+    // act on first character
+    switch (ch) {
+        case _C_ARY_B: {
+            // array type
+            
+            // get the array length
+            long lng = strtol(type + 1, &type, 10);
+            
+            // next type will be where to advance the type string once the array is processed
+            char *next_type = type;
+           
+            // repeat the next type x lng
+            if (!lng) {
+                next_type = scan_ivar_type_for_layout(type, 0, 0, NULL, &offset);
+            } else {
+                while (lng--) {
+                    // repeatedly scan the same type
+                    next_type = scan_ivar_type_for_layout(type, offset, bits_size, bits, &offset);
+                }
+            }
+            
+            // advance the type now
+            type = next_type;
+            
+            // after the end of the array
+            *next_offset = offset;
+            
+            // advance over closing bracket
+            if (*type == _C_ARY_E) type++;
+            else                   _objc_inform("missing \'%c\' in ivar type.", _C_ARY_E);
+            
+            break;
+        }
+        case _C_UNION_B: {
+            // union type
+            
+            // skip over possible union name
+            type = skip_ivar_struct_name(type + 1); 
+            
+            // need to accumulate the maximum element offset
+            long max_offset = 0;
+        
+            // while not closing paren
+            while ((ch = *type) && ch != _C_UNION_E) {
+                // skip over potential field name
+                type = skip_ivar_type_name(type);
+                
+                // scan type
+                long union_offset;
+                type = scan_ivar_type_for_layout(type, offset, bits_size, bits, &union_offset);
+                
+                // adjust the maximum element offset
+                if (max_offset < union_offset) max_offset = union_offset;
+            }
+        
+            // after the largest element 
+            *next_offset = max_offset;
+            
+            // advance over closing paren
+            if (ch == _C_UNION_E) {
+              type++;
+            } else {
+              _objc_inform("missing \'%c\' in ivar type", _C_UNION_E);
+            }
+            
+            break;
+        }
+        case _C_STRUCT_B: {
+            // struct type
+            
+            // skip over possible struct name
+            type = skip_ivar_struct_name(type + 1); 
+            
+            // while not closing brace
+            while ((ch = *type) && ch != _C_STRUCT_E) {
+                // skip over potential field name
+                type = skip_ivar_type_name(type);
+                
+                // scan type
+                type = scan_ivar_type_for_layout(type, offset, bits_size, bits, &offset);
+            }
+            
+            // after the end of the struct
+            *next_offset = offset;
+            
+            // advance over closing brace
+            if (ch == _C_STRUCT_E) type++;
+            else                   _objc_inform("missing \'%c\' in ivar type", _C_STRUCT_E);
+            
+            break;
+        }
+        default: {
+            // basic type
+            
+            // scan type
+            type = scan_basic_ivar_type(type, &size, &alignment, &is_reference);
+            
+            // create alignment mask
+            alignment--; 
+            
+            // align offset
+            offset = (offset + alignment) & ~alignment;
+            
+            // if is a reference then mark in the bit map
+            if (is_reference) mark_offset_for_layout(offset, bits_size, bits);
+            
+            // after the basic type
+            *next_offset = offset + size;
+            break;
+        }
+    }
+    
+    // return remainder of type string
+    return type;
+}
+
+#endif
index c385979f94a7cf3535498b302e4d17df6cd4a4b9..ee6155a4f74677ee80f6fb88ce24859ed47d2511 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
+ * Copyright (c) 1999-2001, 2005-2006 Apple Inc.  All Rights Reserved.
  * 
- * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
+ * @APPLE_LICENSE_HEADER_START@
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
@@ -33,6 +31,7 @@
 #import <objc/objc-class.h>
 
 #import <mach-o/loader.h>
+#import <AvailabilityMacros.h>
 
 /* dynamically loading Mach-O object files that contain Objective-C code */
 
@@ -42,23 +41,15 @@ OBJC_EXPORT long objc_loadModules (
        void (*class_callback) (Class, Category),
        /*headerType*/ struct mach_header **hdr_addr,
        char *debug_file
-);
+) OBJC2_UNAVAILABLE;
 OBJC_EXPORT int objc_loadModule (
        char *  moduleName, 
        void    (*class_callback) (Class, Category),
-       int *   errorCode);
+       int *   errorCode
+) OBJC2_UNAVAILABLE;
 OBJC_EXPORT long objc_unloadModules(
        void *errorStream,                              /* input (optional) */
        void (*unloadCallback)(Class, Category)         /* input (optional) */
-);
-
-OBJC_EXPORT void objc_register_header_name(
-       char *name                                      /* input */
-);
-
-OBJC_EXPORT void objc_register_header(
-       char *name                                      /* input */
-);
-
+) OBJC2_UNAVAILABLE;
 
 #endif /* _OBJC_LOAD_H_ */
index 28de95802bc3753694d0910acf69ba6aa7ba0aa2..c1b080d028e98a8fbb4783e68d6a296fc9bd75c2 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
+ * Copyright (c) 1999-2001, 2004-2007 Apple Inc.  All Rights Reserved.
  * 
- * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
+ * @APPLE_LICENSE_HEADER_START@
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
  *
  */
 
+#if !__OBJC2__
+
 #import "objc-private.h"
 #import <objc/objc-runtime.h>
 #import <objc/hashtable2.h>
 #import <objc/Object.h>
-#import <objc/Protocol.h>
-
-//#import <streams/streams.h>
-
 #include <mach-o/dyld.h>
 
 
-
-
-extern char *  getsectdatafromheader   (const headerType * mhp, const char * segname, const char * sectname,  int * size);
-
-/* Private extern */
-OBJC_EXPORT void (*callbackFunction)( Class, const char * );
+extern void (*callbackFunction)( Class, const char * );
 
 
 /**********************************************************************************
@@ -100,7 +91,7 @@ int objc_loadModule(const char *moduleName, void (*class_callback) (Class, const
     if (NSLinkModule(objectFileImage, moduleName, NSLINKMODULE_OPTION_RETURN_ON_ERROR) == NULL) {
         NSLinkEditErrors error;
         int errorNum;
-        char *fileName, *errorString;
+        const char *fileName, *errorString;
         NSLinkEditError(&error, &errorNum, &fileName, &errorString);
         // These errors may overlap with other errors that objc_loadModule returns in other failure cases.
         *errorCode = error;
@@ -177,3 +168,4 @@ long        objc_unloadModules (void *                      errStream,
     return errflag;
 }
 
+#endif
diff --git a/runtime/objc-loadmethod.h b/runtime/objc-loadmethod.h
new file mode 100644 (file)
index 0000000..e76787f
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2004-2006 Apple Inc.  All Rights Reserved.
+ * 
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * 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-loadmethod.h
+* Support for +load methods.
+**********************************************************************/
+
+#import "objc-private.h"
+
+extern void add_class_to_loadable_list(Class cls);
+extern void add_category_to_loadable_list(Category cat);
+extern void remove_class_from_loadable_list(Class cls);
+extern void remove_category_from_loadable_list(Category cat);
+
+extern void call_load_methods(void);
+
diff --git a/runtime/objc-loadmethod.m b/runtime/objc-loadmethod.m
new file mode 100644 (file)
index 0000000..8231c14
--- /dev/null
@@ -0,0 +1,353 @@
+/*
+ * Copyright (c) 2004-2006 Apple Inc.  All Rights Reserved.
+ * 
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * 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-loadmethod.m
+* Support for +load methods.
+**********************************************************************/
+
+#import "objc-loadmethod.h"
+#import "objc-private.h"
+
+struct loadable_class {
+    Class cls;  // may be NULL
+    IMP method;
+};
+
+struct loadable_category {
+    Category cat;  // may be NULL
+    IMP method;
+};
+
+
+// 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;
+
+
+/***********************************************************************
+* add_class_to_loadable_list
+* Class cls has just become connected. Schedule it for +load if
+* it implements a +load method.
+**********************************************************************/
+__private_extern__ void add_class_to_loadable_list(Class cls)
+{
+    IMP method = _class_getLoadMethod(cls);
+    if (!method) return;  // Don't bother if cls has no +load method
+    
+    if (PrintLoading) {
+        _objc_inform("LOAD: class '%s' scheduled for +load", _class_getName(cls));
+    }
+    
+    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.
+**********************************************************************/
+__private_extern__ void add_category_to_loadable_list(Category cat)
+{
+    IMP method = _category_getLoadMethod(cat);
+
+    // Don't bother if cat has no +load method
+    if (!method) return;
+
+    if (PrintLoading) {
+        _objc_inform("LOAD: category '%s(%s)' scheduled for +load", 
+                     _category_getClassName(cat), _category_getName(cat));
+    }
+    
+    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). 
+**********************************************************************/
+__private_extern__ void remove_class_from_loadable_list(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", _class_getName(cls));
+                }
+                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). 
+**********************************************************************/
+__private_extern__ void remove_category_from_loadable_list(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",
+                                 _category_getClassName(cat), 
+                                 _category_getName(cat));
+                }
+                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++) {
+        Class cls = classes[i].cls;
+        IMP load_method = classes[i].method;
+        if (!cls) continue; 
+
+        if (PrintLoading) {
+            _objc_inform("LOAD: +[%s load]\n", _class_getName(cls));
+        }
+        (*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++) {
+        Category cat = cats[i].cat;
+        IMP load_method = cats[i].method;
+        Class cls;
+        if (!cat) continue;
+
+        cls = _category_getClass(cat);
+        if (cls  &&  _class_isLoadable(cls)) {
+            if (PrintLoading) {
+                _objc_inform("LOAD: +[%s(%s) load]\n", 
+                             _class_getName(cls), 
+                             _category_getName(cat));
+            }
+            (*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.
+**********************************************************************/
+__private_extern__ 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;
+}
+
+
diff --git a/runtime/objc-lockdebug.m b/runtime/objc-lockdebug.m
new file mode 100644 (file)
index 0000000..014518c
--- /dev/null
@@ -0,0 +1,148 @@
+/*
+ * Copyright (c) 2007 Apple Inc.  All Rights Reserved.
+ * 
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * 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-lock.m
+* Error-checking locks for debugging.
+**********************************************************************/
+
+#import "objc-private.h"
+
+typedef struct _objc_lock_list {
+    int allocated;
+    int used;
+    mutex_t list[0];  // variable-size
+} _objc_lock_list;
+
+static struct _objc_lock_list *
+getLocks(BOOL create)
+{
+    _objc_pthread_data *data;
+    _objc_lock_list *locks;
+
+    data = _objc_fetch_pthread_data(create);
+    if (!data  &&  !create) return NULL;
+
+    locks = data->lockList;
+    if (!locks) {
+        if (!create) {
+            return NULL;
+        } else {
+            locks = _calloc_internal(1, sizeof(_objc_lock_list) + sizeof(mutex_t) * 4);
+            locks->allocated = 4;
+            locks->used = 0;
+            data->lockList = locks;
+        }
+    }
+
+    if (locks->allocated == locks->used) {
+        if (!create) {
+            return locks;
+        } else {
+            data->lockList = _calloc_internal(1, sizeof(_objc_lock_list) + 2 * locks->used * sizeof(mutex_t));
+            data->lockList->used = locks->used;
+            data->lockList->allocated = locks->used * 2;
+            memcpy(data->lockList->list, locks->list, locks->used * sizeof(mutex_t));
+            _free_internal(locks);
+            locks = data->lockList;
+        }
+    }
+
+    return locks;
+}
+
+
+static BOOL 
+hasLock(_objc_lock_list *locks, mutex_t lock)
+{
+    int i;
+    if (!locks) return NO;
+    
+    for (i = 0; i < locks->used; i++) {
+        if (locks->list[i] == lock) return YES;
+    }
+    return NO;
+}
+
+
+static void 
+setLock(_objc_lock_list *locks, mutex_t lock)
+{
+    locks->list[locks->used++] = lock;
+}
+
+static void 
+clearLock(_objc_lock_list *locks, mutex_t lock)
+{
+    int i;
+    for (i = 0; i < locks->used; i++) {
+        if (locks->list[i] == lock) {
+            locks->list[i] = locks->list[--locks->used];
+            return;
+        }
+    }
+}
+
+
+__private_extern__ void 
+_lock_debug(mutex_t lock, const char *name)
+{
+    _objc_lock_list *locks = getLocks(YES);
+    if (hasLock(locks, lock)) _objc_fatal("deadlock: relocking %s\n", name+1);
+    setLock(locks, lock);
+    mutex_lock(lock);
+}
+
+
+__private_extern__ void 
+_checklock_debug(mutex_t lock, const char *name)
+{
+    _objc_lock_list *locks = getLocks(NO);
+    if (!hasLock(locks, lock)) _objc_fatal("%s incorrectly not held\n",name+1);
+}
+
+
+__private_extern__ void 
+_checkunlock_debug(mutex_t lock, const char *name)
+{
+    _objc_lock_list *locks = getLocks(NO);
+    if (hasLock(locks, lock)) _objc_fatal("%s incorrectly held\n", name+1);
+}
+
+
+__private_extern__ void 
+_unlock_debug(mutex_t lock, const char *name)
+{
+    _objc_lock_list *locks = getLocks(NO);
+    if (!hasLock(locks, lock)) _objc_fatal("unlocking unowned %s\n", name+1);
+    clearLock(locks, lock);
+    mutex_unlock(lock);
+}
+
+
+__private_extern__ void
+_destroyLockList(struct _objc_lock_list *locks)
+{
+    // fixme complain about any still-held locks?
+    if (locks) _free_internal(locks);
+}
diff --git a/runtime/objc-moninit.c b/runtime/objc-moninit.c
deleted file mode 100644 (file)
index f764048..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (c) 1999 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@
- */
-
-#ifdef moninitobjc
-#undef moninitobjc
-
-unsigned long *
-moninitobjc(unsigned long moncount_addr)
-{
-    extern void _objc_inform(const char *format, ...);
-    _objc_inform ("moninitobjc is obsoleted, refer to documentation for how to do profiling\n");
-    return (0);
-}
-
-#endif
index 90b80dc55a9567d433c2f0456a9f98a840675875..65a5559bbbc931b5cb30069cd9b73b2c83355501 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
+ * Copyright (c) 1999-2007 Apple Inc.  All Rights Reserved.
  * 
- * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
+ * @APPLE_LICENSE_HEADER_START@
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
  */
 
 #if !defined(_OBJC_PRIVATE_H_)
-    #define _OBJC_PRIVATE_H_
+#define _OBJC_PRIVATE_H_
+
+#import <pthread.h>
+#import <errno.h>
+#import <limits.h>
+#import <unistd.h>
+#import <sys/time.h>
+#import <stdlib.h>
+#import <stdarg.h>
+#import <stdio.h>
+#import <string.h>
+#import <ctype.h>
+#import <mach-o/loader.h>
+#import <malloc/malloc.h>
+#import <libkern/OSAtomic.h>
+#import <dlfcn.h>
+
+#import "objc.h"
+#import "runtime.h"
+#import "maptable.h"
+#import "auto_zone.h"
+
+struct old_category;
+struct old_method_list;
+typedef struct {
+    IMP imp;
+    SEL sel;
+} message_ref;
+
+#if __OBJC2__
+
+typedef struct objc_module *Module;
+typedef struct objc_cache *Cache;
 
-    #import <objc/objc-api.h>  // for OBJC_EXPORT
+#endif
 
-    OBJC_EXPORT void checkUniqueness();
 
-    #import "objc-config.h"
+#if OLD
+
+struct old_class {
+    struct old_class *isa;
+    struct old_class *super_class;
+    const char *name;
+    long version;
+    long info;
+    long instance_size;
+    struct old_ivar_list *ivars;
+    struct old_method_list **methodLists;
+    Cache cache;
+    struct old_protocol_list *protocols;
+    // CLS_EXT only
+    const char *ivar_layout;
+    struct old_class_ext *ext;
+};
+
+struct old_class_ext {
+    uint32_t size;
+    const char *weak_ivar_layout;
+    struct objc_property_list **propertyLists;
+};
+
+struct old_category {
+    char *category_name;
+    char *class_name;
+    struct old_method_list *instance_methods;
+    struct old_method_list *class_methods;
+    struct old_protocol_list *protocols;
+    uint32_t size;
+    struct objc_property_list *instance_properties;
+};
+
+struct old_ivar {
+    char *ivar_name;
+    char *ivar_type;
+    int ivar_offset;
+#ifdef __LP64__
+    int space;
+#endif
+};
 
-    #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)
-    #define    mutex_try_lock(m) (! pthread_mutex_trylock(m))
-    #define    mutex_unlock(m) pthread_mutex_unlock(m)
-    #define    mutex_clear(m)
-    #define    mutex_t         pthread_mutex_t*
-    #define mutex              MUTEX_DEFINE_ERROR
-    #import <sys/time.h>
+struct old_ivar_list {
+    int ivar_count;
+#ifdef __LP64__
+    int space;
+#endif
+    /* variable length structure */
+    struct old_ivar ivar_list[1];
+};
 
-    #import <stdlib.h>
-    #import <stdarg.h>
-    #import <stdio.h>
-    #import <string.h>
-    #import <ctype.h>
 
-    #import <objc/objc-runtime.h>
+struct old_method {
+    SEL method_name;
+    char *method_types;
+    IMP method_imp;
+};
 
-    #import <malloc/malloc.h>
+// Fixed-up method lists get mlist->obsolete = _OBJC_FIXED_UP.
+#define _OBJC_FIXED_UP ((void *)1771)
+
+struct old_method_list {
+    struct old_method_list *obsolete;
+
+    int method_count;
+#ifdef __LP64__
+    int space;
+#endif
+    /* variable length structure */
+    struct old_method method_list[1];
+};
+
+struct old_protocol {
+    Class isa;
+    const char *protocol_name;
+    struct old_protocol_list *protocol_list;
+    struct objc_method_description_list *instance_methods;
+    struct objc_method_description_list *class_methods;
+};
+
+struct old_protocol_list {
+    struct old_protocol_list *next;
+    long count;
+    struct old_protocol *list[1];
+};
+
+struct old_protocol_ext {
+    uint32_t size;
+    struct objc_method_description_list *optional_instance_methods;
+    struct objc_method_description_list *optional_class_methods;
+    struct objc_property_list *instance_properties;
+};
+
+#endif
+
+typedef objc_property_t Property;
+
+struct objc_property {
+    const char *name;
+    const char *attributes;
+};
+
+struct objc_property_list {
+    uint32_t entsize;
+    uint32_t count;
+    struct objc_property first;
+};
+
+
+#import "objc-api.h"
+#import "objc-config.h"
+#import "hashtable2.h"
+
+#import "Object.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)
+#define        mutex_try_lock(m) (! pthread_mutex_trylock(m))
+#define        mutex_unlock(m) pthread_mutex_unlock(m)
+#define        mutex_clear(m)
+#define        mutex_t         pthread_mutex_t*
+#define mutex          MUTEX_DEFINE_ERROR
 
 
 /* Opaque cookie used in _getObjc... routines.  File format independant.
  *
  * had been: typedef void *objc_header;
  */
-#import <mach-o/loader.h>
+#ifndef __LP64__
 typedef struct mach_header headerType;
-
-#import <objc/Protocol.h>
-
-typedef struct _ProtocolTemplate { @defs(Protocol) } ProtocolTemplate;
-typedef struct _NXConstantStringTemplate {
-    Class isa;
-    void *characters;
-    unsigned int _length;
-} NXConstantStringTemplate;
-   
-#define OBJC_CONSTANT_STRING_PTR NXConstantStringTemplate*
-#define OBJC_CONSTANT_STRING_DEREF &
-#define OBJC_PROTOCOL_PTR ProtocolTemplate*
-#define OBJC_PROTOCOL_DEREF .
+typedef struct segment_command segmentType;
+#else
+typedef struct mach_header_64 headerType;
+typedef struct segment_command_64 segmentType;
+#endif
 
 typedef struct {
     uint32_t version; // currently 0
@@ -92,6 +211,7 @@ typedef struct {
 // masks for objc_image_info.flags
 #define OBJC_IMAGE_IS_REPLACEMENT (1<<0)
 #define OBJC_IMAGE_SUPPORTS_GC (1<<1)
+#define OBJC_IMAGE_REQUIRES_GC (1<<2)
 
 
 #define _objcHeaderIsReplacement(h)  ((h)->info  &&  ((h)->info->flags & OBJC_IMAGE_IS_REPLACEMENT))
@@ -109,190 +229,257 @@ typedef struct {
    Future: do insert new methods on existing categories?
 */
 
-#define _objcHeaderSupportsGC(h) ((h)->info  &&  ((h)->info->flags & OBJC_IMAGE_SUPPORTS_GC))
+#define _objcInfoSupportsGC(info) (((info)->flags & OBJC_IMAGE_SUPPORTS_GC) ? 1 : 0)
+#define _objcInfoRequiresGC(info) (((info)->flags & OBJC_IMAGE_REQUIRES_GC) ? 1 : 0)
+#define _objcHeaderSupportsGC(h) ((h)->info && _objcInfoSupportsGC((h)->info))
+#define _objcHeaderRequiresGC(h) ((h)->info && _objcInfoRequiresGC((h)->info))
 
 /* 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(const headerType *head, int *nmodules);
-OBJC_EXPORT Class *            _getObjcClassRefs(headerType *head, int *nclasses);
-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);
-
-// someday a logging facility
-// ObjC is assigned the range 0xb000 - 0xbfff for first parameter
-#define trace(a, b, c, d) do {} while (0)
-
-
-
-OBJC_EXPORT ProtocolTemplate * _getObjcProtocols(headerType *head, int *nprotos);
-OBJC_EXPORT NXConstantStringTemplate *_getObjcStringObjects(headerType *head, int *nstrs);
-OBJC_EXPORT SEL *              _getObjcMessageRefs(headerType *head, int *nmess);
-
-#define END_OF_METHODS_LIST ((struct objc_method_list*)-1)
-
-    typedef struct _header_info
-    {
-      const headerType *       mhdr;
-      Module                   mod_ptr;                    // already slid
-      unsigned int             mod_count;
-      unsigned long            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 ();
-
-    OBJC_EXPORT int _objcModuleCount();
-    OBJC_EXPORT const char *_objcModuleNameAtIndex(int i);
-    OBJC_EXPORT Class objc_getOrigClass (const char *name);
-
-    OBJC_EXPORT const char *__S(_nameForHeader) (const headerType*);
-
-    OBJC_EXPORT SEL sel_registerNameNoLock(const char *str, BOOL copy);
-    OBJC_EXPORT void sel_lock(void);
-    OBJC_EXPORT void sel_unlock(void);
-
-    /* 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 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);
-
-    /* message dispatcher */
-    OBJC_EXPORT IMP _class_lookupMethodAndLoadCache(Class, SEL);
-    OBJC_EXPORT id _objc_msgForward (id self, SEL sel, ...);
-
-    /* errors */
-    OBJC_EXPORT volatile void _objc_fatal(const char *fmt, ...);
-    OBJC_EXPORT volatile void _objc_error(id, const char *, va_list);
-    OBJC_EXPORT volatile void __objc_error(id, const char *, ...);
-    OBJC_EXPORT void _objc_inform(const char *fmt, ...);
-    OBJC_EXPORT void _objc_syslog(const char *fmt, ...);
-
-    /* magic */
-    OBJC_EXPORT Class _objc_getFreedObjectClass (void);
+
+typedef struct _header_info
+{
+    struct _header_info *next;
+    const headerType *  mhdr;
+    ptrdiff_t           image_slide;
+    const segmentType * objcSegmentHeader;
+    const segmentType * dataSegmentHeader;
+    struct objc_module *mod_ptr;
+    size_t              mod_count;
+    const objc_image_info *info;
+    Dl_info             dl_info;
+    BOOL                allClassesRealized;
+} header_info;
+
+
+extern objc_image_info *_getObjcImageInfo(const headerType *head, ptrdiff_t slide, size_t *size);
+extern const segmentType *getsegbynamefromheader(const headerType *head, const char *segname);
+extern const char *_getObjcHeaderName(const headerType *head);
+extern ptrdiff_t _getImageSlide(const headerType *header);
+
+extern Module _getObjcModules(const headerType *head, ptrdiff_t slide, size_t *count);
+extern SEL *_getObjcSelectorRefs(const header_info *hi, size_t *count);
+#if !__OBJC2__
+extern struct old_protocol *_getObjcProtocols(const header_info *head, size_t *count);
+extern struct old_class **_getObjcClassRefs(const header_info *hi, size_t *count);
+extern const char *_getObjcClassNames(const header_info *hi, size_t *size);
+#endif
+
+#if __OBJC2__
+extern SEL *_getObjc2SelectorRefs(const header_info *hi, size_t *count);
+extern message_ref *_getObjc2MessageRefs(const header_info *hi, size_t *count);extern struct class_t **_getObjc2ClassRefs(const header_info *hi, size_t *count);
+extern struct class_t **_getObjc2SuperRefs(const header_info *hi, size_t *count);
+extern struct class_t **_getObjc2ClassList(const header_info *hi, size_t *count);
+extern struct class_t **_getObjc2NonlazyClassList(const header_info *hi, size_t *count);
+extern struct category_t **_getObjc2CategoryList(const header_info *hi, size_t *count);
+extern struct category_t **_getObjc2NonlazyCategoryList(const header_info *hi, size_t *count);
+extern struct protocol_t **_getObjc2ProtocolList(const header_info *head, size_t *count);
+extern struct protocol_t **_getObjc2ProtocolRefs(const header_info *head, size_t *count);
+#endif
+
+#define END_OF_METHODS_LIST ((struct old_method_list*)-1)
+
+OBJC_EXPORT header_info *_objc_headerStart ();
+
+OBJC_EXPORT const char *_nameForHeader(const headerType*);
+
+OBJC_EXPORT SEL sel_registerNameNoLock(const char *str, BOOL copy);
+OBJC_EXPORT void sel_lock(void);
+OBJC_EXPORT void sel_unlock(void);
+
+/* 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 char *_strdupcat_internal(const char *s1, const char *s2);
+OBJC_EXPORT void *_memdup_internal(const void *mem, size_t size);
+OBJC_EXPORT void _free_internal(void *ptr);
+
+#if !__OBJC2__
+OBJC_EXPORT Class objc_getOrigClass (const char *name);
+OBJC_EXPORT IMP lookupNamedMethodInMethodList(struct old_method_list *mlist, const char *meth_name);
+OBJC_EXPORT void _objc_insertMethods(struct old_class *cls, struct old_method_list *mlist, struct old_category *cat);
+OBJC_EXPORT void _objc_removeMethods(struct old_class *cls, struct old_method_list *mlist);
+OBJC_EXPORT void _objc_flush_caches (Class cls);
+extern void _class_addProperties(struct old_class *cls, struct objc_property_list *additions);
+extern void change_class_references(struct old_class *imposter, struct old_class *original, struct old_class *copy, BOOL changeSuperRefs);
+extern void flush_marked_caches(void);
+extern void set_superclass(struct old_class *cls, struct old_class *supercls);
+#endif
+
+OBJC_EXPORT IMP _cache_getImp(Class cls, SEL sel);
+OBJC_EXPORT Method _cache_getMethod(Class cls, SEL sel, IMP objc_msgForward_imp);
+
+/* message dispatcher */
+OBJC_EXPORT IMP _class_lookupMethodAndLoadCache(Class, SEL);
+OBJC_EXPORT id _objc_msgForward (id self, SEL sel, ...);
+extern id _objc_ignored_method(id self, SEL _cmd);
+
+/* errors */
+OBJC_EXPORT void _objc_fatal(const char *fmt, ...) __attribute__((noreturn, format (printf, 1, 2)));
+OBJC_EXPORT void __objc_error(id, const char *, ...) __attribute__((format (printf, 2, 3)));
+OBJC_EXPORT void _objc_inform(const char *fmt, ...) __attribute__((format (printf, 1, 2)));
+OBJC_EXPORT void _objc_inform_on_crash(const char *fmt, ...) __attribute__((format (printf, 1, 2)));
+OBJC_EXPORT void _objc_inform_now_and_on_crash(const char *fmt, ...) __attribute__((format (printf, 1, 2)));
+OBJC_EXPORT void _objc_warn_deprecated(const char *old, const char *new) __attribute__((noinline));
+OBJC_EXPORT void _objc_error(id, const char *, va_list);
+
+/* magic */
+OBJC_EXPORT Class _objc_getFreedObjectClass (void);
 #ifndef OBJC_INSTRUMENTED
-    OBJC_EXPORT const struct objc_cache emptyCache;
+OBJC_EXPORT const struct objc_cache _objc_empty_cache;
 #else
-    OBJC_EXPORT struct objc_cache emptyCache;
+OBJC_EXPORT struct objc_cache _objc_empty_cache;
 #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);
+#if __OBJC2__
+extern IMP _objc_empty_vtable[128];
 #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);
+/* map table additions */
+extern void *NXMapKeyCopyingInsert(NXMapTable *table, const void *key, const void *value);
+extern void *NXMapKeyFreeingRemove(NXMapTable *table, const void *key);
+
+/* locking */
+#define OBJC_DECLARE_LOCK(MTX) pthread_mutex_t MTX = PTHREAD_MUTEX_INITIALIZER
+#ifdef NDEBUG
+#define OBJC_LOCK(MUTEX)            mutex_lock (MUTEX)
+#define OBJC_UNLOCK(MUTEX)          mutex_unlock (MUTEX)
+#define OBJC_CHECK_LOCKED(MUTEX)    do { } while (0)
+#define OBJC_CHECK_UNLOCKED(MUTEX)  do { } while (0)
+#else
+#define OBJC_LOCK(MUTEX)            _lock_debug (MUTEX, #MUTEX)
+#define OBJC_UNLOCK(MUTEX)          _unlock_debug (MUTEX, #MUTEX)
+#define OBJC_CHECK_LOCKED(MUTEX)    _checklock_debug (MUTEX, #MUTEX)
+#define OBJC_CHECK_UNLOCKED(MUTEX)  _checkunlock_debug (MUTEX, #MUTEX)
+#endif
 
-    /* Secure /tmp usage */
-    OBJC_EXPORT int secure_open(const char *filename, int flags, uid_t euid);
+OBJC_EXPORT pthread_mutex_t classLock;
+OBJC_EXPORT pthread_mutex_t methodListLock;
 
-    typedef struct {
-       long addressOffset;
-       long selectorOffset;
-    } FixupEntry;
+OBJC_EXPORT NXHashTable *class_hash;
 
-    static inline int selEqual( SEL s1, SEL s2 ) {
-       return (s1 == s2);
-    }
+/* nil handler object */
+OBJC_EXPORT id _objc_nilReceiver;
+OBJC_EXPORT id _objc_setNilReceiver(id newNilReceiver);
+OBJC_EXPORT id _objc_getNilReceiver(void);
+
+/* forward handler functions */
+OBJC_EXPORT void *_objc_forward_handler;
+OBJC_EXPORT void *_objc_forward_stret_handler;
+
+/* 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;
+
+/* GC and RTP startup */
+OBJC_EXPORT void gc_init(BOOL on);
+OBJC_EXPORT void rtp_init(void);
+
+/* Exceptions */
+struct alt_handler_list;
+OBJC_EXPORT void exception_init(void);
+OBJC_EXPORT void _destroyAltHandlerList(struct alt_handler_list *list);
+
+/* 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, ptrdiff_t 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, ptrdiff_t offset);
+
+/*
+    objc_assign_ivar, objc_assign_global, and objc_assign_strongCast MUST NOT be called directly
+    from inside libobjc. They live in the data segment, and must be called through the
+    following pointer(s) for libobjc to exist in the shared cache.
+
+    Note: If we build with GC enabled, gcc will emit calls to the original functions, which will break this.
+*/
+
+extern id (*objc_assign_ivar_internal)(id, id, ptrdiff_t);
+
+/* Code modification */
+OBJC_EXPORT size_t objc_branch_size(void *entry, void *target);
+OBJC_EXPORT size_t objc_write_branch(void *entry, void *target);
+OBJC_EXPORT size_t objc_cond_branch_size(void *entry, void *target, unsigned cond);
+OBJC_EXPORT size_t objc_write_cond_branch(void *entry, void *target, unsigned cond);
+#if defined(__ppc__)  ||  defined(__ppc64__)
+#define COND_ALWAYS 0x02800000  /* BO=10100, BI=00000 */
+#define COND_NE     0x00820000  /* BO=00100, BI=00010 */
+#elif defined(__i386__) || defined(__x86_64__)
+#define COND_ALWAYS 0xE9  /* JMP rel32 */
+#define COND_NE     0x85  /* JNE rel32  (0F 85) */
+#endif
+
+
+/* Thread-safe info field */
+#if !__OBJC2__
+OBJC_EXPORT void _class_setInfo(Class cls, long set);
+OBJC_EXPORT void _class_clearInfo(Class cls, long clear);
+OBJC_EXPORT void _class_changeInfo(Class cls, long set, long clear);
+#endif
+
+/* Secure /tmp usage */
+OBJC_EXPORT int secure_open(const char *filename, int flags, uid_t euid);
 
-    #define OBJC_LOCK(MUTEX)   mutex_lock (MUTEX)
-    #define OBJC_UNLOCK(MUTEX) mutex_unlock (MUTEX)
-    #define OBJC_TRYLOCK(MUTEX)        mutex_try_lock (MUTEX)
 
 #if !defined(SEG_OBJC)
 #define SEG_OBJC        "__OBJC"        /* objective-C runtime segment */
 #endif
+#if !defined(SEG_OBJC2)
+#define SEG_OBJC2 "__OBJC2"
+#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 PrintInitializing; // env OBJC_PRINT_INITIALIZE_METHODS
+OBJC_EXPORT int PrintResolving;  // env OBJC_PRINT_RESOLVED_METHODS
+OBJC_EXPORT int PrintConnecting; // env OBJC_PRINT_CLASS_SETUP
+OBJC_EXPORT int PrintProtocols;  // env OBJC_PRINT_PROTOCOL_SETUP
+OBJC_EXPORT int PrintIvars;      // env OBJC_PRINT_IVAR_SETUP
+OBJC_EXPORT int PrintFuture;     // env OBJC_PRINT_FUTURE_CLASSES
 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 PrintExceptions; // env OBJC_PRINT_EXCEPTIONS
+OBJC_EXPORT int PrintAltHandlers; // env OBJC_PRINT_ALT_HANDLERS
+OBJC_EXPORT int PrintDeprecation;// env OBJC_PRINT_DEPRECATION_WARNINGS
+OBJC_EXPORT int PrintReplacedMethods; // env OBJC_PRINT_REPLACED_METHODS
+OBJC_EXPORT int PrintCacheCollection; // env OBJC_PRINT_CACHE_COLLECTION
 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 DebugFinalizers; // env OBJC_DEBUG_FINALIZERS
+OBJC_EXPORT int DebugNilSync;    // env OBJC_DEBUG_NIL_SYNC
 
-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 int DisableGC;       // env OBJC_DISABLE_GC
 
+/* GC state */
 OBJC_EXPORT BOOL UseGC;          // equivalent to calling objc_collecting_enabled()
+OBJC_EXPORT auto_zone_t *gc_zone;  // the GC zone, or NULL if no GC
 
-static __inline__ int _objc_strcmp(const unsigned char *s1, const unsigned char *s2) {
-    unsigned char c1, c2;
+static __inline__ int _objc_strcmp(const char *s1, const char *s2) {
+    char c1, c2;
     for ( ; (c1 = *s1) == (c2 = *s2); s1++, s2++)
         if (c1 == '\0')
             return 0;
     return (c1 - c2);
 }       
 
-static __inline__ unsigned int _objc_strhash(const unsigned char *s) {
-    unsigned int hash = 0;
+static __inline__ uintptr_t _objc_strhash(const char *s) {
+    uintptr_t hash = 0;
     for (;;) {
        int a = *s++;
        if (0 == a) break;
@@ -303,22 +490,26 @@ static __inline__ unsigned int _objc_strhash(const unsigned char *s) {
 
 
 // objc per-thread storage
-OBJC_EXPORT pthread_key_t _objc_pthread_key;
 typedef struct {
     struct _objc_initializing_classes *initializingClasses; // for +initialize
+    struct _objc_lock_list *lockList;  // for lock debugging
+    struct SyncCache *syncCache;  // for @synchronize
+    struct alt_handler_list *handlerList;  // for exception alt handlers
 
     // If you add new fields here, don't forget to update 
     // _objc_pthread_destroyspecific()
 
 } _objc_pthread_data;
 
+OBJC_EXPORT _objc_pthread_data *_objc_fetch_pthread_data(BOOL create);
+
 
 // Class state
-#define ISCLASS(cls)           ((((struct objc_class *) cls)->info & CLS_CLASS) != 0)
-#define ISMETA(cls)            ((((struct objc_class *) cls)->info & CLS_META) != 0)
-#define GETMETA(cls)           (ISMETA(cls) ? ((struct objc_class *) cls) : ((struct objc_class *) cls)->isa)
-#define ISINITIALIZED(cls)     ((((volatile long)GETMETA(cls)->info) & CLS_INITIALIZED) != 0)
-#define ISINITIALIZING(cls)    ((((volatile long)GETMETA(cls)->info) & CLS_INITIALIZING) != 0)
+#if !__OBJC2__
+#define ISCLASS(cls)           (((cls)->info & CLS_CLASS) != 0)
+#define ISMETA(cls)            (((cls)->info & CLS_META) != 0)
+#define GETMETA(cls)           (ISMETA(cls) ? (cls) : (cls)->isa)
+#endif
 
 
 // Attribute for global variables to keep them out of bss storage
@@ -328,8 +519,195 @@ typedef struct {
 // CoreFoundation-only process from three to two. See #3857126 and #3857136.
 #define NOBSS __attribute__((section("__DATA,__data")))
 
+// cache.h
+extern void flush_caches(Class cls, BOOL flush_meta);
+extern void flush_cache(Class cls);
+extern BOOL _cache_fill(Class cls, Method smt, SEL sel);
+extern void _cache_addForwardEntry(Class cls, SEL sel);
+extern void _cache_free(Cache cache);
+#if !__OBJC2__
+// used by flush_caches outside objc-cache.m
+extern void _cache_flush(Class cls);
+extern pthread_mutex_t cacheUpdateLock;
+#ifdef OBJC_INSTRUMENTED
+extern unsigned int LinearFlushCachesCount;
+extern unsigned int LinearFlushCachesVisitedCount;
+extern unsigned int MaxLinearFlushCachesVisitedCount;
+extern unsigned int NonlinearFlushCachesCount;
+extern unsigned int NonlinearFlushCachesClassCount;
+extern unsigned int NonlinearFlushCachesVisitedCount;
+extern unsigned int MaxNonlinearFlushCachesVisitedCount;
+extern unsigned int IdealFlushCachesCount;
+extern unsigned int MaxIdealFlushCachesCount;
+#endif
+#endif
+
+// encoding.h
+extern unsigned int encoding_getNumberOfArguments(const char *typedesc);
+extern unsigned int encoding_getSizeOfArguments(const char *typedesc);
+extern unsigned int encoding_getArgumentInfo(const char *typedesc, int arg, const char **type, int *offset);
+extern void encoding_getReturnType(const char *t, char *dst, size_t dst_len);
+extern char * encoding_copyReturnType(const char *t);
+extern void encoding_getArgumentType(const char *t, unsigned int index, char *dst, size_t dst_len);
+extern char *encoding_copyArgumentType(const char *t, unsigned int index);
+
+// lock.h
+extern void _lock_debug(mutex_t lock, const char *name);
+extern void _checklock_debug(mutex_t lock, const char *name);
+extern void _checkunlock_debug(mutex_t lock, const char *name);
+extern void _unlock_debug(mutex_t lock, const char *name);
+extern void _destroyLockList(struct _objc_lock_list *locks);
+
+// sync.h
+extern void _destroySyncCache(struct SyncCache *cache);
+
+// layout.h
+typedef struct {
+    uint8_t *bits;
+    size_t bitCount;
+    size_t bitsAllocated;
+    BOOL weak;
+} layout_bitmap;
+extern layout_bitmap layout_bitmap_create(const unsigned char *layout_string, size_t layoutStringInstanceSize, size_t instanceSize, BOOL weak);
+extern void layout_bitmap_free(layout_bitmap bits);
+extern const unsigned char *layout_string_create(layout_bitmap bits);
+extern void layout_bitmap_set_ivar(layout_bitmap bits, const char *type, size_t offset);
+extern void layout_bitmap_grow(layout_bitmap *bits, size_t newCount);
+extern void layout_bitmap_slide(layout_bitmap *bits, size_t oldPos, size_t newPos);
+extern BOOL layout_bitmap_splat(layout_bitmap dst, layout_bitmap src, 
+                                size_t oldSrcInstanceSize);
+
+// fixme runtime
+extern id look_up_class(const char *aClassName, BOOL includeUnconnected, BOOL includeClassHandler);
+extern void _read_images(header_info **hList, uint32_t hCount);
+extern void prepare_load_methods(header_info *hi);
+extern void _unload_image(header_info *hi);
+extern const char ** _objc_copyClassNamesForImage(header_info *hi, unsigned int *outCount);
+
+extern Class _objc_allocateFutureClass(const char *name);
+
+
+extern Property *copyPropertyList(struct objc_property_list *plist, unsigned int *outCount);
+
+
+extern const header_info *_headerForClass(Class cls);
+
+// fixme class
+extern Property property_list_nth(const struct objc_property_list *plist, uint32_t i);
+extern size_t property_list_size(const struct objc_property_list *plist);
+
+extern Class _class_getSuperclass(Class cls);
+extern BOOL _class_getInfo(Class cls, int info);
+extern const char *_class_getName(Class cls);
+extern size_t _class_getInstanceSize(Class cls);
+extern Class _class_getMeta(Class cls);
+extern BOOL _class_isMetaClass(Class cls);
+extern Cache _class_getCache(Class cls);
+extern void _class_setCache(Class cls, Cache cache);
+extern BOOL _class_isInitializing(Class cls);
+extern BOOL _class_isInitialized(Class cls);
+extern void _class_setInitializing(Class cls);
+extern void _class_setInitialized(Class cls);
+extern Class _class_getNonMetaClass(Class cls);
+extern Method _class_getMethodNoSuper(Class cls, SEL sel);
+extern Method _class_getMethod(Class cls, SEL sel);
+extern BOOL _class_isLoadable(Class cls);
+extern IMP _class_getLoadMethod(Class cls);
+extern BOOL _class_hasLoadMethod(Class cls);
+extern BOOL _class_hasCxxStructorsNoSuper(Class cls);
+extern BOOL _class_shouldFinalizeOnMainThread(Class cls);
+extern void _class_setFinalizeOnMainThread(Class cls);
+extern BOOL _class_shouldGrowCache(Class cls);
+extern void _class_setGrowCache(Class cls, BOOL grow);
+extern Ivar _class_getVariable(Class cls, const char *name);
+extern Class _class_getFreedObjectClass(void);
+extern Class _class_getNonexistentObjectClass(void);
+extern id _internal_class_createInstanceFromZone(Class cls, size_t extraBytes,
+                                                 void *zone);
+extern id _internal_object_dispose(id anObject);
+
+
+extern const char *_category_getName(Category cat);
+extern const char *_category_getClassName(Category cat);
+extern Class _category_getClass(Category cat);
+extern IMP _category_getLoadMethod(Category cat);
+
+#if !__OBJC2__
+#define oldcls(cls) ((struct old_class *)cls)
+#define oldprotocol(proto) ((struct old_protocol *)proto)
+#define oldmethod(meth) ((struct old_method *)meth)
+#define oldcategory(cat) ((struct old_category *)cat)
+#define oldivar(ivar) ((struct old_ivar *)ivar)
+
+static inline struct old_method *_method_asOld(Method m) { return (struct old_method *)m; }
+static inline struct old_class *_class_asOld(Class cls) { return (struct old_class *)cls; }
+static inline struct old_category *_category_asOld(Category cat) { return (struct old_category *)cat; }
+
+extern void unload_class(struct old_class *cls);
+#endif
+
+extern BOOL object_cxxConstruct(id obj);
+extern void object_cxxDestruct(id obj);
+
+#if !__OBJC2__
+#define CLS_CLASS              0x1
+#define CLS_META               0x2
+#define CLS_INITIALIZED                0x4
+#define CLS_POSING             0x8
+#define CLS_MAPPED             0x10
+#define CLS_FLUSH_CACHE                0x20
+#define CLS_GROW_CACHE         0x40
+#define CLS_NEED_BIND          0x80
+#define CLS_METHOD_ARRAY        0x100
+// the JavaBridge constructs classes with these markers
+#define CLS_JAVA_HYBRID                0x200
+#define CLS_JAVA_CLASS         0x400
+// thread-safe +initialize
+#define CLS_INITIALIZING       0x800
+// bundle unloading
+#define CLS_FROM_BUNDLE                0x1000
+// C++ ivar support
+#define CLS_HAS_CXX_STRUCTORS  0x2000
+// Lazy method list arrays
+#define CLS_NO_METHOD_ARRAY    0x4000
+// +load implementation
+#define CLS_HAS_LOAD_METHOD     0x8000
+// objc_allocateClassPair API
+#define CLS_CONSTRUCTING        0x10000
+// visibility=hidden
+#define CLS_HIDDEN              0x20000
+// GC:  class has unsafe finalize method
+#define CLS_FINALIZE_ON_MAIN_THREAD 0x40000
+// Lazy property list arrays
+#define CLS_NO_PROPERTY_ARRAY  0x80000
 // +load implementation
-#define CLS_HAS_LOAD_METHOD    0x8000L
+#define CLS_CONNECTED           0x100000
+#define CLS_LOADED              0x200000
+// objc_allocateClassPair API
+#define CLS_CONSTRUCTED         0x400000
+// class is leaf for cache flushing
+#define CLS_LEAF                0x800000
+#endif
+
+#define OBJC_WARN_DEPRECATED \
+    do { \
+        static int warned = 0; \
+        if (!warned) { \
+            warned = 1; \
+            _objc_warn_deprecated(__FUNCTION__, NULL); \
+        } \
+    } while (0) \
+
+/* Method prototypes */
+@interface DoesNotExist
++ class;
++ initialize;
+- (id)description;
+- (const char *)UTF8String;
+- (unsigned long)hash;
+- (BOOL)isEqual:(id)object;
+- free;
+@end
 
 #endif /* _OBJC_PRIVATE_H_ */
 
index 9556752f204c680a1ecc8f64b9c58994175224bd..c095ef3db8302aaeb94e9ceb1a5d6cdee4e60c15 100644 (file)
@@ -1,10 +1,8 @@
 /*
- * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2004 Apple 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
  * @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:
index aa4e2c73ef891ef19c8cfb17f55e33dd56592f7c..9b701e44b22b7802199465a318a34c9d0d650698 100644 (file)
@@ -1,10 +1,8 @@
 /*
- * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2004-2006 Apple 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
  * @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
 // 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__)
+#if defined(__ppc__)  ||  defined(__ppc64__)
 #   define kRTPagesLo    OBJC_UINTPTR_T(-20 * 0x1000) // ppc 0xfffec000
 #elif defined(__i386__)
 #   define kRTPagesLo    OBJC_UINTPTR_T(-24 * 0x1000) // i386 0xfffe8000
+#elif defined(__x86_64__)
+#   define kRTPagesLo    OBJC_UINTPTR_T(-24 * 0x1000) // x86_64 0xfffffffffffe8000
 #else
     #error unknown architecture
 #endif
 #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_zero              OBJC_SIZE_T(16) // 16 zero 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_zero OBJC_UINTPTR_T(kRTPagesHi-kRTPagesSize)  // 16 zero bytes
-#define kRTAddress_ignoredSelector OBJC_UINTPTR_T(kRTAddress_zero+16)  // string "<ignored selector>"
+#define kRTAddress_zero OBJC_UINTPTR_T(kRTPagesHi-kRTPagesSize)
+#define kRTAddress_ignoredSelector OBJC_UINTPTR_T(kRTAddress_zero+kRTSize_zero)
 
-#define kIgnore kRTAddress_ignoredSelector  // ppc 0xfffef010
+#define kIgnore kRTAddress_ignoredSelector  // ppc 0xfffef000
 
 /*********************************************************************
   End of runtime page layout. 
index 4e5bbeea6cf022452f36a43df50180f0fb76afd9..a69d1feb735a3ba1064d3b108da31c33e37409ac 100644 (file)
@@ -1,10 +1,8 @@
 /*
- * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2004-2007 Apple 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
  * @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.
 */
 
 // 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__)
+#if defined(__ppc__)  ||  defined(__ppc64__)
 // from Libc, but no prototype yet (#3850825)
 extern void sys_icache_invalidate(const void * newcode, size_t len);
 
@@ -52,7 +43,7 @@ static size_t rtp_copy_code(unsigned* dest, unsigned* source, size_t max_insns);
 #endif
 
 
-#if !defined(__ppc__)
+#if defined(__ppc64__)
 
 __private_extern__ void rtp_init(void)
 {
@@ -63,6 +54,15 @@ __private_extern__ void rtp_init(void)
 
 #else
 
+#if defined(__ppc__)
+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);
+#endif
+
+#if defined(__i386__) || defined(__x86_64__)
+static void rtp_swap_imp(unsigned *address, void *code, const char *name);
+#endif
+
 /**********************************************************************
 * rtp_init
 * Allocate and initialize the Objective-C runtime pages.
@@ -70,18 +70,20 @@ __private_extern__ void rtp_init(void)
 **********************************************************************/
 __private_extern__ void rtp_init(void)
 {
+#if defined(__ppc__)
+
     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);
+                     (void *)objcRTPages, (void *)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);
+                     FALSE, VM_PROT_READ | VM_PROT_WRITE);
                      
     if (ret != KERN_SUCCESS) {
         if (PrintRTP) {
@@ -113,8 +115,33 @@ __private_extern__ void rtp_init(void)
     if (ret != KERN_SUCCESS) {
         _objc_inform("RTP: Could not re-protect Objective-C runtime pages!");
     }
+
+#elif defined(__i386__) || defined(__x86_64__)
+
+    // At load time, the page on which the objc_assign_* routines live is not
+    // marked as executable. We fix that here, regardless of the GC choice.
+    if (UseGC)
+    {
+        rtp_swap_imp((unsigned*)objc_assign_ivar,
+            objc_assign_ivar_gc, "objc_assign_ivar");
+        rtp_swap_imp((unsigned*)objc_assign_global,
+            objc_assign_global_gc, "objc_assign_global");
+        rtp_swap_imp((unsigned*)objc_assign_strongCast,
+            objc_assign_strongCast_gc, "objc_assign_strongCast");
+    }
+    else
+    {   // Not GC, just make the page executable.
+        if (vm_protect(mach_task_self(), (vm_address_t)objc_assign_ivar, 1,
+            FALSE, VM_PROT_READ | VM_PROT_EXECUTE) != KERN_SUCCESS)
+            _objc_fatal("Could not reprotect objc_assign_*.");
+    }
+
+#else
+#error undefined architecture
+#endif
 }
 
+#if defined(__ppc__)
 
 /**********************************************************************
 * rtp_set_up_objc_msgSend
@@ -125,7 +152,7 @@ __private_extern__ void rtp_init(void)
 **********************************************************************/
 static void rtp_set_up_objc_msgSend(uintptr_t address, size_t maxsize) 
 {
-#if defined(__ppc__)
+#if defined(__ppc__)  ||  defined(__ppc64__)
     // Location in the runtime pages of the new function.
     unsigned *buffer = (unsigned *)address;
 
@@ -136,11 +163,11 @@ static void rtp_set_up_objc_msgSend(uintptr_t address, size_t maxsize)
     // 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);
+    size_t 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", 
+                     "in RTP at %p is a %zu instruction branch", 
                      buffer, written);
     }
     return;
@@ -150,11 +177,11 @@ static void rtp_set_up_objc_msgSend(uintptr_t address, size_t maxsize)
     // via a dyld-recognizable stub.
     if (AllowInterposing) {
         extern void objc_msgSend_stub(void);
-        unsigned written = objc_write_branch(buffer, objc_msgSend_stub);
+        size_t 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", 
+                         "in RTP at %p is a %zu instruction branch", 
                          buffer, written);
         }
         return;
@@ -162,51 +189,73 @@ static void rtp_set_up_objc_msgSend(uintptr_t address, size_t maxsize)
 
     if (PrintRTP) {
         _objc_inform("RTP: writing objc_msgSend at [%p..%p) ...", 
-                     address, address+maxsize);
+                     (void *)address, (void *)(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) {
+    if (i + objc_branch_size(buffer + i, code + 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);
+                     "runtime pages (%zu bytes available)", maxsize);
         return;
     }
     
     { 
-        // Replace load of _objc_nilReceiver.
+        // Replace load of _objc_nilReceiver into r11
         // 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;
-        
+        uintptr_t address = (uintptr_t)&_objc_nilReceiver;
+        uint16_t lo = address & 0xffff;
+        uint16_t ha = ((address - (int16_t)lo) >> 16) & 0xffff;
+#if defined(__ppc64__)
+        uint16_t hi2 = (address >> 32) & 0xffff;
+        uint16_t hi3 = (address >> 48) & 0xffff;
+#endif
+
         // search for mflr instruction
-        int j;
+        size_t 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);
+                const unsigned op_lis_r11 = 0x3d600000u;
+                const unsigned op_lwz_r11 = 0x816b0000u;
+#if defined(__ppc__)
+                // lis r11, ha
+                // lwz r11, lo(r11)
+                buffer[j + 0] = op_lis_r11 | ha;
                 buffer[j + 1] = op_nop;
                 buffer[j + 2] = op_nop;
-                buffer[j + 3] = op_lwz_r11 | (lo & 0xffff);
+                buffer[j + 3] = op_lwz_r11 | lo;
                 buffer[j + 4] = op_nop;
                 buffer[j + 5] = op_nop;
+#elif defined(__ppc64__)
+                const unsigned op_ori_r11 = 0x616b0000u;
+                const unsigned op_oris_r11 = 0x656b0000u;
+                const unsigned op_sldi_r11 = 0x796b07c6u;
+                // lis  r11, hi3
+                // ori  r11, r11, hi2
+                // sldi r11, r11, 32
+                // oris r11, r11, ha
+                // lwz  r11, lo(r11)
+                buffer[j + 0] = op_lis_r11  | hi3;
+                buffer[j + 1] = op_ori_r11  | hi2;
+                buffer[j + 2] = op_sldi_r11;
+                buffer[j + 3] = op_oris_r11 | ha;
+                buffer[j + 4] = op_lwz_r11  | lo;
+                buffer[j + 5] = op_nop;
+#endif
                 break;
             }
         }
@@ -220,7 +269,7 @@ static void rtp_set_up_objc_msgSend(uintptr_t address, size_t maxsize)
 
     if (PrintRTP) {
         _objc_inform("RTP: wrote   objc_msgSend at [%p..%p)", 
-                     address, address + i*sizeof(unsigned));
+                     (void *)address, (void *)(address + i*sizeof(unsigned)));
     }
 
 #elif defined(__i386__)
@@ -242,7 +291,7 @@ static void rtp_set_up_objc_msgSend(uintptr_t address, size_t maxsize)
 * 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__)
+#if defined(__ppc__)  ||  defined(__ppc64__)
     // location in the runtime pages of this function
     unsigned *buffer = (unsigned *)address;
     
@@ -250,10 +299,10 @@ static void rtp_set_up_other(uintptr_t address, size_t maxsize, const char *name
     unsigned *code = (unsigned *)(objc_collecting_enabled() ? gc_code : non_gc_code);
     
     if (objc_collecting_enabled()) {
-        unsigned written = objc_write_branch(buffer, code);
+        size_t 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", 
+            _objc_inform("RTP: %s in RTP at %p is a %zu instruction branch", 
                          name, buffer, written);
         }
         return;
@@ -261,20 +310,20 @@ static void rtp_set_up_other(uintptr_t address, size_t maxsize, const char *name
 
     if (PrintRTP) {
         _objc_inform("RTP: writing %s at [%p..%p) ...", 
-                     name, address, address + maxsize);
+                     name, (void *)address, (void *)(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);
+    size_t max_insns = maxsize / sizeof(unsigned);
+    size_t 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);
+                     "runtime pages (%zu bytes available)", name, maxsize);
         return;
     }
     
@@ -283,7 +332,8 @@ static void rtp_set_up_other(uintptr_t address, size_t maxsize, const char *name
 
     if (PrintRTP) {
         _objc_inform("RTP: wrote %s at [%p..%p)", 
-                     name, address, address + i * sizeof(unsigned));
+                     name, (void *)address, 
+                     (void *)(address + i * sizeof(unsigned)));
     }
 
 #elif defined(__i386__)
@@ -294,8 +344,6 @@ static void rtp_set_up_other(uintptr_t address, size_t maxsize, const char *name
 }
 
 
-#if defined(__ppc__)
-
 /**********************************************************************
 * rtp_copy_code
 *
@@ -321,8 +369,35 @@ static size_t rtp_copy_code(unsigned* dest, unsigned* source, size_t max_insns)
     return i + 1;
 }
 
-// defined(__ppc__)
+// defined(__ppc__)  ||  defined(__ppc64__)
+#endif
+
+#if defined(__i386__) || defined(__x86_64__)
+
+/**********************************************************************
+* rtp_swap_imp
+*
+* Swap a function's current implementation with a new one.
+* The routine at 'address' is assumed to be at least as large as the
+*   jump instruction required to reach the new implementation.
+**********************************************************************/
+static void rtp_swap_imp(unsigned *address, void *code, const char *name)
+{
+    if (vm_protect(mach_task_self(), (vm_address_t)address, 1,
+        FALSE, VM_PROT_READ | VM_PROT_WRITE) != KERN_SUCCESS)
+        _objc_fatal("Could not get write access to %s.", name);
+    else
+    {
+        objc_write_branch(address, (unsigned*)code);
+
+        if (vm_protect(mach_task_self(), (vm_address_t)address, 1,
+            FALSE, VM_PROT_READ | VM_PROT_EXECUTE) != KERN_SUCCESS)
+            _objc_fatal("Could not reprotect %s.", name);
+    }
+}
+
+// defined(__i386__) || defined(__x86_64__)
 #endif
 
-// defined(__ppc__)  ||  defined(__i386__)
+// !defined(__ppc64__)
 #endif
diff --git a/runtime/objc-runtime-new.h b/runtime/objc-runtime-new.h
new file mode 100644 (file)
index 0000000..ec96fb9
--- /dev/null
@@ -0,0 +1,159 @@
+/*
+ * Copyright (c) 2005-2007 Apple Inc.  All Rights Reserved.
+ * 
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * 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@
+ */
+
+// Values for class_ro_t->flags
+// These are emitted by the compiler and are part of the ABI. 
+// class is a metaclass
+#define RO_META               (1<<0)
+// class is a root class
+#define RO_ROOT               (1<<1)
+// class has .cxx_construct/destruct implementations
+#define RO_HAS_CXX_STRUCTORS  (1<<2)
+// class has +load implementation
+// #define RO_HAS_LOAD_METHOD    (1<<3)
+// class has visibility=hidden set
+#define RO_HIDDEN             (1<<4)
+// class has attribute(objc_exception): OBJC_EHTYPE_$_ThisClass is non-weak
+#define RO_EXCEPTION          (1<<5)
+// class is realized - must never be set by compiler
+#define RO_REALIZED           (1<<31)
+
+// Values for class_rw_t->flags
+// These are not emitted by the compiler and are never used in class_ro_t. 
+// Their presence should be considered in future ABI versions.
+// class_t->data is class_rw_t, not class_ro_t
+#define RW_REALIZED           (1<<31)
+// class's method lists are fixed up
+#define RW_METHODIZED         (1<<30)
+// class is initialized
+#define RW_INITIALIZED        (1<<29)
+// class is initializing
+#define RW_INITIALIZING       (1<<28)
+// class_rw_t->ro is heap copy of class_ro_t
+#define RW_COPIED_RO          (1<<27)
+// class allocated but not yet registered
+#define RW_CONSTRUCTING       (1<<26)
+// class allocated and registered
+#define RW_CONSTRUCTED        (1<<25)
+// GC:  class has unsafe finalize method
+#define RW_FINALIZE_ON_MAIN_THREAD (1<<24)
+// class +load has been called
+#define RW_LOADED             (1<<23)
+
+typedef struct method_t {
+    SEL name;
+    const char *types;
+    IMP imp;
+} method_t;
+
+typedef struct method_list_t {
+    uint32_t entsize;
+    uint32_t count;
+    struct method_t first;
+} method_list_t;
+
+typedef struct ivar_t {
+    // *offset is 64-bit by accident even though other 
+    // fields restrict total instance size to 32-bit. 
+    uintptr_t *offset;
+    const char *name;
+    const char *type;
+    uint32_t alignment;
+    uint32_t size;
+} ivar_t;
+
+typedef struct ivar_list_t {
+    uint32_t entsize;
+    uint32_t count;
+    struct ivar_t first;
+} ivar_list_t;
+
+typedef struct protocol_t {
+    id isa;
+    const char *name;
+    struct protocol_list_t *protocols;
+    method_list_t *instanceMethods;
+    method_list_t *classMethods;
+    method_list_t *optionalInstanceMethods;
+    method_list_t *optionalClassMethods;
+    struct objc_property_list *instanceProperties;
+} protocol_t;
+
+typedef struct protocol_list_t {
+    // count is 64-bit by accident. 
+    uintptr_t count;
+    protocol_t *list[0]; // variable-size
+} protocol_list_t;
+
+typedef struct class_ro_t {
+    uint32_t flags;
+    uint32_t instanceStart;
+    uint32_t instanceSize;
+    uint32_t reserved;
+
+    const uint8_t * ivarLayout;
+    
+    const char * name;
+    const method_list_t * baseMethods;
+    const protocol_list_t * baseProtocols;
+    const ivar_list_t * ivars;
+
+    const uint8_t * weakIvarLayout;
+    const struct objc_property_list *baseProperties;
+} class_ro_t;
+
+typedef struct class_rw_t {
+    uint32_t flags;
+    uint32_t version;
+
+    const class_ro_t *ro;
+    
+    struct chained_method_list *methods;
+    struct chained_property_list *properties;
+    struct protocol_list_t ** protocols;  // these are UNREMAPPED protocols!
+
+    struct class_t *firstSubclass;
+    struct class_t *nextSiblingClass;
+} class_rw_t;
+
+typedef struct class_t {
+    struct class_t *isa;
+    struct class_t *superclass;
+    Cache cache;
+    IMP *vtable;
+    class_rw_t *data;
+} class_t;
+
+typedef struct category_t {
+    const char *name;
+    struct class_t *cls;
+    struct method_list_t *instanceMethods;
+    struct method_list_t *classMethods;
+    struct protocol_list_t *protocols;
+    struct objc_property_list *instanceProperties;
+} category_t;
+
+struct objc_super2 {
+    id receiver;
+    Class current_class;
+};
diff --git a/runtime/objc-runtime-new.m b/runtime/objc-runtime-new.m
new file mode 100644 (file)
index 0000000..ced3cc1
--- /dev/null
@@ -0,0 +1,3953 @@
+/*
+ * Copyright (c) 2005-2007 Apple Inc.  All Rights Reserved.
+ * 
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * 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-runtime-new.m
+* Support for new-ABI classes and images.
+**********************************************************************/
+
+#if __OBJC2__
+
+#include "objc-private.h"
+#include "objc-runtime-new.h"
+#include "objc-loadmethod.h"
+#include "objc-rtp.h"
+#include "maptable.h"
+#include <assert.h>
+#include <mach-o/dyld.h>
+#include <mach-o/ldsyms.h>
+
+#define newcls(cls) ((struct class_t *)cls)
+#define newcat(cat) ((struct category_t *)cat)
+#define newmethod(meth) ((struct method_t *)meth)
+#define newivar(ivar) ((struct ivar_t *)ivar)
+#define newcategory(cat) ((struct category_t *)cat)
+#define newprotocol(p) ((struct protocol_t *)p)
+
+static const char *getName(struct class_t *cls);
+static uint32_t instanceSize(struct class_t *cls);
+static BOOL isMetaClass(struct class_t *cls);
+static struct class_t *getSuperclass(struct class_t *cls);
+static void unload_class(class_t *cls);
+static class_t *setSuperclass(class_t *cls, class_t *newSuper);
+static class_t *realizeClass(class_t *cls);
+
+static OBJC_DECLARE_LOCK (runtimeLock);
+// fixme use more fine-grained locks
+
+
+typedef struct {
+    uint32_t count;
+    category_t *list[0];  // variable-size
+} category_list;
+
+typedef struct chained_method_list {
+    struct chained_method_list *next;
+    uint32_t count;
+    method_t list[0];  // variable-size
+} chained_method_list;
+
+static size_t chained_mlist_size(const chained_method_list *mlist)
+{
+    return sizeof(chained_method_list) + mlist->count * sizeof(method_t);
+}
+
+// fixme don't chain property lists
+typedef struct chained_property_list {
+    struct chained_property_list *next;
+    uint32_t count;
+    struct objc_property list[0];  // variable-size
+} chained_property_list;
+
+/*
+static size_t chained_property_list_size(const chained_property_list *plist)
+{
+    return sizeof(chained_property_list) + 
+        plist->count * sizeof(struct objc_property);
+}
+
+static size_t protocol_list_size(const protocol_list_t *plist)
+{
+    return sizeof(protocol_list_t) + plist->count * sizeof(protocol_t *);
+}
+*/
+
+static size_t ivar_list_size(const ivar_list_t *ilist)
+{
+    return sizeof(ivar_list_t) + (ilist->count-1) * ilist->entsize;
+}
+
+static method_t *method_list_nth(const method_list_t *mlist, uint32_t i)
+{
+    return (method_t *)(i*mlist->entsize + (char *)&mlist->first);
+}
+
+static ivar_t *ivar_list_nth(const ivar_list_t *ilist, uint32_t i)
+{
+    return (ivar_t *)(i*ilist->entsize + (char *)&ilist->first);
+}
+
+
+static void try_free(const void *p) 
+{
+    if (p && malloc_size(p)) free((void *)p);
+}
+
+
+/***********************************************************************
+* make_ro_writeable
+* Reallocates rw->ro if necessary to make it writeable.
+* Locking: runtimeLock must be held by the caller.
+**********************************************************************/
+static class_ro_t *make_ro_writeable(class_rw_t *rw)
+{
+    OBJC_CHECK_LOCKED(&runtimeLock);
+
+    if (rw->flags & RW_COPIED_RO) {
+        // already writeable, do nothing
+    } else {
+        class_ro_t *ro = _memdup_internal(rw->ro, sizeof(*rw->ro));
+        rw->ro = ro;
+        rw->flags |= RW_COPIED_RO;
+    }
+    return (class_ro_t *)rw->ro;
+}
+
+
+/***********************************************************************
+* unattachedCategories
+* Returns the class => categories map of unattached categories.
+* Locking: runtimeLock must be held by the caller.
+**********************************************************************/
+static NXMapTable *unattachedCategories(void)
+{
+    OBJC_CHECK_LOCKED(&runtimeLock);
+
+    static NXMapTable *category_map = NULL;
+
+    if (category_map) return category_map;
+
+    // fixme initial map size
+    category_map = NXCreateMapTableFromZone(NXPtrValueMapPrototype, 16, 
+                                            _objc_internal_zone());
+
+    return category_map;
+}
+
+
+/***********************************************************************
+* addUnattachedCategoryForClass
+* Records an unattached category.
+* Locking: runtimeLock must be held by the caller.
+**********************************************************************/
+static void addUnattachedCategoryForClass(category_t *cat, class_t *cls)
+{
+    OBJC_CHECK_LOCKED(&runtimeLock);
+
+    // DO NOT use cat->cls! 
+    // cls may be cat->cls->isa, or cat->cls may have been remapped.
+    NXMapTable *cats = unattachedCategories();
+    category_list *list;
+
+    list = NXMapGet(cats, cls);
+    if (!list) {
+        list = _calloc_internal(sizeof(*list) + sizeof(category_t *), 1);
+    } else {
+        list = _realloc_internal(list, sizeof(*list) + sizeof(category_t *) * (list->count + 1));
+    }
+    list->list[list->count++] = cat;
+    NXMapInsert(cats, cls, list);
+}
+
+
+/***********************************************************************
+* removeUnattachedCategoryForClass
+* Removes an unattached category.
+* Locking: runtimeLock must be held by the caller.
+**********************************************************************/
+static void removeUnattachedCategoryForClass(category_t *cat, class_t *cls)
+{
+    OBJC_CHECK_LOCKED(&runtimeLock);
+
+    // DO NOT use cat->cls! 
+    // cls may be cat->cls->isa, or cat->cls may have been remapped.
+    NXMapTable *cats = unattachedCategories();
+    category_list *list;
+
+    list = NXMapGet(cats, cls);
+    if (!list) return;
+
+    uint32_t i;
+    for (i = 0; i < list->count; i++) {
+        if (list->list[i] == cat) {
+            // shift entries to preserve list order
+            memmove(&list->list[i], &list->list[i+1], 
+                    (list->count-i-1) * sizeof(category_t *));
+            list->count--;
+            return;
+        }
+    }
+}
+
+
+/***********************************************************************
+* unattachedCategoriesForClass
+* Returns the list of unattached categories for a class, and 
+* deletes them from the list. 
+* The result must be freed by the caller. 
+* Locking: runtimeLock must be held by the caller.
+**********************************************************************/
+static category_list *unattachedCategoriesForClass(class_t *cls)
+{
+    OBJC_CHECK_LOCKED(&runtimeLock);
+    return NXMapRemove(unattachedCategories(), cls);
+}
+
+
+/***********************************************************************
+* isRealized
+* Returns YES if class cls has been realized.
+* Locking: To prevent concurrent realization, hold runtimeLock.
+**********************************************************************/
+static BOOL isRealized(class_t *cls)
+{
+    return (cls->data->flags & RW_REALIZED) ? YES : NO;
+}
+
+
+/***********************************************************************
+* isMethodized.
+* Returns YES if class cls has ever been methodized.
+* Note that its method lists may still be out of date.
+* Locking: To prevent concurrent methodization, hold runtimeLock.
+**********************************************************************/
+static BOOL isMethodized(class_t *cls)
+{
+    if (!isRealized(cls)) return NO;
+    return (cls->data->flags & RW_METHODIZED) ? YES : NO;
+}
+
+static chained_method_list *
+buildMethodList(const method_list_t *mlist, category_list *cats, BOOL isMeta)
+{
+    // Do NOT use cat->cls! It may have been remapped.
+    chained_method_list *newlist;
+    uint32_t count = 0;
+    uint32_t m, c;
+
+    // Count methods in all lists.
+    if (mlist) count = mlist->count;
+    if (cats) {
+        for (c = 0; c < cats->count; c++) {
+            if (isMeta  &&  cats->list[c]->classMethods) {
+                count += cats->list[c]->classMethods->count;
+            }
+            else if (!isMeta  &&  cats->list[c]->instanceMethods) {
+                count += cats->list[c]->instanceMethods->count;
+            }
+        }
+    }
+    
+    // Allocate new list. 
+    newlist = _malloc_internal(sizeof(*newlist) + count * sizeof(method_t));
+    newlist->count = 0;
+    newlist->next = NULL;
+
+    // Copy methods; newest categories first, then ordinary methods
+    if (cats) {
+        c = cats->count;
+        while (c--) {
+            method_list_t *cmlist;
+            if (isMeta) {
+                cmlist = cats->list[c]->classMethods;
+            } else {
+                cmlist = cats->list[c]->instanceMethods;
+            }
+            if (cmlist) {
+                for (m = 0; m < cmlist->count; m++) {
+                    newlist->list[newlist->count++] = 
+                        *method_list_nth(cmlist, m);
+                }
+            }
+        }
+    }
+    if (mlist) {
+        for (m = 0; m < mlist->count; m++) {
+            newlist->list[newlist->count++] = *method_list_nth(mlist, m);
+        }
+    }
+
+    assert(newlist->count == count);
+    for (m = 0; m < newlist->count; m++) {
+        newlist->list[m].name = 
+            sel_registerName((const char *)newlist->list[m].name);
+        if (newlist->list[m].name == (SEL)kRTAddress_ignoredSelector) {
+            newlist->list[m].imp = (IMP)&_objc_ignored_method;
+        }
+    }
+
+    return newlist;
+}
+
+
+static chained_property_list *
+buildPropertyList(const struct objc_property_list *plist, category_list *cats, BOOL isMeta)
+{
+    // Do NOT use cat->cls! It may have been remapped.
+    chained_property_list *newlist;
+    uint32_t count = 0;
+    uint32_t p, c;
+
+    // Count properties in all lists.
+    if (plist) count = plist->count;
+    if (cats) {
+        for (c = 0; c < cats->count; c++) {
+            /*
+            if (isMeta  &&  cats->list[c]->classProperties) {
+                count += cats->list[c]->classProperties->count;
+            } 
+            else*/
+            if (!isMeta  &&  cats->list[c]->instanceProperties) {
+                count += cats->list[c]->instanceProperties->count;
+            }
+        }
+    }
+    
+    if (count == 0) return NULL;
+
+    // Allocate new list. 
+    newlist = _malloc_internal(sizeof(*newlist) + count * sizeof(struct objc_property));
+    newlist->count = 0;
+    newlist->next = NULL;
+
+    // Copy properties; newest categories first, then ordinary properties
+    if (cats) {
+        c = cats->count;
+        while (c--) {
+            struct objc_property_list *cplist;
+            /*
+            if (isMeta) {
+                cplist = cats->list[c]->classProperties;
+                } else */
+            {
+                cplist = cats->list[c]->instanceProperties;
+            }
+            if (cplist) {
+                for (p = 0; p < cplist->count; p++) {
+                    newlist->list[newlist->count++] = 
+                        *property_list_nth(cplist, p);
+                }
+            }
+        }
+    }
+    if (plist) {
+        for (p = 0; p < plist->count; p++) {
+            newlist->list[newlist->count++] = *property_list_nth(plist, p);
+        }
+    }
+
+    assert(newlist->count == count);
+
+    return newlist;
+}
+
+
+static protocol_list_t **
+buildProtocolList(category_list *cats, struct protocol_list_t *base, 
+                  struct protocol_list_t **protos)
+{
+    // Do NOT use cat->cls! It may have been remapped.
+    struct protocol_list_t **p, **newp;
+    struct protocol_list_t **newprotos;
+    int count = 0;
+    int i;
+
+    // count protocol list in base
+    if (base) count++;
+
+    // count protocol lists in cats
+    if (cats) for (i = 0; i < cats->count; i++) {
+        category_t *cat = cats->list[i];
+        if (cat->protocols) count++;
+    }
+
+    // no base or category protocols? return existing protocols unchanged
+    if (count == 0) return protos;
+
+    // count protocol lists in protos
+    for (p = protos; p  &&  *p; p++) {
+        count++;
+    }
+
+    if (count == 0) return NULL;
+    
+    newprotos = (struct protocol_list_t **)
+        _malloc_internal((count+1) * sizeof(struct protocol_list_t *));
+    newp = newprotos;
+
+    if (base) {
+        *newp++ = base;
+    }
+
+    for (p = protos; p  &&  *p; p++) {
+        *newp++ = *p;
+    }
+    
+    if (cats) for (i = 0; i < cats->count; i++) {
+        category_t *cat = cats->list[i];
+        if (cat->protocols) {
+            *newp++ = cat->protocols;
+        }
+    }
+
+    *newp = NULL;
+
+    return newprotos;
+}
+
+
+/***********************************************************************
+* methodizeClass
+* Fixes up cls's method list, protocol list, and property list.
+* Attaches any outstanding categories.
+* Locking: runtimeLock must be held by the caller
+**********************************************************************/
+static void methodizeClass(struct class_t *cls)
+{
+    OBJC_CHECK_LOCKED(&runtimeLock);
+
+    category_list *cats;
+
+    if (!cls) return;
+    assert(isRealized(cls));
+
+    if (!(cls->data->flags & RW_METHODIZED)) {
+        // Methodizing for the first time
+        if (PrintConnecting) {
+            _objc_inform("CLASS: methodizing class '%s' %s", 
+                         getName(cls), 
+                         isMetaClass(cls) ? "(meta)" : "");
+        }
+        
+        // Build method and protocol and property lists.
+        // Include methods and protocols and properties from categories, if any
+        // Do NOT use cat->cls! It may have been remapped.
+        cats = unattachedCategoriesForClass(cls);        
+        if (cats  ||  cls->data->ro->baseMethods) {
+            cls->data->methods = 
+                buildMethodList(cls->data->ro->baseMethods, cats, 
+                                isMetaClass(cls));
+        }
+
+        if (cats  ||  cls->data->ro->baseProperties) {
+            cls->data->properties = 
+                buildPropertyList(cls->data->ro->baseProperties, cats, 
+                                  isMetaClass(cls));
+        }
+
+        if (cats  ||  cls->data->ro->baseProtocols) {
+            cls->data->protocols = 
+                buildProtocolList(cats, cls->data->ro->baseProtocols, NULL);
+        }
+
+        if (PrintConnecting) {
+            uint32_t i;
+            if (cats) for (i = 0; i < cats->count; i++) {
+                _objc_inform("CLASS: attached category %c%s(%s)", 
+                             isMetaClass(cls) ? '+' : '-', 
+                             getName(cls), cats->list[i]->name);
+            }
+        }
+
+        if (cats) _free_internal(cats);
+
+        cls->data->flags |= RW_METHODIZED;
+    } 
+    else {
+        // Re-methodizing: check for more categories
+        if ((cats = unattachedCategoriesForClass(cls))) {
+            chained_method_list *newlist;
+            chained_property_list *newproperties;
+            struct protocol_list_t **newprotos;
+
+            if (PrintConnecting) {
+                _objc_inform("CLASS: attaching categories to class '%s' %s", 
+                             getName(cls), 
+                             isMetaClass(cls) ? "(meta)" : "");
+            }
+
+            newlist = buildMethodList(NULL, cats, isMetaClass(cls));
+            newlist->next = cls->data->methods;
+            cls->data->methods = newlist;
+
+            newproperties = buildPropertyList(NULL, cats, isMetaClass(cls));
+            if (newproperties) {
+                newproperties->next = cls->data->properties;
+                cls->data->properties = newproperties;
+            }
+
+            newprotos = buildProtocolList(cats, NULL, cls->data->protocols);
+            if (cls->data->protocols  &&  cls->data->protocols != newprotos) {
+                _free_internal(cls->data->protocols);
+            }
+            cls->data->protocols = newprotos;
+
+            _free_internal(cats);
+        }
+    }
+}
+
+
+/***********************************************************************
+* changeInfo
+* Atomically sets and clears some bits in cls's info field.
+* set and clear must not overlap.
+**********************************************************************/
+static OBJC_DECLARE_LOCK(infoLock);
+// fixme use atomic ops instead of lock
+static void changeInfo(class_t *cls, unsigned int set, unsigned int clear)
+{
+    assert(isRealized(cls));
+    OBJC_LOCK(&infoLock);
+    cls->data->flags = (cls->data->flags | set) & ~clear;
+    OBJC_UNLOCK(&infoLock);
+}
+
+
+/***********************************************************************
+* realizedClasses
+* Returns the classname => class map for realized non-meta classes.
+* Locking: runtimeLock must be held by the caller
+**********************************************************************/
+static NXMapTable *realizedClasses(void)
+{
+    static NXMapTable *class_map = NULL;
+    
+    OBJC_CHECK_LOCKED(&runtimeLock);
+
+    if (class_map) return class_map;
+
+    // fixme this doesn't work yet
+    // class_map 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. 
+    class_map = NXCreateMapTableFromZone(NXStrValueMapPrototype, 16, 
+                                         _objc_internal_zone());
+
+    return class_map;
+}
+
+
+/***********************************************************************
+* unrealizedClasses
+* Returns the classname => class map for unrealized non-meta classes.
+* Locking: runtimeLock must be held by the caller
+**********************************************************************/
+static NXMapTable *unrealizedClasses(void)
+{
+    static NXMapTable *class_map = NULL;
+    
+    OBJC_CHECK_LOCKED(&runtimeLock);
+
+    if (class_map) return class_map;
+
+    // fixme this doesn't work yet
+    // class_map 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. 
+    class_map = NXCreateMapTableFromZone(NXStrValueMapPrototype, 16, 
+                                         _objc_internal_zone());
+
+    return class_map;
+}
+
+
+/***********************************************************************
+* addRealizedClass
+* Adds name => cls to the realized non-meta class map.
+* Also removes name => cls from the unrealized non-meta class map.
+* Locking: runtimeLock must be held by the caller
+**********************************************************************/
+static void addRealizedClass(class_t *cls, const char *name)
+{
+    OBJC_CHECK_LOCKED(&runtimeLock);
+    void *old;
+    old = NXMapInsert(realizedClasses(), name, cls);
+    assert(!isMetaClass(cls));
+    NXMapRemove(unrealizedClasses(), name);
+}
+
+
+/***********************************************************************
+* removeRealizedClass
+* Removes cls from the realized class map.
+* Locking: runtimeLock must be held by the caller
+**********************************************************************/
+static void removeRealizedClass(class_t *cls)
+{
+    OBJC_CHECK_LOCKED(&runtimeLock);
+    assert(isRealized(cls));
+    assert(!isMetaClass(cls));
+    NXMapRemove(realizedClasses(), cls->data->ro->name);
+}
+
+
+/***********************************************************************
+* addUnrealizedClass
+* Adds name => cls to the unrealized non-meta class map.
+* Locking: runtimeLock must be held by the caller
+**********************************************************************/
+static void addUnrealizedClass(class_t *cls, const char *name)
+{
+    OBJC_CHECK_LOCKED(&runtimeLock);
+    void *old;
+    old = NXMapInsert(unrealizedClasses(), name, cls);
+    assert(!isRealized(cls));
+    assert(!(cls->data->flags & RO_META));
+}
+
+
+/***********************************************************************
+* uninitializedClasses
+* Returns the metaclass => class map for un-+initialized classes
+* Replaces the 32-bit cls = objc_getName(metacls) during +initialize.
+* Locking: runtimeLock must be held by the caller
+**********************************************************************/
+static NXMapTable *uninitializedClasses(void)
+{
+    static NXMapTable *class_map = NULL;
+    
+    OBJC_CHECK_LOCKED(&runtimeLock);
+
+    if (class_map) return class_map;
+
+    // fixme this doesn't work yet
+    // class_map 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. 
+    class_map = NXCreateMapTableFromZone(NXPtrValueMapPrototype, 16, 
+                                         _objc_internal_zone());
+
+    return class_map;
+}
+
+
+/***********************************************************************
+* addUninitializedClass
+* Adds metacls => cls to the un-+initialized class map
+* Locking: runtimeLock must be held by the caller
+**********************************************************************/
+static void addUninitializedClass(class_t *cls, class_t *metacls)
+{
+    OBJC_CHECK_LOCKED(&runtimeLock);
+    void *old;
+    old = NXMapInsert(uninitializedClasses(), metacls, cls);
+    assert(isRealized(metacls) ? isMetaClass(metacls) : metacls->data->flags & RO_META);
+    assert(! (isRealized(cls) ? isMetaClass(cls) : cls->data->flags & RO_META));
+    assert(!old);
+}
+
+
+static void removeUninitializedClass(class_t *cls)
+{
+    OBJC_CHECK_LOCKED(&runtimeLock);
+    NXMapRemove(uninitializedClasses(), cls->isa);
+}
+
+
+/***********************************************************************
+* _class_getNonMetaClass
+* Return the ordinary class for this class or metaclass. 
+* Used by +initialize. 
+* Locking: acquires runtimeLock
+**********************************************************************/
+__private_extern__ Class _class_getNonMetaClass(Class cls_gen)
+{
+    class_t *cls = newcls(cls_gen);
+    OBJC_LOCK(&runtimeLock);
+    if (isMetaClass(cls)) {
+        cls = NXMapGet(uninitializedClasses(), cls);
+        realizeClass(cls);
+    }
+    OBJC_UNLOCK(&runtimeLock);
+    
+    return (Class)cls;
+}
+
+
+
+/***********************************************************************
+* futureClasses
+* Returns the classname => future class map for unrealized future classes.
+* Locking: runtimeLock must be held by the caller
+**********************************************************************/
+static NXMapTable *futureClasses(void)
+{
+    OBJC_CHECK_LOCKED(&runtimeLock);
+
+    static NXMapTable *future_class_map = NULL;
+    
+    if (future_class_map) return future_class_map;
+
+    // future_class_map is big enough to hold CF's classes and a few others
+    future_class_map = NXCreateMapTableFromZone(NXStrValueMapPrototype, 32, 
+                                                _objc_internal_zone());
+
+    return future_class_map;
+}
+
+
+/***********************************************************************
+* addFutureClass
+* Installs cls as the class structure to use for the named class if it appears.
+* Locking: runtimeLock must be held by the caller
+**********************************************************************/
+static void addFutureClass(const char *name, class_t *cls)
+{
+    OBJC_CHECK_LOCKED(&runtimeLock);
+
+    if (PrintFuture) {
+        _objc_inform("FUTURE: reserving %p for %s", cls, name);
+    }
+
+    void *old;
+    old = NXMapKeyCopyingInsert(futureClasses(), name, cls);
+    assert(!old);
+}
+
+
+/***********************************************************************
+* removeFutureClass
+* Removes the named class from the unrealized future class list, 
+* because it has been realized.
+* Locking: runtimeLock must be held by the caller
+**********************************************************************/
+static void removeFutureClass(const char *name)
+{
+    OBJC_CHECK_LOCKED(&runtimeLock);
+
+    NXMapKeyFreeingRemove(futureClasses(), name);
+}
+
+
+/***********************************************************************
+* remappedClasses
+* Returns the oldClass => newClass map for realized future classes.
+* Locking: remapLock must be held by the caller
+**********************************************************************/
+static OBJC_DECLARE_LOCK(remapLock);
+static NXMapTable *remappedClasses(BOOL create)
+{
+    static NXMapTable *remapped_class_map = NULL;
+
+    OBJC_CHECK_LOCKED(&remapLock);
+
+    if (remapped_class_map) return remapped_class_map;
+
+    if (!create) return NULL;
+
+    // remapped_class_map is big enough to hold CF's classes and a few others
+    remapped_class_map = NXCreateMapTableFromZone(NXPtrValueMapPrototype, 32, 
+                                                  _objc_internal_zone());
+
+    return remapped_class_map;
+}
+
+
+/***********************************************************************
+* noClassesRemapped
+* Returns YES if no classes have been remapped
+* Locking: acquires remapLock
+**********************************************************************/
+static BOOL noClassesRemapped(void)
+{
+    OBJC_LOCK(&remapLock);
+    BOOL result = (remappedClasses(NO) == NULL);
+    OBJC_UNLOCK(&remapLock);
+    return result;
+}
+
+
+/***********************************************************************
+* addRemappedClass
+* newcls is a realized future class, replacing oldcls.
+* Locking: acquires remapLock
+**********************************************************************/
+static void addRemappedClass(class_t *oldcls, class_t *newcls)
+{
+    OBJC_LOCK(&remapLock);
+
+    if (PrintFuture) {
+        _objc_inform("FUTURE: using %p instead of %p for %s", 
+                     oldcls, newcls, getName(newcls));
+    }
+
+    void *old;
+    old = NXMapInsert(remappedClasses(YES), oldcls, newcls);
+    assert(!old);
+
+    OBJC_UNLOCK(&remapLock);
+}
+
+
+/***********************************************************************
+* remapClass
+* Returns the live class pointer for cls, which may be pointing to 
+* a class struct that has been reallocated.
+* Locking: acquires remapLock
+**********************************************************************/
+static class_t *remapClass(class_t *cls)
+{
+    OBJC_LOCK(&remapLock);
+    class_t *newcls = NXMapGet(remappedClasses(YES), cls);
+    OBJC_UNLOCK(&remapLock);
+    return newcls ? newcls : cls;
+}
+
+
+/***********************************************************************
+* remapClassRef
+* Fix up a class ref, in case the class referenced has been reallocated.
+* Locking: acquires remapLock
+**********************************************************************/
+static void remapClassRef(class_t **clsref)
+{
+    class_t *newcls = remapClass(*clsref);    
+    if (*clsref != newcls) *clsref = newcls;
+}
+
+
+/***********************************************************************
+* addSubclass
+* Adds subcls as a subclass of supercls.
+* Locking: runtimeLock must be held by the caller.
+**********************************************************************/
+static void addSubclass(class_t *supercls, class_t *subcls)
+{
+    OBJC_CHECK_LOCKED(&runtimeLock);
+
+    if (supercls  &&  subcls) {
+        assert(isRealized(supercls));
+        assert(isRealized(subcls));
+        subcls->data->nextSiblingClass = supercls->data->firstSubclass;
+        supercls->data->firstSubclass = subcls;
+    }
+}
+
+
+/***********************************************************************
+* removeSubclass
+* Removes subcls as a subclass of supercls.
+* Locking: runtimeLock must be held by the caller.
+**********************************************************************/
+static void removeSubclass(class_t *supercls, class_t *subcls)
+{
+    OBJC_CHECK_LOCKED(&runtimeLock);
+    assert(getSuperclass(subcls) == supercls);
+
+    class_t **cp;
+    for (cp = &supercls->data->firstSubclass; 
+         *cp  &&  *cp != subcls; 
+         cp = &(*cp)->data->nextSiblingClass)
+        ;
+    assert(*cp == subcls);
+    *cp = subcls->data->nextSiblingClass;
+}
+
+
+
+/***********************************************************************
+* protocols
+* Returns the protocol name => protocol map for protocols.
+* Locking: runtimeLock must be held by the caller
+**********************************************************************/
+static NXMapTable *protocols(void)
+{
+    static NXMapTable *protocol_map = NULL;
+    
+    OBJC_CHECK_LOCKED(&runtimeLock);
+
+    if (protocol_map) return protocol_map;
+
+    // fixme this doesn't work yet
+    // class_map 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. 
+    protocol_map = NXCreateMapTableFromZone(NXStrValueMapPrototype, 16, 
+                                            _objc_internal_zone());
+
+    return protocol_map;
+}
+
+
+/***********************************************************************
+* remapProtocol
+* Returns the live protocol pointer for proto, which may be pointing to 
+* a protocol struct that has been reallocated.
+* Locking: fixme
+**********************************************************************/
+static protocol_t *remapProtocol(protocol_t *proto)
+{
+    // OBJC_LOCK(&remapLock);
+    protocol_t *newproto = NXMapGet(protocols(), proto->name);
+    // OBJC_UNLOCK(&remapLock);
+    return newproto ? newproto : proto;
+}
+
+
+/***********************************************************************
+* remapProtocolRef
+* Fix up a protocol ref, in case the protocol referenced has been reallocated.
+* Locking: fixme
+**********************************************************************/
+static void remapProtocolRef(protocol_t **protoref)
+{
+    protocol_t *newproto = remapProtocol(*protoref);
+    if (*protoref != newproto) *protoref = newproto;
+}
+
+
+/***********************************************************************
+* moveIvars
+* Slides a class's ivars to accommodate the given superclass size.
+* Also slides ivar and weak GC layouts if provided.
+* Ivars are NOT compacted to compensate for a superclass that shrunk.
+* Locking: runtimeLock must be held by the caller.
+**********************************************************************/
+static void moveIvars(class_ro_t *ro, uint32_t superSize, 
+                      layout_bitmap *ivarBitmap, layout_bitmap *weakBitmap)
+{
+    OBJC_CHECK_LOCKED(&runtimeLock);
+
+    uint32_t diff;
+    uint32_t gcdiff;
+    uint32_t i;
+
+    assert(superSize > ro->instanceStart);
+    diff = superSize - ro->instanceStart;
+    gcdiff = diff;
+    *(uint32_t *)&ro->instanceStart += diff;
+
+    if (ro->ivars) {
+        for (i = 0; i < ro->ivars->count; i++) {
+            ivar_t *ivar = ivar_list_nth(ro->ivars, i);
+            // naively slide ivar
+            uint32_t oldOffset = (uint32_t)*ivar->offset;
+            uint32_t newOffset = oldOffset + diff;
+            // realign if needed
+            uint32_t alignMask = (1<<ivar->alignment)-1;
+            if (newOffset & alignMask) {
+                uint32_t alignedOffset = (newOffset + alignMask) & ~alignMask;
+                assert(alignedOffset > newOffset);
+                diff += alignedOffset - newOffset;
+                gcdiff += alignedOffset - newOffset;
+                newOffset = alignedOffset;
+            }
+            // newOffset is ready
+            *ivar->offset = newOffset;
+            // update ivar layouts
+            if (gcdiff != 0  &&  (oldOffset & 7) == 0) {
+                // this ivar's alignment hasn't been accounted for yet
+                if (ivarBitmap) {
+                    layout_bitmap_slide(ivarBitmap, 
+                                        (newOffset-gcdiff)>>3, newOffset>>3);
+                }
+                if (weakBitmap) {
+                    layout_bitmap_slide(weakBitmap, 
+                                        (newOffset-gcdiff)>>3, newOffset>>3);
+                }
+                gcdiff = 0;
+            }
+
+            if (PrintIvars) {
+                _objc_inform("IVARS:    offset %u -> %u for %s (size %u, align %u)", 
+                             oldOffset, newOffset, ivar->name, 
+                             ivar->size, 1<<ivar->alignment);
+            }
+        }
+    }
+
+    *(uint32_t *)&ro->instanceSize += diff;  // diff now includes alignment pad
+
+    if (!ro->ivars) {
+        // No ivars slid, but superclass changed size. 
+        // Expand bitmap in preparation for layout_bitmap_splat().
+        if (ivarBitmap) layout_bitmap_grow(ivarBitmap, ro->instanceSize>>3);
+        if (weakBitmap) layout_bitmap_grow(weakBitmap, ro->instanceSize>>3);
+    }
+
+#if !__LP64__
+#error wrong word size used in this function
+#endif
+}
+
+
+/***********************************************************************
+* getIvar
+* Look up an ivar by name.
+* Locking: runtimeLock must be held by the caller.
+**********************************************************************/
+static ivar_t *getIvar(class_t *cls, const char *name)
+{
+    OBJC_CHECK_LOCKED(&runtimeLock);
+
+    const ivar_list_t *ivars;
+    assert(isRealized(cls));
+    if ((ivars = cls->data->ro->ivars)) {
+        uint32_t i;
+        for (i = 0; i < ivars->count; i++) {
+            struct ivar_t *ivar = ivar_list_nth(ivars, i);
+            // ivar->name may be NULL for anonymous bitfields etc.
+            if (ivar->name  &&  0 == strcmp(name, ivar->name)) {
+                return ivar;
+            }
+        }
+    }
+
+    return NULL;
+}
+
+
+/***********************************************************************
+* realizeClass
+* Performs first-time initialization on class cls, 
+* including allocating its read-write data.
+* Returns the real class structure for the class. 
+* Locking: runtimeLock must be held by the caller
+**********************************************************************/
+static class_t *realizeClass(class_t *cls)
+{
+    OBJC_CHECK_LOCKED(&runtimeLock);
+
+    const class_ro_t *ro;
+    class_rw_t *rw;
+    class_t *supercls;
+    class_t *metacls;
+    BOOL isMeta;
+
+    if (!cls) return NULL;
+    if (isRealized(cls)) return cls;
+    assert(cls == remapClass(cls));
+
+    ro = (const class_ro_t *)cls->data;
+
+    isMeta = (ro->flags & RO_META) ? YES : NO;
+
+    if (PrintConnecting) {
+        _objc_inform("CLASS: realizing class '%s' %s %p %p", 
+                     ro->name, isMeta ? "(meta)" : "", cls, ro);
+    }
+
+    // Allocate writeable class data
+    rw = _calloc_internal(sizeof(class_rw_t), 1);
+    rw->flags = RW_REALIZED;
+    rw->version = isMeta ? 7 : 0;  // old runtime went up to 6
+    rw->ro = ro;
+
+    cls->data = rw;
+
+    // Realize superclass and metaclass, if they aren't already.
+    // This needs to be done after RW_REALIZED is set above, for root classes.
+    supercls = realizeClass(remapClass(cls->superclass));
+    metacls = realizeClass(remapClass(cls->isa));
+
+    // Check for remapped superclass
+    // fixme doesn't handle remapped metaclass
+    assert(metacls == cls->isa);
+    if (supercls != cls->superclass) {
+        cls->superclass = supercls;
+    }
+
+    /* debug: print them all
+    if (ro->ivars) {
+        uint32_t i;
+        for (i = 0; i < ro->ivars->count; i++) {
+            ivar_t *ivar = ivar_list_nth(ro->ivars, i);
+            _objc_inform("IVARS: %s.%s (offset %u, size %u, align %u)", 
+                         ro->name, ivar->name, 
+                         *ivar->offset, ivar->size, 1<<ivar->alignment);
+        }
+    }
+    */
+
+
+    if (supercls) {
+        // Non-fragile ivars - reconcile this class with its superclass
+        layout_bitmap ivarBitmap;
+        layout_bitmap weakBitmap;
+        BOOL layoutsChanged = NO;
+
+        if (UseGC) {
+            // fixme can optimize for "class has no new ivars", etc
+            // WARNING: gcc c++ sets instanceStart/Size=0 for classes with  
+            //   no local ivars, but does provide a layout bitmap. 
+            //   Handle that case specially so layout_bitmap_create doesn't die
+            //   The other ivar sliding code below still works fine, and 
+            //   the final result is a good class.
+            if (ro->instanceStart == 0  &&  ro->instanceSize == 0) {
+                // We can't use ro->ivarLayout because we don't know
+                // how long it is. Force a new layout to be created.
+                if (PrintIvars) {
+                    _objc_inform("IVARS: instanceStart/Size==0 for class %s; "
+                                 "disregarding ivar layout", ro->name);
+                }
+                ivarBitmap = 
+                    layout_bitmap_create(NULL, 
+                                         supercls->data->ro->instanceSize, 
+                                         supercls->data->ro->instanceSize, NO);
+                weakBitmap = 
+                    layout_bitmap_create(NULL, 
+                                         supercls->data->ro->instanceSize, 
+                                         supercls->data->ro->instanceSize, YES);
+                layoutsChanged = YES;
+            } else {
+                ivarBitmap = 
+                    layout_bitmap_create(ro->ivarLayout, 
+                                         ro->instanceSize, 
+                                         ro->instanceSize, NO);
+                weakBitmap = 
+                    layout_bitmap_create(ro->weakIvarLayout, 
+                                         ro->instanceSize,
+                                         ro->instanceSize, YES);
+            }
+        }
+
+        if (ro->instanceStart < supercls->data->ro->instanceSize) {
+            // Superclass has changed size. This class's ivars must move.
+            // Also slide layout bits in parallel.
+            // This code is incapable of compacting the subclass to 
+            //   compensate for a superclass that shrunk, so don't do that.
+            if (PrintIvars) {
+                _objc_inform("IVARS: sliding ivars for class %s "
+                             "(superclass was %u bytes, now %u)", 
+                             ro->name, ro->instanceStart, 
+                             supercls->data->ro->instanceSize);
+            }
+            class_ro_t *ro_w = make_ro_writeable(rw);
+            ro = rw->ro;
+            moveIvars(ro_w, supercls->data->ro->instanceSize, 
+                      UseGC ? &ivarBitmap : NULL, UseGC ? &weakBitmap : NULL);
+            layoutsChanged = YES;
+        } 
+        
+        if (UseGC) {
+            // Check superclass's layout against this class's layout.
+            // This needs to be done even if the superclass is not bigger.
+            layout_bitmap superBitmap = 
+                layout_bitmap_create(supercls->data->ro->ivarLayout, 
+                                     supercls->data->ro->instanceSize, 
+                                     supercls->data->ro->instanceSize, NO);
+            layoutsChanged |= layout_bitmap_splat(ivarBitmap, superBitmap, 
+                                                  ro->instanceStart);
+            layout_bitmap_free(superBitmap);
+
+            superBitmap = 
+                layout_bitmap_create(supercls->data->ro->weakIvarLayout, 
+                                     supercls->data->ro->instanceSize, 
+                                     supercls->data->ro->instanceSize, YES);
+            layoutsChanged |= layout_bitmap_splat(weakBitmap, superBitmap, 
+                                                  ro->instanceStart);
+            layout_bitmap_free(superBitmap);
+
+            if (layoutsChanged) {
+                // Rebuild layout strings. 
+                if (PrintIvars) {
+                    _objc_inform("IVARS: gc layout changed for class %s",
+                                 ro->name);
+                }
+                class_ro_t *ro_w = make_ro_writeable(rw);
+                ro = rw->ro;
+                ro_w->ivarLayout = layout_string_create(ivarBitmap);
+                ro_w->weakIvarLayout = layout_string_create(weakBitmap);
+            }
+
+            layout_bitmap_free(ivarBitmap);
+            layout_bitmap_free(weakBitmap);
+        }
+    }
+
+    // Connect this class to its superclass's subclass lists
+    if (supercls) {
+        addSubclass(supercls, cls);
+    }
+
+    if (!isMeta) {
+        addRealizedClass(cls, cls->data->ro->name);
+    } else {
+        // metaclasses don't go in the realized class map
+    }
+
+    return cls;
+}
+
+
+/***********************************************************************
+* getClass
+* Looks up a class by name with no hints, and realizes it.
+* Locking: runtimeLock must be held by the caller.
+**********************************************************************/
+static class_t *getClass(const char *name)
+{
+    OBJC_CHECK_LOCKED(&runtimeLock);
+
+    class_t *result;
+
+    // Try realized classes
+    result = (class_t *)NXMapGet(realizedClasses(), name);
+    if (result) return result;
+
+    // Try unrealized classes
+    result = (class_t *)NXMapGet(unrealizedClasses(), name);
+    if (result) return result;
+
+#if 0
+    // Try a classname symbol
+    result = getClassBySymbol(NULL, name);
+    if (result) {
+        result = realizeClass(remapClass(result));
+        return result;
+    }
+
+    if (!result) {
+        // fixme suck
+        realizeAllClasses();
+        result = (class_t *)NXMapGet(realizedClasses(), name);
+    }
+#endif
+
+
+    // darn
+    return NULL;
+}
+
+
+/***********************************************************************
+* realizeAllClassesInImage
+* Non-lazily realizes all unrealized classes in the given image.
+* Locking: runtimeLock must be held by the caller.
+**********************************************************************/
+static void realizeAllClassesInImage(header_info *hi)
+{
+    OBJC_CHECK_LOCKED(&runtimeLock);
+
+    size_t count, i;
+    class_t **classlist;
+
+    if (hi->allClassesRealized) return;
+
+    classlist = _getObjc2ClassList(hi, &count);
+
+    for (i = 0; i < count; i++) {
+        realizeClass(remapClass(classlist[i]));
+    }
+
+    hi->allClassesRealized = YES;
+}
+
+
+/***********************************************************************
+* realizeAllClasses
+* Non-lazily realizes all unrealized classes in all known images.
+* Locking: runtimeLock must be held by the caller.
+**********************************************************************/
+static void realizeAllClasses(void)
+{
+    OBJC_CHECK_LOCKED(&runtimeLock);
+
+    header_info *hi;
+    for (hi = _objc_headerStart(); hi; hi = hi->next) {
+        realizeAllClassesInImage(hi);
+    }
+}
+
+
+/***********************************************************************
+* _objc_allocateFutureClass
+* Allocate an unresolved future class for the given class name.
+* Returns any existing allocation if one was already made.
+* Assumes the named class doesn't exist yet.
+* Locking: acquires runtimeLock
+**********************************************************************/
+__private_extern__ Class _objc_allocateFutureClass(const char *name)
+{
+    OBJC_LOCK(&runtimeLock);
+
+    struct class_t *cls;
+    NXMapTable *future_class_map = futureClasses();
+
+    if ((cls = NXMapGet(future_class_map, name))) {
+        // Already have a future class for this name.
+        OBJC_UNLOCK(&runtimeLock);
+        return (Class)cls;
+    }
+
+    cls = _calloc_internal(sizeof(*cls), 1);
+    addFutureClass(name, cls);
+
+    OBJC_UNLOCK(&runtimeLock);
+    return (Class)cls;
+}
+
+
+/***********************************************************************
+* 
+**********************************************************************/
+void objc_setFutureClass(Class cls, const char *name)
+{
+    // fixme hack do nothing - NSCFString handled specially elsewhere
+}
+
+
+static BOOL addrInSeg(const void *addr_ptr, const segmentType *segment, 
+                      ptrdiff_t slide)
+{
+    uintptr_t base = segment->vmaddr + slide;
+    uintptr_t addr = (uintptr_t)addr_ptr;
+    size_t size = segment->filesize;
+
+    return (addr >= base  &&  addr < base + size);
+}
+
+static BOOL ptrInImageList(header_info **hList, uint32_t hCount, 
+                           const void *ptr)
+{
+    uint32_t i;
+
+    for (i = 0; i < hCount; i++) {
+        header_info *hi = hList[i];
+        if (addrInSeg(ptr, hi->dataSegmentHeader, hi->image_slide)) {
+            return YES;
+        }
+    }
+
+    return NO;
+}
+
+
+#define FOREACH_SUBCLASS(c, cls, code) \
+do { \
+    OBJC_CHECK_LOCKED(&runtimeLock); \
+    class_t *top = cls; \
+    class_t *c = top; \
+    if (c) while (1) { \
+        code \
+        if (c->data->firstSubclass) { \
+            c = c->data->firstSubclass; \
+        } else { \
+            while (!c->data->nextSiblingClass  &&  c != top) { \
+                c = getSuperclass(c); \
+            } \
+            if (c == top) break; \
+            c = c->data->nextSiblingClass; \
+        } \
+    } \
+} while (0)
+
+
+/***********************************************************************
+* flushCaches
+* Flushes caches for cls and its subclasses.
+* Locking: runtimeLock must be held by the caller.
+**********************************************************************/
+static void flushCaches(class_t *cls)
+{
+    OBJC_CHECK_LOCKED(&runtimeLock);
+
+    FOREACH_SUBCLASS(c, cls, {
+        flush_cache((Class)c);
+    });
+}
+
+
+/***********************************************************************
+* flush_caches
+* Flushes caches for cls, its subclasses, and optionally its metaclass.
+* Locking: acquires runtimeLock
+**********************************************************************/
+__private_extern__ void flush_caches(Class cls, BOOL flush_meta)
+{
+    OBJC_LOCK(&runtimeLock);
+    flushCaches(newcls(cls));
+    if (flush_meta) flushCaches(newcls(cls)->isa);
+    OBJC_UNLOCK(&runtimeLock);
+}
+
+
+/***********************************************************************
+* _read_images
+* Perform initial processing of the headers in the linked 
+* list beginning with headerList. 
+*
+* Called by: map_images
+*
+* Locking: acquires runtimeLock
+**********************************************************************/
+__private_extern__ void _read_images(header_info **hList, uint32_t hCount)
+{
+    header_info *hi;
+    uint32_t hIndex;
+    size_t count;
+    size_t i, j;
+    class_t **resolvedFutureClasses = NULL;
+    size_t resolvedFutureClassCount = 0;
+
+#define EACH_HEADER \
+    hIndex = 0; \
+    hIndex < hCount && (hi = hList[hIndex]);    \
+    hIndex++
+
+    OBJC_LOCK(&runtimeLock);
+    
+    // Complain about images that contain old-ABI data
+    // fixme new-ABI compiler still emits some bits into __OBJC segment
+    for (EACH_HEADER) {
+        size_t count;
+        if (_getObjcSelectorRefs(hi, &count)  || 
+            _getObjcModules(hi->mhdr, hi->image_slide, &count)) 
+        {
+            _objc_inform("found old-ABI metadata in image %s !", 
+                         hi->dl_info.dli_fname);
+        }
+    }
+
+    // fixme hack
+    static BOOL hackedNSCFString = NO;
+    if (!hackedNSCFString) {
+        // Insert future class __CFConstantStringClassReference == NSCFString
+        void *dlh = dlopen("/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation", RTLD_LAZY | RTLD_NOLOAD | RTLD_FIRST);
+        if (dlh) {
+            void *addr = dlsym(dlh, "__CFConstantStringClassReference");
+            if (addr) {
+                addFutureClass("NSCFString", (class_t *)addr);
+                hackedNSCFString = YES;
+            }
+            dlclose(dlh);
+        }
+    }
+
+    // Discover classes. Fix up unresolved future classes
+    NXMapTable *future_class_map = futureClasses();
+    for (EACH_HEADER) {
+        class_t **classlist = _getObjc2ClassList(hi, &count);
+        for (i = 0; i < count; i++) {
+            const char *name = getName(classlist[i]);
+            if (NXCountMapTable(future_class_map) > 0) {
+                class_t *newCls = NXMapGet(future_class_map, name);
+                if (newCls) {
+                    memcpy(newCls, classlist[i], sizeof(class_t));
+                    removeFutureClass(name);
+                    addRemappedClass(classlist[i], newCls);
+                    classlist[i] = newCls;
+                    // Non-lazily realize the class below.
+                    resolvedFutureClasses = (class_t **)
+                        _realloc_internal(resolvedFutureClasses, 
+                                          (resolvedFutureClassCount+1) 
+                                          * sizeof(class_t *));
+                    resolvedFutureClasses[resolvedFutureClassCount++] = newCls;
+                }
+            }
+            addUnrealizedClass(classlist[i], name);
+            addUninitializedClass(classlist[i], classlist[i]->isa);
+        }
+    }
+
+    // Fix up remapped classes
+    // classlist is up to date, but classrefs may not be
+    
+    if (!noClassesRemapped()) {
+        for (EACH_HEADER) {
+            class_t **classrefs = _getObjc2ClassRefs(hi, &count);
+            for (i = 0; i < count; i++) {
+                remapClassRef(&classrefs[i]);
+            }
+            // fixme why doesn't test future1 catch the absence of this?
+            classrefs = _getObjc2SuperRefs(hi, &count);
+            for (i = 0; i < count; i++) {
+                remapClassRef(&classrefs[i]);
+            }
+        }
+    }
+
+
+    // Fix up @selector references
+    sel_lock();
+    for (EACH_HEADER) {
+        SEL *sels = _getObjc2SelectorRefs(hi, &count);
+        BOOL isBundle = hi->mhdr->filetype == MH_BUNDLE;
+        for (i = 0; i < count; i++) {
+            sels[i] = sel_registerNameNoLock((const char *)sels[i], isBundle);
+        }
+    }
+    sel_unlock();
+
+    // Discover protocols. Fix up protocol refs.
+    NXMapTable *protocol_map = protocols();
+    for (EACH_HEADER) {
+        extern struct class_t OBJC_CLASS_$_Protocol;
+        Class cls = (Class)&OBJC_CLASS_$_Protocol;
+        assert(cls);
+        protocol_t **protocols = _getObjc2ProtocolList(hi, &count);
+        // fixme duplicate protocol from bundle
+        for (i = 0; i < count; i++) {
+            if (!NXMapGet(protocol_map, protocols[i]->name)) {
+                protocols[i]->isa = cls;
+                NXMapKeyCopyingInsert(protocol_map, 
+                                      protocols[i]->name, protocols[i]);
+                if (PrintProtocols) {
+                    _objc_inform("PROTOCOLS: protocol at %p is %s",
+                                 protocols[i], protocols[i]->name);
+                }
+            } else {
+                if (PrintProtocols) {
+                    _objc_inform("PROTOCOLS: protocol at %p is %s (duplicate)",
+                                 protocols[i], protocols[i]->name);
+                }
+            }
+        }
+    }
+    for (EACH_HEADER) {
+        protocol_t **protocols;
+        protocols = _getObjc2ProtocolRefs(hi, &count);
+        for (i = 0; i < count; i++) {
+            remapProtocolRef(&protocols[i]);
+        }
+
+        protocols = _getObjc2ProtocolList(hi, &count);
+        for (i = 0; i < count; i++) {
+            protocol_t *protocol = NXMapGet(protocol_map, protocols[i]->name);
+            assert(protocol);
+            if (protocol == protocols[i]  &&  protocol->protocols) {
+                if (PrintProtocols) {
+                    _objc_inform("PROTOCOLS: remapping superprotocols of %p %s", 
+                                 protocol, protocol->name);
+                }
+                for (j = 0; j < protocol->protocols->count; j++) {
+                    remapProtocolRef(&protocol->protocols->list[j]);
+                }
+            }
+        }
+    }
+
+    // Discover categories. 
+    for (EACH_HEADER) {
+        category_t **catlist = 
+            _getObjc2CategoryList(hi, &count);
+        for (i = 0; i < count; i++) {
+            category_t *cat = catlist[i];
+            // Do NOT use cat->cls! It may have been remapped.
+            class_t *cls = remapClass(cat->cls);
+
+            // Process this category. 
+            // First, register the category with its target class. 
+            // Then, flush the class's cache (and its subclasses) if 
+            // the class is methodized. The ptrInImageList() check 
+            // can discover !methodized without touching the class's memory.
+            // GrP fixme class's memory is already touched.
+            BOOL classExists = NO;
+            if (cat->instanceMethods ||  cat->protocols  
+                ||  cat->instanceProperties) 
+            {
+                addUnattachedCategoryForClass(cat, cls);
+                if (!ptrInImageList(hList, hCount, cls)  &&  
+                    isMethodized(cls))
+                {
+                    flushCaches(cls);
+                    classExists = YES;
+                }
+                if (PrintConnecting) {
+                    _objc_inform("CLASS: found category -%s(%s) %s\n", 
+                                 getName(cls), cat->name, 
+                                 classExists ? "on existing class" : "");
+                }
+            }
+
+            if (cat->classMethods  ||  cat->protocols  
+                /* ||  cat->classProperties */) 
+            {
+                addUnattachedCategoryForClass(cat, cls->isa);
+                if (!ptrInImageList(hList, hCount, cls->isa)  &&  
+                    isRealized(cls->isa))
+                {
+                    flushCaches(cls->isa);
+                }
+                if (PrintConnecting) {
+                    _objc_inform("CLASS: found category +%s(%s)", 
+                                 getName(cls), cat->name);
+                }
+            }
+        }
+    }
+
+
+    // Realize non-lazy classes (for +load methods and static instances)
+
+    for (EACH_HEADER) {
+        class_t **classlist = 
+            _getObjc2NonlazyClassList(hi, &count);
+        for (i = 0; i < count; i++) {
+            realizeClass(remapClass(classlist[i]));
+        }
+    }    
+
+    // Realize newly-resolved future classes, in case CF manipulates them
+    if (resolvedFutureClasses) {
+        for (i = 0; i < resolvedFutureClassCount; i++) {
+            realizeClass(resolvedFutureClasses[i]);
+        }
+        _free_internal(resolvedFutureClasses);
+    }    
+
+    // +load handled by prepare_load_methods()    
+
+
+    OBJC_UNLOCK(&runtimeLock);
+
+#undef EACH_HEADER
+}
+
+
+/***********************************************************************
+* prepare_load_methods
+* Schedule +load for classes in this image, any un-+load-ed 
+* superclasses in other images, and any categories in this image.
+**********************************************************************/
+// Recursively schedule +load for cls and any un-+load-ed superclasses.
+// cls must already be connected.
+static void schedule_class_load(class_t *cls)
+{
+    assert(isRealized(cls));  // _read_images should realize
+
+    if (cls->data->flags & RW_LOADED) return;
+
+    class_t *supercls = getSuperclass(cls);
+    if (supercls) schedule_class_load(supercls);
+
+    add_class_to_loadable_list((Class)cls);
+    changeInfo(cls, RW_LOADED, 0); 
+}
+
+__private_extern__ void prepare_load_methods(header_info *hi)
+{
+    size_t count, i;
+
+    OBJC_LOCK(&runtimeLock);
+
+    class_t **classlist = 
+        _getObjc2NonlazyClassList(hi, &count);
+    for (i = 0; i < count; i++) {
+        class_t *cls = remapClass(classlist[i]);
+        schedule_class_load(cls);
+    }
+
+    category_t **categorylist = _getObjc2NonlazyCategoryList(hi, &count);
+    for (i = 0; i < count; i++) {
+        category_t *cat = categorylist[i];
+        // Do NOT use cat->cls! It may have been remapped.
+        class_t *cls = remapClass(cat->cls);
+        realizeClass(cls);
+        assert(isRealized(cls->isa));
+        add_category_to_loadable_list((Category)cat);
+    }
+
+    OBJC_UNLOCK(&runtimeLock);
+}
+
+
+/***********************************************************************
+* _unload_image
+* Only handles MH_BUNDLE for now.
+**********************************************************************/
+__private_extern__ void _unload_image(header_info *hi)
+{
+    size_t count, i;
+
+    OBJC_LOCK(&runtimeLock);
+
+    // Unload unattached categories and categories waiting for +load.
+
+    category_t **catlist = _getObjc2CategoryList(hi, &count);
+    for (i = 0; i < count; i++) {
+        category_t *cat = catlist[i];
+        class_t *cls = remapClass(cat->cls);
+        // fixme for MH_DYLIB cat's class may have been unloaded already
+
+        // unattached list
+        removeUnattachedCategoryForClass(cat, cls);
+
+        // +load queue
+        remove_category_from_loadable_list((Category)cat);
+    }
+
+    // Unload classes.
+
+    class_t **classlist = _getObjc2ClassList(hi, &count);
+    for (i = 0; i < count; i++) {
+        class_t *cls = classlist[i];
+        const char *name = getName(cls);
+        // fixme remapped classes?
+
+        // +load queue
+        remove_class_from_loadable_list((Class)cls);
+
+        // categories not yet attached to this class
+        category_list *cats;
+        cats = unattachedCategoriesForClass(cls);
+        if (cats) free(cats);
+        cats = unattachedCategoriesForClass(cls);
+        if (cats) free(cats);
+
+        // subclass lists
+        class_t *supercls;
+        if ((supercls = getSuperclass(cls))) {
+            removeSubclass(supercls, cls);
+        }
+        if ((supercls = getSuperclass(cls->isa))) {
+            removeSubclass(supercls, cls->isa);
+        }
+        
+        // class tables
+        NXMapRemove(unrealizedClasses(), name);
+        NXMapRemove(realizedClasses(), name);
+        NXMapRemove(uninitializedClasses(), cls->isa);
+
+        // the class itself
+        if (isRealized(cls->isa)) unload_class(cls->isa);
+        if (isRealized(cls)) unload_class(cls);
+    }
+    
+    // Clean up protocols.
+#warning fixme protocol unload
+
+    // fixme DebugUnload
+
+    OBJC_UNLOCK(&runtimeLock);
+}
+
+
+/***********************************************************************
+* method_getDescription
+* Returns a pointer to this method's objc_method_description.
+* Locking: none
+**********************************************************************/
+struct objc_method_description *
+method_getDescription(Method m)
+{
+    if (!m) return NULL;
+    return (struct objc_method_description *)newmethod(m);
+}
+
+
+/***********************************************************************
+* method_getImplementation
+* Returns this method's IMP.
+* Locking: none
+**********************************************************************/
+IMP 
+method_getImplementation(Method m)
+{
+    if (!m) return NULL;
+    if (newmethod(m)->name == (SEL)kRTAddress_ignoredSelector) {
+        return (IMP)_objc_ignored_method;
+    }
+    return newmethod(m)->imp;
+}
+
+
+/***********************************************************************
+* method_getName
+* Returns this method's selector.
+* The method must not be NULL.
+* The method must already have been fixed-up.
+* Locking: none
+**********************************************************************/
+SEL 
+method_getName(Method m_gen)
+{
+    struct method_t *m = newmethod(m_gen);
+    if (!m) return NULL;
+    assert((SEL)m->name == sel_registerName((char *)m->name));
+    return (SEL)m->name;
+}
+
+
+/***********************************************************************
+* method_getTypeEncoding
+* Returns this method's old-style type encoding string.
+* The method must not be NULL.
+* Locking: none
+**********************************************************************/
+const char *
+method_getTypeEncoding(Method m)
+{
+    if (!m) return NULL;
+    return newmethod(m)->types;
+}
+
+
+/***********************************************************************
+* method_setImplementation
+* Sets this method's implementation to imp.
+* The previous implementation is returned.
+**********************************************************************/
+IMP 
+method_setImplementation(Method m, IMP imp)
+{
+    static OBJC_DECLARE_LOCK(impLock);
+    IMP old;
+
+    OBJC_LOCK(&impLock);
+    old = method_getImplementation(m);
+    newmethod(m)->imp = imp;
+    OBJC_UNLOCK(&impLock);
+
+    // No cache flushing needed.
+    // fixme update vtables if necessary
+    // fixme update monomorphism if necessary
+    return old;
+}
+
+
+/***********************************************************************
+* _class_realize
+* Realizes the given class.
+* Called by _class_lookupMethodAndLoadCache only.
+* Locking: acquires runtimeLock
+**********************************************************************/
+__private_extern__ void
+_class_realize(struct class_t *cls)
+{
+    OBJC_LOCK(&runtimeLock);
+    realizeClass(cls);
+    OBJC_UNLOCK(&runtimeLock);
+}
+
+
+
+/***********************************************************************
+* ivar_getOffset
+* fixme
+* Locking: none
+**********************************************************************/
+ptrdiff_t
+ivar_getOffset(Ivar ivar)
+{
+    if (!ivar) return 0;
+    return *newivar(ivar)->offset;
+}
+
+
+/***********************************************************************
+* ivar_getName
+* fixme
+* Locking: none
+**********************************************************************/
+const char *
+ivar_getName(Ivar ivar)
+{
+    if (!ivar) return NULL;
+    return newivar(ivar)->name;
+}
+
+
+/***********************************************************************
+* ivar_getTypeEncoding
+* fixme
+* Locking: none
+**********************************************************************/
+const char *
+ivar_getTypeEncoding(Ivar ivar)
+{
+    if (!ivar) return NULL;
+    return newivar(ivar)->type;
+}
+
+
+/***********************************************************************
+* _protocol_getMethod_nolock
+* Locking: runtimeLock must be held by the caller
+**********************************************************************/
+static Method 
+_protocol_getMethod_nolock(protocol_t *proto, SEL sel, 
+                           BOOL isRequiredMethod, BOOL isInstanceMethod)
+{
+    OBJC_CHECK_LOCKED(&runtimeLock);
+
+    uint32_t i;
+    if (!proto  ||  !sel) return NULL;
+
+    method_list_t *mlist = NULL;
+
+    if (isRequiredMethod) {
+        if (isInstanceMethod) {
+            mlist = proto->instanceMethods;
+        } else {
+            mlist = proto->classMethods;
+        }
+    } else {
+        if (isInstanceMethod) {
+            mlist = proto->optionalInstanceMethods;
+        } else {
+            mlist = proto->optionalClassMethods;
+        }
+    }
+
+    if (mlist) {
+        for (i = 0; i < mlist->count; i++) {
+            method_t *m = method_list_nth(mlist, i);
+            if (sel != m->name) {
+                m->name = sel_registerName((char *)m->name);
+            }
+            if (sel == m->name) {
+                return (Method)m;
+            }
+        }
+    }
+
+    if (proto->protocols) {
+        Method m;
+        for (i = 0; i < proto->protocols->count; i++) {
+            protocol_t *realProto = remapProtocol(proto->protocols->list[i]);
+            m = _protocol_getMethod_nolock(realProto, sel, 
+                                           isRequiredMethod, isInstanceMethod);
+            if (m) return m;
+        }
+    }
+
+    return NULL;
+}
+
+
+/***********************************************************************
+* _protocol_getMethod
+* fixme
+* Locking: acquires runtimeLock
+**********************************************************************/
+__private_extern__ Method 
+_protocol_getMethod(Protocol *p, SEL sel, BOOL isRequiredMethod, BOOL isInstanceMethod)
+{
+    OBJC_LOCK(&runtimeLock);
+    Method result = _protocol_getMethod_nolock(newprotocol(p), sel, 
+                                               isRequiredMethod,
+                                               isInstanceMethod);
+    OBJC_UNLOCK(&runtimeLock);
+    return result;
+}
+
+
+/***********************************************************************
+* protocol_getName
+* Returns the name of the given protocol.
+* Locking: runtimeLock must not be held by the caller
+**********************************************************************/
+const char *
+protocol_getName(Protocol *proto)
+{
+    return newprotocol(proto)->name;
+}
+
+
+/***********************************************************************
+* protocol_getInstanceMethodDescription
+* Returns the description of a named instance method.
+* Locking: runtimeLock must not be held by the caller
+**********************************************************************/
+struct objc_method_description 
+protocol_getMethodDescription(Protocol *p, SEL aSel, 
+                              BOOL isRequiredMethod, BOOL isInstanceMethod)
+{
+    Method m = 
+        _protocol_getMethod(p, aSel, isRequiredMethod, isInstanceMethod);
+    if (m) return *method_getDescription(m);
+    else return (struct objc_method_description){NULL, NULL};
+}
+
+
+/***********************************************************************
+* protocol_conformsToProtocol
+* Returns YES if self conforms to other.
+* Locking: runtimeLock must not be held by the caller
+**********************************************************************/
+BOOL protocol_conformsToProtocol(Protocol *self_gen, Protocol *other_gen)
+{
+    protocol_t *self = newprotocol(self_gen);
+    protocol_t *other = newprotocol(other_gen);
+
+    if (!self  ||  !other) {
+        return NO;
+    }
+
+    if (0 == strcmp(self->name, other->name)) {
+        return YES;
+    }
+
+    if (self->protocols) {
+        int i;
+        for (i = 0; i < self->protocols->count; i++) {
+            protocol_t *proto = self->protocols->list[i];
+            if (0 == strcmp(other->name, proto->name)) {
+                return YES;
+            }
+            if (protocol_conformsToProtocol((Protocol *)proto, other_gen)) {
+                return YES;
+            }
+        }
+    }
+
+    return NO;
+}
+
+
+/***********************************************************************
+* protocol_isEqual
+* Return YES if two protocols are equal (i.e. conform to each other)
+* Locking: acquires runtimeLock
+**********************************************************************/
+BOOL protocol_isEqual(Protocol *self, Protocol *other)
+{
+    if (self == other) return YES;
+    if (!self  ||  !other) return NO;
+
+    if (!protocol_conformsToProtocol(self, other)) return NO;
+    if (!protocol_conformsToProtocol(other, self)) return NO;
+
+    return YES;
+}
+
+
+/***********************************************************************
+* protocol_copyMethodDescriptionList
+* Returns descriptions of a protocol's methods.
+* Locking: acquires runtimeLock
+**********************************************************************/
+struct objc_method_description *
+protocol_copyMethodDescriptionList(Protocol *p, 
+                                   BOOL isRequiredMethod,BOOL isInstanceMethod,
+                                   unsigned int *outCount)
+{
+    struct protocol_t *proto = newprotocol(p);
+    struct objc_method_description *result = NULL;
+    unsigned int count = 0;
+
+    if (!proto) {
+        if (outCount) *outCount = 0;
+        return NULL;
+    }
+
+    OBJC_LOCK(&runtimeLock);
+
+    method_list_t *mlist = NULL;
+
+    if (isRequiredMethod) {
+        if (isInstanceMethod) {
+            mlist = proto->instanceMethods;
+        } else {
+            mlist = proto->classMethods;
+        }
+    } else {
+        if (isInstanceMethod) {
+            mlist = proto->optionalInstanceMethods;
+        } else {
+            mlist = proto->optionalClassMethods;
+        }
+    }
+
+    if (mlist) {
+        unsigned int i;
+        count = mlist->count;
+        result = calloc(count + 1, sizeof(struct objc_method_description));
+        for (i = 0; i < count; i++) {
+            method_t *m = method_list_nth(mlist, i);
+            result[i].name = sel_registerName((const char *)m->name);
+            result[i].types = (char *)m->types;
+        }
+    }
+
+    OBJC_UNLOCK(&runtimeLock);
+
+    if (outCount) *outCount = count;
+    return result;
+}
+
+
+/***********************************************************************
+* protocol_getProperty
+* fixme
+* Locking: acquires runtimeLock
+**********************************************************************/
+static Property 
+_protocol_getProperty_nolock(protocol_t *proto, const char *name, 
+                             BOOL isRequiredProperty, BOOL isInstanceProperty)
+{
+    if (!isRequiredProperty  ||  !isInstanceProperty) {
+        // Only required instance properties are currently supported
+        return NULL;
+    }
+
+    struct objc_property_list *plist;
+    if ((plist = proto->instanceProperties)) {
+        uint32_t i;
+        for (i = 0; i < plist->count; i++) {
+            Property prop = property_list_nth(plist, i);
+            if (0 == strcmp(name, prop->name)) {
+                return prop;
+            }
+        }
+    }
+
+    if (proto->protocols) {
+        uintptr_t i;
+        for (i = 0; i < proto->protocols->count; i++) {
+            Property prop = 
+                _protocol_getProperty_nolock(proto->protocols->list[i], name, 
+                                             isRequiredProperty, 
+                                             isInstanceProperty);
+            if (prop) return prop;
+        }
+    }
+
+    return NULL;
+}
+
+Property protocol_getProperty(Protocol *p, const char *name, 
+                              BOOL isRequiredProperty, BOOL isInstanceProperty)
+{
+    Property result;
+
+    if (!p  ||  !name) return NULL;
+
+    OBJC_LOCK(&runtimeLock);
+    result = _protocol_getProperty_nolock(newprotocol(p), name, 
+                                          isRequiredProperty, 
+                                          isInstanceProperty);
+    OBJC_UNLOCK(&runtimeLock);
+    
+    return result;
+}
+
+
+/***********************************************************************
+* protocol_copyPropertyList
+* fixme
+* Locking: acquires runtimeLock
+**********************************************************************/
+Property *protocol_copyPropertyList(Protocol *proto, unsigned int *outCount)
+{
+    Property *result = NULL;
+
+    if (!proto) {
+        if (outCount) *outCount = 0;
+        return NULL;
+    }
+
+    OBJC_LOCK(&runtimeLock);
+
+    struct objc_property_list *plist = newprotocol(proto)->instanceProperties;
+    result = copyPropertyList(plist, outCount);
+
+    OBJC_UNLOCK(&runtimeLock);
+
+    return result;
+}
+
+
+/***********************************************************************
+* protocol_copyProtocolList
+* Copies this protocol's incorporated protocols. 
+* Does not copy those protocol's incorporated protocols in turn.
+* Locking: acquires runtimeLock
+**********************************************************************/
+Protocol **protocol_copyProtocolList(Protocol *p, unsigned int *outCount)
+{
+    unsigned int count = 0;
+    Protocol **result = NULL;
+    protocol_t *proto = newprotocol(p);
+    
+    if (!proto) {
+        if (outCount) *outCount = 0;
+        return NULL;
+    }
+
+    OBJC_LOCK(&runtimeLock);
+
+    if (proto->protocols) {
+        count = (unsigned int)proto->protocols->count;
+    }
+    if (count > 0) {
+        result = malloc((count+1) * sizeof(Protocol *));
+
+        unsigned int i;
+        for (i = 0; i < count; i++) {
+            result[i] = (Protocol *)remapProtocol(proto->protocols->list[i]);
+        }
+        result[i] = NULL;
+    }
+
+    OBJC_UNLOCK(&runtimeLock);
+
+    if (outCount) *outCount = count;
+    return result;
+}
+
+
+/***********************************************************************
+* objc_getClassList
+* Returns pointers to all classes.
+* This requires all classes be realized, which is regretfully non-lazy.
+* Locking: acquires runtimeLock
+**********************************************************************/
+int 
+objc_getClassList(Class *buffer, int bufferLen) 
+{
+    OBJC_LOCK(&runtimeLock);
+
+    int count;
+    Class cls;
+    const char *name;
+    NXMapState state;
+    NXMapTable *classes = realizedClasses();
+    NXMapTable *unrealized = unrealizedClasses();
+
+    if (!buffer) {
+        count = NXCountMapTable(classes) + NXCountMapTable(unrealized);
+        OBJC_UNLOCK(&runtimeLock);
+        return count;
+    }
+
+    if (bufferLen > NXCountMapTable(classes)  &&
+        NXCountMapTable(unrealized) != 0) 
+    {
+        // bummer
+        realizeAllClasses();
+    }
+
+    count = 0;
+    state = NXInitMapState(classes);
+    while (count < bufferLen  &&  
+           NXNextMapState(classes, &state, 
+                          (const void **)&name, (const void **)&cls))
+    {
+        buffer[count++] = (Class)cls;
+    }
+
+    OBJC_UNLOCK(&runtimeLock);
+
+    return count;
+}
+
+
+/***********************************************************************
+* objc_copyProtocolList
+* Returns pointers to all protocols.
+* Locking: acquires runtimeLock
+**********************************************************************/
+Protocol **
+objc_copyProtocolList(unsigned int *outCount) 
+{
+    OBJC_LOCK(&runtimeLock);
+
+    int count, i;
+    Protocol *proto;
+    const char *name;
+    NXMapState state;
+    NXMapTable *protocol_map = protocols();
+    Protocol **result;
+
+    count = NXCountMapTable(protocol_map);
+    if (count == 0) {
+        OBJC_UNLOCK(&runtimeLock);
+        if (outCount) *outCount = 0;
+        return NULL;
+    }
+
+    result = calloc(1 + count, sizeof(Protocol *));
+
+    i = 0;
+    state = NXInitMapState(protocol_map);
+    while (NXNextMapState(protocol_map, &state, 
+                          (const void **)&name, (const void **)&proto))
+    {
+        result[i++] = proto;
+    }
+    
+    result[i++] = NULL;
+    assert(i == count+1);
+
+    OBJC_UNLOCK(&runtimeLock);
+
+    if (outCount) *outCount = count;
+    return result;
+}
+
+
+/***********************************************************************
+* objc_getProtocol
+* Get a protocol by name, or return NULL
+* Locking: acquires runtimeLock
+**********************************************************************/
+Protocol *objc_getProtocol(const char *name)
+{
+    OBJC_LOCK(&runtimeLock); 
+    Protocol *result = (Protocol *)NXMapGet(protocols(), name);
+    OBJC_UNLOCK(&runtimeLock);
+    return result;
+}
+
+
+/***********************************************************************
+* class_copyMethodList
+* fixme
+* Locking: acquires runtimeLock
+**********************************************************************/
+Method *
+class_copyMethodList(Class cls_gen, unsigned int *outCount)
+{
+    struct class_t *cls = newcls(cls_gen);
+    chained_method_list *mlist;
+    unsigned int count = 0;
+    Method *result = NULL;
+
+    if (!cls) {
+        if (outCount) *outCount = 0;
+        return NULL;
+    }
+
+    OBJC_LOCK(&runtimeLock);
+    
+    assert(isRealized(cls));
+
+    methodizeClass(cls);
+
+    for (mlist = cls->data->methods; mlist; mlist = mlist->next) {
+        count += mlist->count;
+    }
+
+    if (count > 0) {
+        unsigned int m;
+        result = malloc((count + 1) * sizeof(Method));
+        
+        m = 0;
+        for (mlist = cls->data->methods; mlist; mlist = mlist->next) {
+            unsigned int i;
+            for (i = 0; i < mlist->count; i++) {
+                result[m++] = (Method)&mlist->list[i];
+            }
+        }
+        result[m] = NULL;
+    }
+
+    OBJC_UNLOCK(&runtimeLock);
+
+    if (outCount) *outCount = count;
+    return result;
+}
+
+
+/***********************************************************************
+* class_copyIvarList
+* fixme
+* Locking: acquires runtimeLock
+**********************************************************************/
+Ivar *
+class_copyIvarList(Class cls_gen, unsigned int *outCount)
+{
+    struct class_t *cls = newcls(cls_gen);
+    const ivar_list_t *ivars;
+    Ivar *result = NULL;
+    unsigned int count = 0;
+    unsigned int i;
+
+    if (!cls) {
+        if (outCount) *outCount = 0;
+        return NULL;
+    }
+
+    OBJC_LOCK(&runtimeLock);
+
+    assert(isRealized(cls));
+    
+    if ((ivars = cls->data->ro->ivars)  &&  (count = ivars->count)) {
+        result = malloc((count+1) * sizeof(Ivar));
+        
+        for (i = 0; i < ivars->count; i++) {
+            result[i] = (Ivar)ivar_list_nth(ivars, i);
+        }
+        result[i] = NULL;
+    }
+
+    OBJC_UNLOCK(&runtimeLock);
+    
+    if (outCount) *outCount = count;
+    return result;
+}
+
+
+/***********************************************************************
+* class_copyPropertyList. Returns a heap block containing the 
+* properties declared in the class, or NULL if the class 
+* declares no properties. Caller must free the block.
+* Does not copy any superclass's properties.
+* Locking: acquires runtimeLock
+**********************************************************************/
+Property *
+class_copyPropertyList(Class cls_gen, unsigned int *outCount)
+{
+    struct class_t *cls = newcls(cls_gen);
+    chained_property_list *plist;
+    unsigned int count = 0;
+    Property *result = NULL;
+
+    if (!cls) {
+        if (outCount) *outCount = 0;
+        return NULL;
+    }
+
+    OBJC_LOCK(&runtimeLock);
+
+    assert(isRealized(cls));
+
+    // Attach any categories because they may provide more properties
+    methodizeClass(cls);
+
+    for (plist = cls->data->properties; plist; plist = plist->next) {
+        count += plist->count;
+    }
+
+    if (count > 0) {
+        unsigned int p;
+        result = malloc((count + 1) * sizeof(Property));
+        
+        p = 0;
+        for (plist = cls->data->properties; plist; plist = plist->next) {
+            unsigned int i;
+            for (i = 0; i < plist->count; i++) {
+                result[p++] = (Property)&plist->list[i];
+            }
+        }
+        result[p] = NULL;
+    }
+
+    OBJC_UNLOCK(&runtimeLock);
+
+    if (outCount) *outCount = count;
+    return result;
+}
+
+
+/***********************************************************************
+* _class_getLoadMethod
+* fixme
+* Called only from add_class_to_loadable_list.
+* Locking: runtimeLock must be held by the caller.
+**********************************************************************/
+__private_extern__ IMP 
+_class_getLoadMethod(Class cls_gen)
+{
+    OBJC_CHECK_LOCKED(&runtimeLock);
+
+    struct class_t *cls = newcls(cls_gen);
+    const method_list_t *mlist;
+    int i;
+
+    assert(isRealized(cls));
+    assert(isRealized(cls->isa));
+    assert(!isMethodized(cls));
+    assert(!isMethodized(cls->isa));
+    assert(!isMetaClass(cls));
+    assert(isMetaClass(cls->isa));
+
+    mlist = cls->isa->data->ro->baseMethods;
+    if (mlist) for (i = 0; i < mlist->count; i++) {
+        method_t *m = method_list_nth(mlist, i);
+        if (0 == strcmp((const char *)m->name, "load")) {
+            return m->imp;
+        }
+    }
+
+    return NULL;
+}
+
+
+/***********************************************************************
+* _category_getName
+* Returns a category's name.
+* Locking: none
+**********************************************************************/
+__private_extern__ const char *
+_category_getName(Category cat)
+{
+    return newcategory(cat)->name;
+}
+
+
+/***********************************************************************
+* _category_getClassName
+* Returns a category's class's name
+* Called only from add_category_to_loadable_list and 
+* remove_category_from_loadable_list.
+* Locking: runtimeLock must be held by the caller
+**********************************************************************/
+__private_extern__ const char *
+_category_getClassName(Category cat)
+{
+    OBJC_CHECK_LOCKED(&runtimeLock);
+    // cat->cls may have been remapped
+    return getName(remapClass(newcategory(cat)->cls));
+}
+
+
+/***********************************************************************
+* _category_getClass
+* Returns a category's class
+* Called only by call_category_loads.
+* Locking: none
+**********************************************************************/
+__private_extern__ Class 
+_category_getClass(Category cat)
+{
+    // cat->cls may have been remapped
+    struct class_t *result = remapClass(newcategory(cat)->cls);
+    assert(isRealized(result));  // ok for call_category_loads' usage
+    return (Class)result;
+}
+
+
+/***********************************************************************
+* _category_getLoadMethod
+* fixme
+* Called only from add_category_to_loadable_list
+* Locking: runtimeLock must be held by the caller
+**********************************************************************/
+__private_extern__ IMP 
+_category_getLoadMethod(Category cat)
+{
+    OBJC_CHECK_LOCKED(&runtimeLock);
+
+    const method_list_t *mlist;
+    int i;
+
+    mlist = newcategory(cat)->classMethods;
+    if (mlist) for (i = 0; i < mlist->count; i++) {
+        method_t *m = method_list_nth(mlist, i);
+        if (0 == strcmp((const char *)m->name, "load")) {
+            return m->imp;
+        }
+    }
+
+    return NULL;
+}
+
+
+/***********************************************************************
+* class_copyProtocolList
+* fixme
+* Locking: acquires runtimeLock
+**********************************************************************/
+Protocol **
+class_copyProtocolList(Class cls_gen, unsigned int *outCount)
+{
+    struct class_t *cls = newcls(cls_gen);
+    Protocol **r;
+    struct protocol_list_t **p;
+    unsigned int count = 0;
+    unsigned int i;
+    Protocol **result = NULL;
+    
+    if (!cls) {
+        if (outCount) *outCount = 0;
+        return NULL;
+    }
+
+    OBJC_LOCK(&runtimeLock);
+
+    assert(isRealized(cls));
+    
+    // Attach any categories because they may provide more protocols
+    methodizeClass(cls);
+    
+    for (p = cls->data->protocols; p  &&  *p; p++) {
+        count += (uint32_t)(*p)->count;
+    }
+
+    if (count) {
+        result = malloc((count+1) * sizeof(Protocol *));
+        r = result;
+        for (p = cls->data->protocols; p  &&  *p; p++) {
+            for (i = 0; i < (*p)->count; i++) {
+                *r++ = (Protocol *)remapProtocol((*p)->list[i]);
+            }
+        }
+        *r++ = NULL;
+    }
+
+    OBJC_UNLOCK(&runtimeLock);
+
+    if (outCount) *outCount = count;
+    return result;
+}
+
+
+/***********************************************************************
+* _objc_copyClassNamesForImage
+* fixme
+* Locking: acquires runtimeLock
+**********************************************************************/
+__private_extern__ const char **
+_objc_copyClassNamesForImage(header_info *hi, unsigned int *outCount)
+{
+    size_t count, i;
+    class_t **classlist;
+    const char **names;
+    
+    OBJC_LOCK(&runtimeLock);
+    
+    classlist = _getObjc2ClassList(hi, &count);
+    names = malloc((count+1) * sizeof(const char *));
+    
+    for (i = 0; i < count; i++) {
+        names[i] = getName(classlist[i]);
+    }
+    names[count] = NULL;
+
+    OBJC_UNLOCK(&runtimeLock);
+
+    if (outCount) *outCount = (unsigned int)count;
+    return names;
+}
+
+
+/***********************************************************************
+* _class_getCache
+* fixme
+* Locking: none
+**********************************************************************/
+__private_extern__ Cache 
+_class_getCache(Class cls)
+{
+    return newcls(cls)->cache;
+}
+
+
+/***********************************************************************
+* _class_getInstanceSize
+* fixme
+* Locking: none
+**********************************************************************/
+__private_extern__ size_t 
+_class_getInstanceSize(Class cls)
+{
+    if (!cls) return 0;
+    return instanceSize(newcls(cls));
+}
+
+static uint32_t
+instanceSize(struct class_t *cls)
+{
+    assert(cls);
+    assert(isRealized(cls));
+    // fixme rdar://5244378
+    return (uint32_t)((cls->data->ro->instanceSize + 7) & ~7UL);
+}
+
+
+/***********************************************************************
+* class_getVersion
+* fixme
+* Locking: none
+**********************************************************************/
+int 
+class_getVersion(Class cls)
+{
+    if (!cls) return 0;
+    assert(isRealized(newcls(cls)));
+    return newcls(cls)->data->version;
+}
+
+
+/***********************************************************************
+* _class_setCache
+* fixme
+* Locking: none
+**********************************************************************/
+__private_extern__ void 
+_class_setCache(Class cls, Cache cache)
+{
+    newcls(cls)->cache = cache;
+}
+
+
+/***********************************************************************
+* class_setVersion
+* fixme
+* Locking: none
+**********************************************************************/
+void 
+class_setVersion(Class cls, int version)
+{
+    if (!cls) return;
+    assert(isRealized(newcls(cls)));
+    newcls(cls)->data->version = version;
+}
+
+
+/***********************************************************************
+* _class_getName
+* fixme
+* Locking: acquires runtimeLock
+**********************************************************************/
+__private_extern__ const char *_class_getName(Class cls)
+{
+    if (!cls) return "nil";
+    // fixme hack OBJC_LOCK(&runtimeLock);
+    const char *name = getName(newcls(cls));
+    // OBJC_UNLOCK(&runtimeLock);
+    return name;
+}
+
+
+/***********************************************************************
+* getName
+* fixme
+* Locking: runtimeLock must be held by the caller
+**********************************************************************/
+static const char *
+getName(struct class_t *cls)
+{
+    // fixme hack OBJC_CHECK_LOCKED(&runtimeLock);
+    assert(cls);
+
+    if (isRealized(cls)) {
+        return cls->data->ro->name;
+    } else {
+        return ((const struct class_ro_t *)cls->data)->name;
+    }
+}
+
+
+/***********************************************************************
+* _class_getMethodNoSuper_nolock
+* fixme
+* Locking: runtimeLock must be held by the caller
+**********************************************************************/
+static Method 
+_class_getMethodNoSuper_nolock(struct class_t *cls, SEL sel)
+{
+    OBJC_CHECK_LOCKED(&runtimeLock);
+
+    chained_method_list *mlist;
+    uint32_t i;
+
+    assert(isRealized(cls));
+    // fixme nil cls? 
+    // fixme NULL sel?
+
+    methodizeClass(cls);
+
+    for (mlist = cls->data->methods; mlist; mlist = mlist->next) {
+        for (i = 0; i < mlist->count; i++) {
+            method_t *m = &mlist->list[i];
+            if (m->name == sel) return (Method)m;
+        }
+    }
+
+    return NULL;
+}
+
+
+/***********************************************************************
+* _class_getMethodNoSuper
+* fixme
+* Locking: acquires runtimeLock
+**********************************************************************/
+__private_extern__ Method 
+_class_getMethodNoSuper(Class cls, SEL sel)
+{
+    OBJC_LOCK(&runtimeLock);
+    Method result = _class_getMethodNoSuper_nolock(newcls(cls), sel);
+    OBJC_UNLOCK(&runtimeLock);
+    return result;
+}
+
+
+/***********************************************************************
+* _class_getMethod
+* fixme
+* Locking: acquires runtimeLock
+**********************************************************************/
+__private_extern__ Method _class_getMethod(Class cls, SEL sel)
+{
+    Method m = NULL;
+
+    // fixme nil cls?
+    // fixme NULL sel?
+
+    assert(isRealized(newcls(cls)));
+
+    while (cls  &&  ((m = _class_getMethodNoSuper(cls, sel))) == NULL) {
+        cls = class_getSuperclass(cls);
+    }
+
+    return m;
+}
+
+
+/***********************************************************************
+* class_getProperty
+* fixme
+* Locking: acquires runtimeLock
+**********************************************************************/
+Property class_getProperty(Class cls_gen, const char *name)
+{
+    Property result = NULL;
+    chained_property_list *plist;
+    struct class_t *cls = newcls(cls_gen);
+
+    if (!cls  ||  !name) return NULL;
+
+    OBJC_LOCK(&runtimeLock);
+
+    assert(isRealized(cls));
+    methodizeClass(cls);
+
+    for ( ; cls; cls = getSuperclass(cls)) {
+        for (plist = cls->data->properties; plist; plist = plist->next) {
+            uint32_t i;
+            for (i = 0; i < plist->count; i++) {
+                if (0 == strcmp(name, plist->list[i].name)) {
+                    result = &plist->list[i];
+                    goto done;
+                }
+            }
+        }
+    }
+
+ done:
+    OBJC_UNLOCK(&runtimeLock);
+
+    return result;
+}
+
+
+/***********************************************************************
+* Locking: fixme
+**********************************************************************/
+__private_extern__ BOOL _class_isMetaClass(Class cls)
+{
+    if (!cls) return NO;
+    return isMetaClass(newcls(cls));
+}
+
+static BOOL 
+isMetaClass(struct class_t *cls)
+{
+    assert(cls);
+    assert(isRealized(cls));
+    return (cls->data->ro->flags & RO_META) ? YES : NO;
+}
+
+
+__private_extern__ Class _class_getMeta(Class cls)
+{
+    assert(cls);
+    if (isMetaClass(newcls(cls))) return cls;
+    else return ((id)cls)->isa;
+}
+
+
+/***********************************************************************
+* Locking: fixme
+**********************************************************************/
+__private_extern__ BOOL 
+_class_isInitializing(Class cls_gen)
+{
+    struct class_t *cls = newcls(_class_getMeta(cls_gen));
+    return (cls->data->flags & RW_INITIALIZING) ? YES : NO;
+}
+
+
+/***********************************************************************
+* Locking: fixme
+**********************************************************************/
+__private_extern__ BOOL 
+_class_isInitialized(Class cls_gen)
+{
+    struct class_t *cls = newcls(_class_getMeta(cls_gen));
+    return (cls->data->flags & RW_INITIALIZED) ? YES : NO;
+}
+
+
+/***********************************************************************
+* Locking: fixme
+**********************************************************************/
+__private_extern__ void 
+_class_setInitializing(Class cls_gen)
+{
+    struct class_t *cls = newcls(_class_getMeta(cls_gen));
+    changeInfo(cls, RW_INITIALIZING, 0);
+}
+
+
+/***********************************************************************
+* Locking: fixme
+**********************************************************************/
+__private_extern__ void 
+_class_setInitialized(Class cls_gen)
+{
+    struct class_t *cls = newcls(_class_getMeta(cls_gen));
+    changeInfo(cls, RW_INITIALIZED, RW_INITIALIZING);
+}
+
+
+/***********************************************************************
+* Locking: fixme
+**********************************************************************/
+__private_extern__ BOOL 
+_class_shouldGrowCache(Class cls)
+{
+    return YES; // fixme good or bad for memory use?
+}
+
+
+/***********************************************************************
+* Locking: fixme
+**********************************************************************/
+__private_extern__ void 
+_class_setGrowCache(Class cls, BOOL grow)
+{
+    // fixme good or bad for memory use?
+}
+
+
+/***********************************************************************
+* _class_isLoadable
+* fixme
+* Locking: none
+**********************************************************************/
+__private_extern__ BOOL 
+_class_isLoadable(Class cls)
+{
+    assert(isRealized(newcls(cls)));
+    return YES;  // any class registered for +load is definitely loadable
+}
+
+
+/***********************************************************************
+* Locking: fixme
+**********************************************************************/
+__private_extern__ BOOL 
+_class_hasCxxStructorsNoSuper(Class cls)
+{
+    assert(isRealized(newcls(cls)));
+    return (newcls(cls)->data->ro->flags & RO_HAS_CXX_STRUCTORS) ? YES : NO;
+}
+
+
+/***********************************************************************
+* Locking: fixme
+**********************************************************************/
+__private_extern__ BOOL
+_class_shouldFinalizeOnMainThread(Class cls)
+{
+    assert(isRealized(newcls(cls)));
+    return (newcls(cls)->data->flags & RW_FINALIZE_ON_MAIN_THREAD) ? YES : NO;
+}
+
+
+/***********************************************************************
+* Locking: fixme
+**********************************************************************/
+__private_extern__ void
+_class_setFinalizeOnMainThread(Class cls)
+{
+    assert(isRealized(newcls(cls)));
+    changeInfo(newcls(cls), RW_FINALIZE_ON_MAIN_THREAD, 0);
+}
+
+
+/***********************************************************************
+* Locking: none
+* fixme assert realized to get superclass remapping?
+**********************************************************************/
+__private_extern__ Class 
+_class_getSuperclass(Class cls)
+{
+    return (Class)getSuperclass(newcls(cls));
+}
+
+static struct class_t *
+getSuperclass(struct class_t *cls)
+{
+    if (!cls) return NULL;
+    return cls->superclass;
+}
+
+
+/***********************************************************************
+* class_getIvarLayout
+* Called by the garbage collector. 
+* The class must be NULL or already realized. 
+* Locking: none
+**********************************************************************/
+const char *
+class_getIvarLayout(Class cls_gen)
+{
+    class_t *cls = newcls(cls_gen);
+    if (cls) return (const char *)cls->data->ro->ivarLayout;
+    else return NULL;
+}
+
+
+/***********************************************************************
+* class_getWeakIvarLayout
+* Called by the garbage collector. 
+* The class must be NULL or already realized. 
+* Locking: none
+**********************************************************************/
+const char *
+class_getWeakIvarLayout(Class cls_gen)
+{
+    class_t *cls = newcls(cls_gen);
+    if (cls) return (const char *)cls->data->ro->weakIvarLayout;
+    else return NULL;
+}
+
+
+/***********************************************************************
+* class_setIvarLayout
+* Changes the class's GC scan layout.
+* NULL layout means no unscanned ivars
+* The class must be under construction.
+* fixme: sanity-check layout vs instance size?
+* fixme: sanity-check layout vs superclass?
+* Locking: acquires runtimeLock
+**********************************************************************/
+void
+class_setIvarLayout(Class cls_gen, const char *layout)
+{
+    class_t *cls = newcls(cls_gen);
+    if (!cls) return;
+
+    OBJC_LOCK(&runtimeLock);
+    
+    // Can only change layout of in-construction classes.
+    // note: if modifications to post-construction classes were 
+    //   allowed, there would be a race below (us vs. concurrent GC scan)
+    if (!(cls->data->flags & RW_CONSTRUCTING)) {
+        _objc_inform("*** Can't set ivar layout for already-registered "
+                     "class '%s'", getName(cls));
+        OBJC_UNLOCK(&runtimeLock);
+        return;
+    }
+
+    class_ro_t *ro_w = make_ro_writeable(cls->data);
+
+    try_free(ro_w->ivarLayout);
+    ro_w->ivarLayout = (unsigned char *)_strdup_internal(layout);
+
+    OBJC_UNLOCK(&runtimeLock);
+}
+
+
+/***********************************************************************
+* class_setWeakIvarLayout
+* Changes the class's GC weak layout.
+* NULL layout means no weak ivars
+* The class must be under construction.
+* fixme: sanity-check layout vs instance size?
+* fixme: sanity-check layout vs superclass?
+* Locking: acquires runtimeLock
+**********************************************************************/
+void
+class_setWeakIvarLayout(Class cls_gen, const char *layout)
+{
+    class_t *cls = newcls(cls_gen);
+    if (!cls) return;
+
+    OBJC_LOCK(&runtimeLock);
+    
+    // Can only change layout of in-construction classes.
+    // note: if modifications to post-construction classes were 
+    //   allowed, there would be a race below (us vs. concurrent GC scan)
+    if (!(cls->data->flags & RW_CONSTRUCTING)) {
+        _objc_inform("*** Can't set weak ivar layout for already-registered "
+                     "class '%s'", getName(cls));
+        OBJC_UNLOCK(&runtimeLock);
+        return;
+    }
+
+    class_ro_t *ro_w = make_ro_writeable(cls->data);
+
+    try_free(ro_w->weakIvarLayout);
+    ro_w->weakIvarLayout = (unsigned char *)_strdup_internal(layout);
+
+    OBJC_UNLOCK(&runtimeLock);
+}
+
+
+/***********************************************************************
+* _class_getVariable
+* fixme
+* Locking: acquires runtimeLock
+**********************************************************************/
+__private_extern__ Ivar 
+_class_getVariable(Class cls, const char *name)
+{
+    OBJC_LOCK(&runtimeLock);
+
+    for ( ; cls != Nil; cls = class_getSuperclass(cls)) {
+        struct ivar_t *ivar = getIvar(newcls(cls), name);
+        if (ivar) {
+            OBJC_UNLOCK(&runtimeLock);
+            return (Ivar)ivar;
+        }
+    }
+
+    OBJC_UNLOCK(&runtimeLock);
+
+    return NULL;
+}
+
+
+/***********************************************************************
+* class_conformsToProtocol
+* fixme
+* Locking: acquires runtimeLock
+**********************************************************************/
+BOOL class_conformsToProtocol(Class cls_gen, Protocol *proto)
+{
+    Protocol **protocols;
+    unsigned int count, i;
+    BOOL result = NO;
+
+    // fixme null cls?
+
+    protocols = class_copyProtocolList(cls_gen, &count);
+
+    for (i = 0; i < count; i++) {
+        if (protocols[i] == proto  ||  
+            protocol_conformsToProtocol(protocols[i], proto)) 
+        {
+            result = YES;
+            break;
+        }
+    }
+
+    if (protocols) free(protocols);
+
+    return result;
+}
+
+
+/***********************************************************************
+* class_addMethod
+* fixme
+* Locking: acquires runtimeLock
+**********************************************************************/
+static IMP 
+_class_addMethod(Class cls_gen, SEL name, IMP imp, 
+                 const char *types, BOOL replace)
+{
+    struct class_t *cls = newcls(cls_gen);
+    IMP result = NULL;
+
+    if (!types) types = "";
+
+    OBJC_LOCK(&runtimeLock);
+
+    assert(isRealized(cls));
+    // methodizeClass(cls);  _class_getMethodNoSuper() does this below
+
+    Method m;
+    if ((m = _class_getMethodNoSuper_nolock(cls, name))) {
+        // already exists
+        // fixme atomic
+        result = method_getImplementation(m);
+        if (replace) {
+            method_setImplementation(m, imp);
+        }
+    } else {
+        // fixme optimize
+        chained_method_list *newlist;
+        newlist = _calloc_internal(sizeof(*newlist) + sizeof(method_t), 1);
+        newlist->count = 1;
+        newlist->list[0].name = name;
+        newlist->list[0].types = strdup(types);
+        newlist->list[0].imp = imp;
+
+        newlist->next = cls->data->methods;
+        cls->data->methods = newlist;
+        flushCaches(cls);
+        result = NULL;
+    }
+
+    OBJC_UNLOCK(&runtimeLock);
+
+    return result;
+}
+
+
+BOOL 
+class_addMethod(Class cls, SEL name, IMP imp, const char *types)
+{
+    if (!cls) return NO;
+
+    IMP old = _class_addMethod(cls, name, imp, types, NO);
+    return old ? NO : YES;
+}
+
+
+IMP 
+class_replaceMethod(Class cls, SEL name, IMP imp, const char *types)
+{
+    if (!cls) return NULL;
+
+    return _class_addMethod(cls, name, imp, types, YES);
+}
+
+
+/***********************************************************************
+* class_addIvar
+* Adds an ivar to a class.
+* Locking: acquires runtimeLock
+**********************************************************************/
+BOOL 
+class_addIvar(Class cls_gen, const char *name, size_t size, 
+              uint8_t alignment, const char *type)
+{
+    struct class_t *cls = newcls(cls_gen);
+
+    if (!cls) return NO;
+
+    if (!type) type = "";
+    if (name  &&  0 == strcmp(name, "")) name = NULL;
+
+    OBJC_LOCK(&runtimeLock);
+
+    assert(isRealized(cls));
+
+    // No class variables
+    if (isMetaClass(cls)) {
+        OBJC_UNLOCK(&runtimeLock);
+        return NO;
+    }
+
+    // Can only add ivars to in-construction classes.
+    if (!(cls->data->flags & RW_CONSTRUCTING)) {
+        OBJC_UNLOCK(&runtimeLock);
+        return NO;
+    }
+
+    // Check for existing ivar with this name, unless it's anonymous.
+    // Check for too-big ivar.
+    // fixme check for superclass ivar too?
+    if ((name  &&  getIvar(cls, name))  ||  size > UINT32_MAX) {
+        OBJC_UNLOCK(&runtimeLock);
+        return NO;
+    }
+
+    class_ro_t *ro_w = make_ro_writeable(cls->data);
+
+    // fixme allocate less memory here
+    
+    ivar_list_t *oldlist, *newlist;
+    if ((oldlist = (ivar_list_t *)cls->data->ro->ivars)) {
+        size_t oldsize = ivar_list_size(oldlist);
+        newlist = _calloc_internal(oldsize + oldlist->entsize, 1);
+        memcpy(newlist, oldlist, oldsize);
+        _free_internal(oldlist);
+    } else {
+        newlist = _calloc_internal(sizeof(ivar_list_t), 1);
+        newlist->entsize = (uint32_t)sizeof(ivar_t);
+    }
+
+    uint32_t offset = instanceSize(cls);
+    uint32_t alignMask = (1<<alignment)-1;
+    offset = (offset + alignMask) & ~alignMask;
+
+    ivar_t *ivar = ivar_list_nth(newlist, newlist->count++);
+    ivar->offset = _malloc_internal(sizeof(*ivar->offset));
+    *ivar->offset = offset;
+    ivar->name = name ? _strdup_internal(name) : NULL;
+    ivar->type = _strdup_internal(type);
+    ivar->alignment = alignment;
+    ivar->size = (uint32_t)size;
+
+    ro_w->ivars = newlist;
+    ro_w->instanceSize = (uint32_t)(offset + size);
+
+    // Ivar layout updated in registerClass.
+
+    OBJC_UNLOCK(&runtimeLock);
+
+    return YES;
+}
+
+
+/***********************************************************************
+* class_addProtocol
+* Adds a protocol to a class.
+* Locking: acquires runtimeLock
+**********************************************************************/
+BOOL class_addProtocol(Class cls_gen, Protocol *protocol_gen)
+{
+    class_t *cls = newcls(cls_gen);
+    protocol_t *protocol = newprotocol(protocol_gen);
+    protocol_list_t *plist;
+    protocol_list_t **plistp;
+
+    if (!cls) return NO;
+    if (class_conformsToProtocol(cls_gen, protocol_gen)) return NO;
+
+    OBJC_LOCK(&runtimeLock);
+
+    assert(isRealized(cls));
+    
+    // fixme optimize
+    plist = _malloc_internal(sizeof(protocol_list_t) + sizeof(protocol_t *));
+    plist->count = 1;
+    plist->list[0] = protocol;
+    
+    unsigned int count = 0;
+    for (plistp = cls->data->protocols; plistp && *plistp; plistp++) {
+        count++;
+    }
+
+    cls->data->protocols = 
+        _realloc_internal(cls->data->protocols, 
+                          (count+2) * sizeof(protocol_list_t *));
+    cls->data->protocols[count] = plist;
+    cls->data->protocols[count+1] = NULL;
+
+    // fixme metaclass?
+
+    OBJC_UNLOCK(&runtimeLock);
+
+    return YES;
+}
+
+
+/***********************************************************************
+* look_up_class
+* Look up a class by name, and realize it.
+* Locking: acquires runtimeLock
+* GrP fixme zerolink needs class handler for objc_getClass
+**********************************************************************/
+__private_extern__ id 
+look_up_class(const char *name, 
+              BOOL includeUnconnected __attribute__((unused)), 
+              BOOL includeClassHandler __attribute__((unused)))
+{
+    if (!name) return nil;
+
+    OBJC_LOCK(&runtimeLock);
+    id result = (id)getClass(name);
+    realizeClass(result);
+    OBJC_UNLOCK(&runtimeLock);
+    return result;
+}
+
+
+/***********************************************************************
+* objc_duplicateClass
+* fixme
+* Locking: acquires runtimeLock
+**********************************************************************/
+Class 
+objc_duplicateClass(Class original_gen, const char *name, 
+                    size_t extraBytes)
+{
+    struct class_t *original = newcls(original_gen);
+    chained_method_list **m;
+    struct class_t *duplicate;
+
+    OBJC_LOCK(&runtimeLock);
+
+    assert(isRealized(original));
+    methodizeClass(original);
+    assert(!isMetaClass(original));
+
+    duplicate = (struct class_t *)
+        calloc(instanceSize(original->isa) + extraBytes, 1);
+    if (instanceSize(original->isa) < sizeof(class_t)) {
+        _objc_inform("busted! %s\n", original->data->ro->name);
+    }
+
+
+    duplicate->isa = original->isa;
+    duplicate->superclass = original->superclass;
+    duplicate->cache = (Cache)&_objc_empty_cache;
+#warning GrP fixme vtable
+    // duplicate->vtable = (IMP *)&_objc_empty_vtable;
+
+    duplicate->data = _calloc_internal(sizeof(*original->data), 1);
+    duplicate->data->flags = original->data->flags | RW_COPIED_RO;
+    duplicate->data->version = original->data->version;
+    duplicate->data->firstSubclass = NULL;
+    duplicate->data->nextSiblingClass = NULL;
+
+    duplicate->data->ro = 
+        _memdup_internal(original->data->ro, sizeof(*original->data->ro));
+    *(char **)&duplicate->data->ro->name = _strdup_internal(name);
+    
+    duplicate->data->methods = original->data->methods;
+    for (m = &duplicate->data->methods; *m != NULL; m = &(*m)->next) {
+        *m = _memdup_internal(*m, chained_mlist_size(*m));
+    }
+
+    // fixme dies when categories are added to the base
+    duplicate->data->properties = original->data->properties;
+    duplicate->data->protocols = original->data->protocols;
+
+    if (duplicate->superclass) {
+        addSubclass(duplicate->superclass, duplicate);
+    }
+
+    addRealizedClass(duplicate, duplicate->data->ro->name);
+
+    if (PrintConnecting) {
+        _objc_inform("CLASS: realizing class '%s' (duplicate of %s) %p %p", 
+                     name, original->data->ro->name, 
+                     duplicate, duplicate->data->ro);
+    }
+
+    OBJC_UNLOCK(&runtimeLock);
+
+    return (Class)duplicate;
+}
+
+
+/***********************************************************************
+* objc_allocateClassPair
+* fixme
+* Locking: acquires runtimeLock
+**********************************************************************/
+Class objc_allocateClassPair(Class superclass_gen, const char *name, 
+                             size_t extraBytes)
+{
+    class_t *superclass = newcls(superclass_gen);
+    class_t *cls, *meta;
+    class_ro_t *cls_ro_w, *meta_ro_w;
+
+    OBJC_LOCK(&runtimeLock);
+
+    if (getClass(name)) {
+        OBJC_UNLOCK(&runtimeLock);
+        return NO;
+    }
+    // fixme reserve class against simmultaneous allocation
+
+    if (superclass) assert(isRealized(superclass));
+
+    if (superclass  &&  superclass->data->flags & RW_CONSTRUCTING) {
+        // Can't make subclass of an in-construction class
+        OBJC_UNLOCK(&runtimeLock);
+        return NO;
+    }
+
+    // Allocate new classes.
+    if (superclass) {
+        cls = _calloc_internal(instanceSize(superclass->isa) + extraBytes, 1);
+        meta = _calloc_internal(instanceSize(superclass->isa->isa) + extraBytes, 1);
+    } else {
+        cls = _calloc_internal(sizeof(class_t) + extraBytes, 1);
+        meta = _calloc_internal(sizeof(class_t) + extraBytes, 1);
+    }
+    
+    cls->data = _calloc_internal(sizeof(class_rw_t), 1);
+    meta->data = _calloc_internal(sizeof(class_rw_t), 1);
+    cls_ro_w = _calloc_internal(sizeof(class_ro_t), 1);
+    meta_ro_w = _calloc_internal(sizeof(class_ro_t), 1);
+    cls->data->ro = cls_ro_w;
+    meta->data->ro = meta_ro_w;
+
+    // Set basic info
+    cls->cache = (Cache)&_objc_empty_cache;
+    meta->cache = (Cache)&_objc_empty_cache;
+    cls->vtable = (IMP *)&_objc_empty_vtable;
+    meta->vtable = (IMP *)&_objc_empty_vtable;
+
+    cls->data->flags = RW_CONSTRUCTING | RW_COPIED_RO | RW_REALIZED;
+    meta->data->flags = RW_CONSTRUCTING | RW_COPIED_RO | RW_REALIZED;
+    cls->data->version = 0;
+    meta->data->version = 7;
+
+    cls_ro_w->flags = 0;
+    meta_ro_w->flags = RO_META;
+    if (!superclass) {
+        cls_ro_w->flags |= RO_ROOT;
+        meta_ro_w->flags |= RO_ROOT;
+    }
+    if (superclass) {
+        cls_ro_w->instanceStart = instanceSize(superclass);
+        meta_ro_w->instanceStart = instanceSize(superclass->isa);
+        cls_ro_w->instanceSize = cls_ro_w->instanceStart;
+        meta_ro_w->instanceSize = meta_ro_w->instanceStart;
+    } else {
+        cls_ro_w->instanceStart = 0;
+        meta_ro_w->instanceStart = (uint32_t)sizeof(class_t);
+        cls_ro_w->instanceSize = (uint32_t)sizeof(id);  // just an isa
+        meta_ro_w->instanceSize = meta_ro_w->instanceStart;
+    }
+
+    cls_ro_w->name = _strdup_internal(name);
+    meta_ro_w->name = _strdup_internal(name);
+
+    // Connect to superclasses and metaclasses
+    cls->isa = meta;
+    if (superclass) {
+        meta->isa = superclass->isa->isa;
+        cls->superclass = superclass;
+        meta->superclass = superclass->isa;
+        addSubclass(superclass, cls);
+        addSubclass(superclass->isa, meta);
+    } else {
+        meta->isa = meta;
+        cls->superclass = Nil;
+        meta->superclass = cls;
+        addSubclass(cls, meta);
+    }
+
+    OBJC_UNLOCK(&runtimeLock);
+
+    return (Class)cls;
+}
+
+
+/***********************************************************************
+* objc_registerClassPair
+* fixme
+* Locking: acquires runtimeLock
+**********************************************************************/
+void objc_registerClassPair(Class cls_gen)
+{
+    class_t *cls = newcls(cls_gen);
+    
+    OBJC_LOCK(&runtimeLock);
+
+    if ((cls->data->flags & RW_CONSTRUCTED)  ||  
+        (cls->isa->data->flags & RW_CONSTRUCTED)) 
+    {
+        _objc_inform("objc_registerClassPair: class '%s' was already "
+                     "registered!", cls->data->ro->name);
+        OBJC_UNLOCK(&runtimeLock);
+        return;
+    }
+
+    if (!(cls->data->flags & RW_CONSTRUCTING)  ||  
+        !(cls->isa->data->flags & RW_CONSTRUCTING))
+    {
+        _objc_inform("objc_registerClassPair: class '%s' was not "
+                     "allocated with objc_allocateClassPair!", 
+                     cls->data->ro->name);
+        OBJC_UNLOCK(&runtimeLock);
+        return;
+    }
+
+    // Build ivar layouts
+    if (UseGC) {
+        struct class_t *supercls = getSuperclass(cls);
+        class_ro_t *ro_w = (class_ro_t *)cls->data->ro;
+
+        if (ro_w->ivarLayout) {
+            // Class builder already called class_setIvarLayout.
+        }
+        else if (!supercls) {
+            // Root class. Scan conservatively (should be isa ivar only).
+            // ivar_layout is already NULL.
+        }
+        else if (ro_w->ivars == NULL) {
+            // No local ivars. Use superclass's layouts.
+            ro_w->ivarLayout = (unsigned char *)
+                _strdup_internal((char *)supercls->data->ro->ivarLayout);
+        }
+        else {
+            // Has local ivars. Build layouts based on superclass.
+            layout_bitmap bitmap = 
+                layout_bitmap_create(supercls->data->ro->ivarLayout, 
+                                     instanceSize(supercls), 
+                                     instanceSize(cls), NO);
+            uint32_t i;
+            for (i = 0; i < ro_w->ivars->count; i++) {
+                ivar_t *iv = ivar_list_nth(ro_w->ivars, i);
+                layout_bitmap_set_ivar(bitmap, iv->type, *iv->offset);
+            }
+            ro_w->ivarLayout = layout_string_create(bitmap);
+            layout_bitmap_free(bitmap);
+        }
+
+        if (ro_w->weakIvarLayout) {
+            // Class builder already called class_setWeakIvarLayout.
+        }
+        else if (!supercls) {
+            // Root class. No weak ivars (should be isa ivar only).
+            // weak_ivar_layout is already NULL.
+        }
+        else if (ro_w->ivars == NULL) {
+            // No local ivars. Use superclass's layout.
+            ro_w->weakIvarLayout = (unsigned char *)
+                _strdup_internal((char *)supercls->data->ro->weakIvarLayout);
+        }
+        else {
+            // Has local ivars. Build layout based on superclass.
+            // No way to add weak ivars yet.
+            ro_w->weakIvarLayout = (unsigned char *)
+                _strdup_internal((char *)supercls->data->ro->weakIvarLayout);
+        }
+    }
+
+    // Clear "under construction" bit, set "done constructing" bit
+    cls->data->flags &= ~RW_CONSTRUCTING;
+    cls->isa->data->flags &= ~RW_CONSTRUCTING;
+    cls->data->flags |= RW_CONSTRUCTED;
+    cls->isa->data->flags |= RW_CONSTRUCTED;
+
+    // Add to realized and uninitialized classes
+    addRealizedClass(cls, cls->data->ro->name);
+    addUninitializedClass(cls, cls->isa);
+
+    OBJC_UNLOCK(&runtimeLock);
+}
+
+
+static void unload_class(class_t *cls)
+{
+    uint32_t i;
+
+    chained_method_list *mlist = cls->data->methods;
+    while (mlist) {
+        chained_method_list *dead = mlist;
+        mlist = mlist->next;
+        for (i = 0; i < dead->count; i++) {
+            try_free(dead->list[i].types);
+        }
+        try_free(dead);
+    }
+
+    const ivar_list_t *ilist = cls->data->ro->ivars;
+    if (ilist) {
+        for (i = 0; i < ilist->count; i++) {
+            const ivar_t *ivar = ivar_list_nth(ilist, i);
+            try_free(ivar->offset);
+            try_free(ivar->name);
+            try_free(ivar->type);
+        }
+        try_free(ilist);
+    }
+
+    protocol_list_t **plistp = cls->data->protocols;
+    for (plistp = cls->data->protocols; plistp && *plistp; plistp++) {
+        try_free(*plistp);
+    }
+    try_free(cls->data->protocols);
+
+    // fixme:
+    // properties
+
+    try_free(cls->data->ro->ivarLayout);
+    try_free(cls->data->ro->weakIvarLayout);
+    try_free(cls->data->ro->name);
+    try_free(cls->data->ro);
+    try_free(cls->data);
+    if (cls->cache != (Cache)&_objc_empty_cache) _cache_free(cls->cache);
+    try_free(cls);
+}
+
+void objc_disposeClassPair(Class cls_gen)
+{
+    class_t *cls = newcls(cls_gen);
+
+    OBJC_LOCK(&runtimeLock);
+
+    if (!(cls->data->flags & (RW_CONSTRUCTED|RW_CONSTRUCTING))  ||  
+        !(cls->isa->data->flags & (RW_CONSTRUCTED|RW_CONSTRUCTING))) 
+    {
+        // class not allocated with objc_allocateClassPair
+        // disposing still-unregistered class is OK!
+        _objc_inform("objc_disposeClassPair: class '%s' was not "
+                     "allocated with objc_allocateClassPair!", 
+                     cls->data->ro->name);
+        OBJC_UNLOCK(&runtimeLock);
+        return;
+    }
+
+    if (isMetaClass(cls)) {
+        _objc_inform("objc_disposeClassPair: class '%s' is a metaclass, "
+                     "not a class!", cls->data->ro->name);
+        OBJC_UNLOCK(&runtimeLock);
+        return;
+    }
+
+    class_t *supercls = getSuperclass(cls);
+
+    // Shouldn't have any live subclasses.
+    if (cls->data->firstSubclass) {
+        _objc_inform("objc_disposeClassPair: class '%s' still has subclasses, "
+                     "including '%s'!", cls->data->ro->name, 
+                     getName(cls->data->firstSubclass));
+    }
+    if (cls->isa->data->firstSubclass) {
+        _objc_inform("objc_disposeClassPair: class '%s' still has subclasses, "
+                     "including '%s'!", cls->data->ro->name, 
+                     getName(cls->isa->data->firstSubclass));
+    }
+
+    // Remove from superclass's subclass list
+    // Note that cls and cls->isa may have different lists.
+    if (supercls) {
+        removeSubclass(getSuperclass(cls), cls);
+        removeSubclass(getSuperclass(cls->isa), cls->isa);
+    }
+
+    // Remove from class hashes
+    removeRealizedClass(cls);
+    removeUninitializedClass(cls);
+
+    // Deallocate memory
+    unload_class(cls->isa);
+    unload_class(cls);
+
+    OBJC_UNLOCK(&runtimeLock);
+}
+
+
+
+/***********************************************************************
+* class_createInstanceFromZone
+* fixme
+* Locking: none
+**********************************************************************/
+id
+class_createInstanceFromZone(Class cls, size_t extraBytes, void *zone)
+{
+    if (cls) assert(isRealized(newcls(cls)));
+    return _internal_class_createInstanceFromZone(cls, extraBytes, zone);
+}
+
+
+/***********************************************************************
+* class_createInstance
+* fixme
+* Locking: none
+**********************************************************************/
+id 
+class_createInstance(Class cls, size_t extraBytes)
+{
+    return class_createInstanceFromZone(cls, extraBytes, NULL);
+}
+
+
+/***********************************************************************
+* object_copyFromZone
+* fixme
+* Locking: none
+**********************************************************************/
+id 
+object_copyFromZone(id oldObj, size_t extraBytes, void *zone)
+{
+    id obj;
+    size_t size;
+
+    if (!oldObj) return nil;
+
+    size = _class_getInstanceSize(oldObj->isa) + extraBytes;
+    obj = malloc_zone_calloc(zone, size, 1);
+    if (!obj) return nil;
+
+    // fixme this doesn't handle C++ ivars correctly (#4619414)
+    bcopy(oldObj, obj, size);
+
+    return obj;
+}
+
+
+/***********************************************************************
+* object_copy
+* fixme
+* Locking: none
+**********************************************************************/
+id 
+object_copy(id oldObj, size_t extraBytes)
+{
+    return object_copyFromZone(oldObj, extraBytes, malloc_default_zone());
+}
+
+
+/***********************************************************************
+* object_dispose
+* fixme
+* Locking: none
+**********************************************************************/
+id 
+object_dispose(id obj)
+{
+    return _internal_object_dispose(obj);
+}
+
+
+/***********************************************************************
+* _class_getFreedObjectClass
+* fixme
+* Locking: none
+**********************************************************************/
+__private_extern__ Class 
+_class_getFreedObjectClass(void)
+{
+    return Nil;  // fixme
+}
+
+/***********************************************************************
+* _class_getNonexistentObjectClass
+* fixme
+* Locking: none
+**********************************************************************/
+__private_extern__ Class 
+_class_getNonexistentObjectClass(void)
+{
+    return Nil;  // fixme
+}
+
+/***********************************************************************
+* _objc_getFreedObjectClass
+* fixme
+* Locking: none
+**********************************************************************/
+Class _objc_getFreedObjectClass (void)
+{
+    return _class_getFreedObjectClass();
+}
+
+extern id objc_msgSend_fixup(id, SEL, ...);
+extern id objc_msgSend_fixedup(id, SEL, ...);
+extern id objc_msgSendSuper2_fixup(id, SEL, ...);
+extern id objc_msgSendSuper2_fixedup(id, SEL, ...);
+extern id objc_msgSend_stret_fixup(id, SEL, ...);
+extern id objc_msgSend_stret_fixedup(id, SEL, ...);
+extern id objc_msgSendSuper2_stret_fixup(id, SEL, ...);
+extern id objc_msgSendSuper2_stret_fixedup(id, SEL, ...);
+
+/***********************************************************************
+* _objc_fixupMessageRef
+* Fixes up message ref *msg. 
+* obj is the receiver. supr is NULL for non-super messages
+* Locking: acquires runtimeLock
+**********************************************************************/
+__private_extern__ IMP 
+_objc_fixupMessageRef(id obj, struct objc_super2 *supr, message_ref *msg)
+{
+    IMP imp;
+    class_t *isa;
+
+    OBJC_CHECK_UNLOCKED(&runtimeLock);
+
+    if (!supr) {
+        // normal message - search obj->isa for the method implementation
+        isa = (class_t *)obj->isa;
+        
+        if (!isRealized(isa)) {
+            // obj is a class object, isa is its metaclass
+            class_t *cls;
+            OBJC_LOCK(&runtimeLock);
+            if (!isRealized(isa)) {
+                cls = realizeClass((class_t *)obj);
+                
+                // shouldn't have instances of unrealized classes!
+                assert(isMetaClass(isa));
+                // shouldn't be relocating classes here!
+                assert(cls == (class_t *)obj);
+            }
+            OBJC_UNLOCK(&runtimeLock);
+        }
+    }
+    else {
+        // this is objc_msgSend_super, and supr->current_class->superclass
+        // is the class to search for the method implementation
+        assert(isRealized((class_t *)supr->current_class));
+        isa = getSuperclass((class_t *)supr->current_class);
+    }
+
+    msg->sel = sel_registerName((const char *)msg->sel);
+    imp = _class_lookupMethodAndLoadCache((Class)isa, msg->sel);
+
+    if (msg->imp == (IMP)&objc_msgSend_fixup) { 
+        msg->imp = (IMP)&objc_msgSend_fixedup;
+    } 
+    else if (msg->imp == (IMP)&objc_msgSendSuper2_fixup) { 
+        msg->imp = (IMP)&objc_msgSendSuper2_fixedup;
+    } 
+    else if (msg->imp == (IMP)&objc_msgSend_stret_fixup) { 
+        msg->imp = (IMP)&objc_msgSend_stret_fixedup;
+    } 
+    else if (msg->imp == (IMP)&objc_msgSendSuper2_stret_fixup) { 
+        msg->imp = (IMP)&objc_msgSendSuper2_stret_fixedup;
+    } 
+    else {
+        // The ref may already have been fixed up, either by another thread, 
+        // or by +initialize via class_lookupMethodAndLoadCache above.
+    }
+
+    return imp;
+}
+
+#warning fixme delete after #4586306
+Class class_poseAs(Class imposter, Class original)
+{
+    _objc_fatal("Don't call class_poseAs.");
+}
+
+
+// ProKit SPI
+static class_t *setSuperclass(class_t *cls, class_t *newSuper)
+{
+    class_t *oldSuper;
+
+    OBJC_CHECK_LOCKED(&runtimeLock);
+
+    oldSuper = cls->superclass;
+    removeSubclass(oldSuper, cls);
+    removeSubclass(oldSuper->isa, cls->isa);
+
+    cls->superclass = newSuper;
+    cls->isa->superclass = newSuper->isa;
+    addSubclass(newSuper, cls);
+    addSubclass(newSuper->isa, cls->isa);
+
+    flushCaches(cls);
+    flushCaches(cls->isa);
+
+    return oldSuper;
+}
+
+
+Class class_setSuperclass(Class cls_gen, Class newSuper_gen)
+{
+    class_t *cls = newcls(cls_gen);
+    class_t *newSuper = newcls(newSuper_gen);
+    class_t *oldSuper;
+
+    OBJC_LOCK(&runtimeLock);
+    oldSuper = setSuperclass(cls, newSuper);
+    OBJC_UNLOCK(&runtimeLock);
+
+    return (Class)oldSuper;
+}
+
+#endif
diff --git a/runtime/objc-runtime-old.m b/runtime/objc-runtime-old.m
new file mode 100644 (file)
index 0000000..427dbbe
--- /dev/null
@@ -0,0 +1,2834 @@
+/*
+ * Copyright (c) 1999-2007 Apple Inc.  All Rights Reserved.
+ * 
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * 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-runtime-old.m
+* Support for old-ABI classes and images.
+**********************************************************************/
+
+/***********************************************************************
+ * 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. 
+ *   Note any +load implementations before categories are attached.
+ *   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.
+ * 
+ * Correctness: all classes are scanned for +load before any categories 
+ * are attached. Otherwise, if a category implements +load and its class 
+ * has no class methods, the class's +load scan would find the category's 
+ * +load method, which would then be called twice.
+ * 
+ **********************************************************************/
+
+#if !__OBJC2__
+
+#include <mach/mach.h>
+#include <mach-o/ldsyms.h>
+#include <mach-o/dyld.h>
+#include <assert.h>
+
+#define OLD 1
+#import "objc-private.h"
+#import "objc-loadmethod.h"
+#import "hashtable2.h"
+#import "maptable.h"
+
+/* NXHashTable SPI */
+extern unsigned _NXHashCapacity(NXHashTable *table);
+extern void _NXHashRehashToCapacity(NXHashTable *table, unsigned newCapacity);
+
+
+typedef struct _objc_unresolved_category
+{
+    struct _objc_unresolved_category *next;
+    struct old_category *cat;  // may be NULL
+    long version;
+} _objc_unresolved_category;
+
+typedef struct _PendingSubclass
+{
+    struct old_class *subclass;  // subclass to finish connecting; may be NULL
+    struct _PendingSubclass *next;
+} PendingSubclass;
+
+typedef struct _PendingClassRef
+{
+    struct old_class **ref;  // class reference to fix up; may be NULL
+                             // (ref & 1) is a metaclass reference
+    struct _PendingClassRef *next;
+} PendingClassRef;
+
+
+static uintptr_t classHash(void *info, Class data);
+static int classIsEqual(void *info, Class name, Class cls);
+static int _objc_defaultClassHandler(const char *clsName);
+static BOOL class_is_connected(struct old_class *cls);
+static inline NXMapTable *pendingClassRefsMapTable(void);
+static inline NXMapTable *pendingSubclassesMapTable(void);
+static void pendClassInstallation(struct old_class *cls, const char *superName);
+static void pendClassReference(struct old_class **ref, const char *className, BOOL isMeta);
+static void resolve_references_to_class(struct old_class *cls);
+static void resolve_subclasses_of_class(struct old_class *cls);
+static void really_connect_class(struct old_class *cls, struct old_class *supercls);
+static BOOL connect_class(struct old_class *cls);
+static inline BOOL map_selrefs(SEL *src, SEL *dst, size_t size, BOOL copy);
+static void  map_method_descs (struct objc_method_description_list * methods, BOOL copy);
+static void _objcTweakMethodListPointerForClass(struct old_class *cls);
+static inline void _objc_add_category(struct old_class *cls, struct old_category *category, int version);
+static BOOL _objc_add_category_flush_caches(struct old_class *cls, struct old_category *category, int version);
+static _objc_unresolved_category *reverse_cat(_objc_unresolved_category *cat);
+static void resolve_categories_for_class(struct old_class *cls);
+static BOOL _objc_register_category(struct old_category *cat, int version);
+
+
+// Function called when a class is loaded from an image
+__private_extern__ void (*callbackFunction)(Class, const char *) = 0;
+
+// Lock for class and protocol hashtables
+// classLock > cacheUpdateLock
+__private_extern__ OBJC_DECLARE_LOCK (classLock);
+
+// Hash table of classes
+__private_extern__ NXHashTable *               class_hash NOBSS = 0;
+static NXHashTablePrototype    classHashPrototype =
+{
+    (uintptr_t (*) (const void *, const void *))                       classHash,
+    (int (*)(const void *, const void *, const void *))        classIsEqual,
+    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;
+
+// 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;
+
+// Keys are COPIES of strings, to prevent stale pointers with unloaded bundles
+// Use NXMapKeyCopyingInsert and NXMapKeyFreeingRemove
+static NXMapTable *            pendingClassRefsMap = NULL;
+static NXMapTable *            pendingSubclassesMap = NULL;
+
+// Protocols
+static NXMapTable *protocol_map = NULL;      // name -> protocol
+static NXMapTable *protocol_ext_map = NULL;  // protocol -> protocol ext
+
+// Function pointer objc_getClass calls through when class is not found
+static int                     (*objc_classHandler) (const char *) = _objc_defaultClassHandler;
+
+// Function pointer called by objc_getClass and objc_lookupClass when 
+// class is not found. _objc_classLoader is called before objc_classHandler.
+static BOOL (*_objc_classLoader)(const char *) = NULL;
+
+
+/***********************************************************************
+* inform_duplicate. Complain about duplicate class implementations.
+**********************************************************************/
+static void inform_duplicate(struct old_class *oldCls, struct old_class *cls)
+{
+    const header_info *oldHeader = _headerForClass((Class)oldCls);
+    const header_info *newHeader = _headerForClass((Class)cls);
+    const char *oldName = _nameForHeader(oldHeader->mhdr);
+    const char *newName = _nameForHeader(newHeader->mhdr);
+        
+    _objc_inform ("Class %s is implemented in both %s and %s. "
+                  "Using implementation from %s.",
+                  oldCls->name, oldName, newName, newName);
+}
+
+
+/***********************************************************************
+* objc_dump_class_hash.  Log names of all known classes.
+**********************************************************************/
+__private_extern__ void objc_dump_class_hash(void)
+{
+    NXHashTable *table;
+    unsigned count;
+    Class data;
+    NXHashState state;
+
+    table = class_hash;
+    count = 0;
+    state = NXInitHashState (table);
+    while (NXNextHashState (table, &state, (void **) &data))
+        printf ("class %d: %s\n", ++count, _class_getName(data));
+}
+
+
+/***********************************************************************
+* _objc_init_class_hash.  Return the class lookup table, create it if
+* necessary.
+**********************************************************************/
+__private_extern__ void _objc_init_class_hash(void)
+{
+    // Do nothing if class hash table already exists
+    if (class_hash)
+        return;
+
+    // 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,
+                                            16,
+                                            nil,
+                                            _objc_internal_zone ());
+    _objc_debug_class_hash = class_hash;
+}
+
+
+/***********************************************************************
+* objc_getClassList.  Return the known classes.
+**********************************************************************/
+int objc_getClassList(Class *buffer, int bufferLen) 
+{
+    NXHashState state;
+    Class class;
+    int cnt, num;
+
+    OBJC_LOCK(&classLock);
+    num = NXCountHashTable(class_hash);
+    if (NULL == buffer) {
+        OBJC_UNLOCK(&classLock);
+        return num;
+    }
+    cnt = 0;
+    state = NXInitHashState(class_hash);
+    while (cnt < bufferLen  &&  
+           NXNextHashState(class_hash, &state, (void **)&class)) 
+    {
+        buffer[cnt++] = class;
+    }
+    OBJC_UNLOCK(&classLock);
+    return num;
+}
+
+
+/***********************************************************************
+* objc_copyProtocolList
+* Returns pointers to all protocols.
+* Locking: acquires classLock
+**********************************************************************/
+Protocol **
+objc_copyProtocolList(unsigned int *outCount) 
+{
+    OBJC_LOCK(&classLock);
+
+    int count, i;
+    Protocol *proto;
+    const char *name;
+    NXMapState state;
+    Protocol **result;
+
+    count = NXCountMapTable(protocol_map);
+    if (count == 0) {
+        OBJC_UNLOCK(&classLock);
+        if (outCount) *outCount = 0;
+        return NULL;
+    }
+
+    result = calloc(1 + count, sizeof(Protocol *));
+
+    i = 0;
+    state = NXInitMapState(protocol_map);
+    while (NXNextMapState(protocol_map, &state, 
+                          (const void **)&name, (const void **)&proto))
+    {
+        result[i++] = proto;
+    }
+    
+    result[i++] = NULL;
+    assert(i == count+1);
+
+    OBJC_UNLOCK(&classLock);
+
+    if (outCount) *outCount = count;
+    return result;
+}
+
+
+/***********************************************************************
+* objc_getClasses.  Return class lookup table.
+*
+* NOTE: This function is very dangerous, since you cannot safely use
+* the hashtable without locking it, and the lock is private!
+**********************************************************************/
+void *objc_getClasses(void)
+{
+    OBJC_WARN_DEPRECATED;
+
+    // Return the class lookup hash table
+    return class_hash;
+}
+
+
+/***********************************************************************
+* classHash.
+**********************************************************************/
+static uintptr_t classHash(void *info, Class data)
+{
+    // Nil classes hash to zero
+    if (!data)
+        return 0;
+
+    // Call through to real hash function
+    return _objc_strhash (_class_getName(data));
+}
+
+/***********************************************************************
+* classIsEqual.  Returns whether the class names match.  If we ever
+* check more than the name, routines like objc_lookUpClass have to
+* change as well.
+**********************************************************************/
+static int classIsEqual(void *info, Class name, Class cls)
+{
+    // Standard string comparison
+    // Our local inlined version is significantly shorter on PPC and avoids the
+    // mflr/mtlr and dyld_stub overhead when calling strcmp.
+    return _objc_strcmp(_class_getName(name), _class_getName(cls)) == 0;
+}
+
+
+// Unresolved future classes
+static NXHashTable *future_class_hash = NULL;
+
+// Resolved future<->original classes
+static NXMapTable *future_class_to_original_class_map = NULL;
+static NXMapTable *original_class_to_future_class_map = NULL;
+
+// CF requests about 20 future classes; HIToolbox requests one.
+#define FUTURE_COUNT 32
+
+
+/***********************************************************************
+* setOriginalClassForFutureClass
+* Record resolution of a future class. 
+**********************************************************************/
+static void setOriginalClassForFutureClass(struct old_class *futureClass, 
+                                           struct old_class *originalClass)
+{
+    if (!future_class_to_original_class_map) {
+        future_class_to_original_class_map =
+            NXCreateMapTableFromZone (NXPtrValueMapPrototype, FUTURE_COUNT, 
+                                      _objc_internal_zone ());
+        original_class_to_future_class_map =
+            NXCreateMapTableFromZone (NXPtrValueMapPrototype, FUTURE_COUNT, 
+                                      _objc_internal_zone ());
+    }
+
+    NXMapInsert (future_class_to_original_class_map,
+                 futureClass, originalClass);
+    NXMapInsert (original_class_to_future_class_map,
+                 originalClass, futureClass);
+
+    if (PrintFuture) {
+        _objc_inform("FUTURE: using %p instead of %p for %s", futureClass, originalClass, originalClass->name);
+    }
+}
+
+/***********************************************************************
+* getOriginalClassForFutureClass
+* getFutureClassForOriginalClass
+* Switch between a future class and its corresponding original class.
+* The future class is the one actually in use.
+* The original class is the one from disk.
+**********************************************************************/
+/*
+static struct old_class *
+getOriginalClassForFutureClass(struct old_class *futureClass)
+{
+    if (!future_class_to_original_class_map) return Nil;
+    return NXMapGet (future_class_to_original_class_map, futureClass);
+}
+*/
+static struct old_class *
+getFutureClassForOriginalClass(struct old_class *originalClass)
+{
+    if (!original_class_to_future_class_map) return Nil;
+    return NXMapGet (original_class_to_future_class_map, originalClass);
+}
+
+
+/***********************************************************************
+* makeFutureClass
+* Initialize the memory in *cls with an unresolved future class with the 
+* given name. The memory is recorded in future_class_hash.
+**********************************************************************/
+static void makeFutureClass(struct old_class *cls, const char *name)
+{
+    // CF requests about 20 future classes, plus HIToolbox has one.
+    if (!future_class_hash) {
+        future_class_hash = 
+            NXCreateHashTableFromZone(classHashPrototype, FUTURE_COUNT, 
+                                      NULL, _objc_internal_zone());
+    }
+
+    cls->name = _strdup_internal(name);
+    NXHashInsert(future_class_hash, cls);
+
+    if (PrintFuture) {
+        _objc_inform("FUTURE: reserving %p for %s", cls, name);
+    }
+}
+
+
+/***********************************************************************
+* _objc_allocateFutureClass
+* Allocate an unresolved future class for the given class name.
+* Returns any existing allocation if one was already made.
+* Assumes the named class doesn't exist yet.
+* Not thread safe.
+**********************************************************************/
+__private_extern__ Class _objc_allocateFutureClass(const char *name)
+{
+    struct old_class *cls;
+
+    if (future_class_hash) {
+        struct old_class query;
+        query.name = name;
+        if ((cls = NXHashGet(future_class_hash, &query))) {
+            // Already have a future class for this name.
+            return (Class)cls;
+        }
+    } 
+
+    cls = _calloc_internal(sizeof(*cls), 1);
+    makeFutureClass(cls, name);
+    return (Class)cls;
+}
+
+
+/***********************************************************************
+* objc_setFutureClass.  
+* Like objc_getFutureClass, but uses the provided memory block. 
+* If the class already exists, a posing-like substitution is performed.
+* Not thread safe.
+**********************************************************************/
+void objc_setFutureClass(Class cls, const char *name)
+{
+    struct old_class *oldcls;
+    struct old_class *newcls = (struct old_class *)cls;  // Not a real class!
+
+    if ((oldcls = _class_asOld(look_up_class(name, NO/*unconnected*/, NO/*classhandler*/)))) {
+        setOriginalClassForFutureClass(newcls, oldcls);
+        // fixme hack
+        memcpy(newcls, oldcls, sizeof(struct objc_class));
+        newcls->info &= ~CLS_EXT;
+
+        OBJC_LOCK(&classLock);
+        NXHashRemove(class_hash, oldcls);
+        change_class_references(newcls, oldcls, nil, YES);
+        NXHashInsert(class_hash, newcls);
+        OBJC_UNLOCK(&classLock);
+    } else {
+        makeFutureClass(newcls, name);
+    }
+}
+
+
+/***********************************************************************
+* _objc_defaultClassHandler.  Default objc_classHandler.  Does nothing.
+**********************************************************************/
+static int _objc_defaultClassHandler(const char *clsName)
+{
+    // Return zero so objc_getClass doesn't bother re-searching
+    return 0;
+}
+
+/***********************************************************************
+* objc_setClassHandler.  Set objc_classHandler to the specified value.
+*
+* NOTE: This should probably deal with userSuppliedHandler being NULL,
+* because the objc_classHandler caller does not check... it would bus
+* error.  It would make sense to handle NULL by restoring the default
+* handler.  Is anyone hacking with this, though?
+**********************************************************************/
+void objc_setClassHandler(int (*userSuppliedHandler)(const char *))
+{
+    OBJC_WARN_DEPRECATED;
+
+    objc_classHandler = userSuppliedHandler;
+}
+
+
+/***********************************************************************
+* _objc_setClassLoader
+* Similar to objc_setClassHandler, but objc_classLoader is used for 
+* both objc_getClass() and objc_lookupClass(), and objc_classLoader 
+* pre-empts objc_classHandler. 
+**********************************************************************/
+void _objc_setClassLoader(BOOL (*newClassLoader)(const char *))
+{
+    _objc_classLoader = newClassLoader;
+}
+
+
+/***********************************************************************
+* objc_getProtocol
+* Get a protocol by name, or NULL.
+**********************************************************************/
+Protocol *objc_getProtocol(const char *name)
+{
+    Protocol *result;
+    if (!protocol_map) return NULL;
+    OBJC_LOCK(&classLock);
+    result = (Protocol *)NXMapGet(protocol_map, name);
+    OBJC_UNLOCK(&classLock);
+    return result;
+}
+
+
+/***********************************************************************
+* 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)
+**********************************************************************/
+__private_extern__ id look_up_class(const char *aClassName, BOOL includeUnconnected, BOOL includeClassHandler)
+{
+    BOOL includeClassLoader = YES; // class loader cannot be skipped
+    id result = nil;
+    struct old_class query;
+
+    query.name = aClassName;
+
+ retry:
+
+    if (!result  &&  class_hash) {
+        // Check ordinary classes
+        OBJC_LOCK (&classLock);
+        result = (id)NXHashGet(class_hash, &query);
+        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 result;
+}
+
+
+/***********************************************************************
+* 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 BOOL class_is_connected(struct old_class *cls)
+{
+    BOOL result;
+    OBJC_LOCK(&classLock);
+    result = NXHashMember(class_hash, cls);
+    OBJC_UNLOCK(&classLock);
+    return result;
+}
+
+
+/***********************************************************************
+* _class_isLoadable.
+* Returns TRUE if class cls is ready for its +load method to be called. 
+* A class is ready for +load if it is connected.
+**********************************************************************/
+__private_extern__ BOOL _class_isLoadable(Class cls)
+{
+    return class_is_connected(_class_asOld(cls));
+}
+
+
+/***********************************************************************
+* pendingClassRefsMapTable.  Return a pointer to the lookup table for
+* pending class refs.
+**********************************************************************/
+static inline NXMapTable *pendingClassRefsMapTable(void)
+{
+    // Allocate table if needed
+    if (!pendingClassRefsMap) {
+        pendingClassRefsMap = 
+            NXCreateMapTableFromZone(NXStrValueMapPrototype, 
+                                     10, _objc_internal_zone ());
+    }
+    
+    // Return table pointer
+    return pendingClassRefsMap;
+}
+
+
+/***********************************************************************
+* pendingSubclassesMapTable.  Return a pointer to the lookup table for
+* pending subclasses.
+**********************************************************************/
+static inline NXMapTable *pendingSubclassesMapTable(void)
+{
+    // Allocate table if needed
+    if (!pendingSubclassesMap) {
+        pendingSubclassesMap = 
+            NXCreateMapTableFromZone(NXStrValueMapPrototype, 
+                                     10, _objc_internal_zone ());
+    }
+    
+    // Return table pointer
+    return pendingSubclassesMap;
+}
+
+
+/***********************************************************************
+* pendClassInstallation
+* Finish connecting class cls when its superclass becomes connected.
+* Check for multiple pends of the same class because connect_class does not.
+**********************************************************************/
+static void pendClassInstallation(struct old_class *cls, const char *superName)
+{
+    NXMapTable *table;
+    PendingSubclass *pending;
+    PendingSubclass *oldList;
+    PendingSubclass *l;
+    
+    // Create and/or locate pending class lookup table
+    table = pendingSubclassesMapTable ();
+
+    // 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);
+}
+
+
+/***********************************************************************
+* pendClassReference
+* Fix up a class ref when the class with the given name becomes connected.
+**********************************************************************/
+static void pendClassReference(struct old_class **ref, const char *className, BOOL isMeta)
+{
+    NXMapTable *table;
+    PendingClassRef *pending;
+    
+    // Create and/or locate pending class lookup table
+    table = pendingClassRefsMapTable ();
+    
+    // Create entry containing the class reference
+    pending = _malloc_internal(sizeof(PendingClassRef));
+    pending->ref = ref;
+    if (isMeta) {
+        pending->ref = (struct old_class **)((uintptr_t)pending->ref | 1);
+    }
+    
+    // Link new entry into head of list of entries for this class
+    pending->next = NXMapGet (table, className);
+    
+    // (Re)place entry list in the table
+    (void) NXMapKeyCopyingInsert (table, className, pending);
+
+    if (PrintConnecting) {
+        _objc_inform("CONNECT: pended reference to class '%s%s' at %p", 
+                     className, isMeta ? " (meta)" : "", (void *)ref);
+    }
+}
+
+
+/***********************************************************************
+* resolve_references_to_class
+* Fix up any pending class refs to this class.
+**********************************************************************/
+static void resolve_references_to_class(struct old_class *cls)
+{
+    PendingClassRef *pending;
+    
+    if (!pendingClassRefsMap) return;  // no unresolved refs for any class
+
+    pending = NXMapGet(pendingClassRefsMap, cls->name); 
+    if (!pending) return;  // no unresolved refs for this class
+
+    NXMapKeyFreeingRemove(pendingClassRefsMap, cls->name);
+
+    if (PrintConnecting) {
+        _objc_inform("CONNECT: resolving references to class '%s'", cls->name);
+    }
+
+    while (pending) {
+        PendingClassRef *next = pending->next;
+        if (pending->ref) {
+            BOOL isMeta = ((uintptr_t)pending->ref & 1) ? YES : NO;
+            struct old_class **ref = 
+                (struct old_class **)((uintptr_t)pending->ref & ~(uintptr_t)1);
+            *ref = isMeta ? cls->isa : 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 old_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;
+    }
+}
+
+
+/***********************************************************************
+* really_connect_class
+* Connect cls to superclass supercls unconditionally.
+* Also adjust the class hash tables and handle pended subclasses.
+*
+* This should be called from connect_class() ONLY.
+**********************************************************************/
+static void really_connect_class(struct old_class *cls,
+                                 struct old_class *supercls)
+{
+    struct old_class *oldCls;
+
+    // Connect superclass pointers.
+    set_superclass(cls, supercls);
+
+    cls->info |= CLS_CONNECTED;
+
+    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) {
+        inform_duplicate(oldCls, cls);
+    }
+    // Connect newly-connectable subclasses
+    resolve_subclasses_of_class(cls);
+
+    // GC debugging: make sure all classes with -dealloc also have -finalize
+    if (DebugFinalizers) {
+        extern IMP findIMPInClass(struct old_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 old_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 old_ivar *super_ivar = 
+                &ivar_cls->ivars->ivar_list[ivar_cls->ivars->ivar_count - 1];
+            struct old_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 old_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 old_class *supercls;
+
+        // YES unconnected, YES class handler
+        if (NULL == (supercls = _class_asOld(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_read_categories_from_image.
+* Read all categories from the given image. 
+* Install them on their parent classes, or register them for later 
+*   installation. 
+* Returns YES if some method caches now need to be flushed.
+**********************************************************************/
+static BOOL _objc_read_categories_from_image (header_info *  hi)
+{
+    Module             mods;
+    size_t     midx;
+    BOOL needFlush = NO;
+
+    if (_objcHeaderIsReplacement(hi)) {
+        // Ignore any categories in this image
+        return NO;
+    }
+
+
+    // Major loop - process all modules in the header
+    mods = hi->mod_ptr;
+
+    // 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;
+        
+        // Minor loop - register all categories from given module
+        index = total;
+        while (index-- > mods[midx].symtab->cls_def_cnt) {
+            struct old_category *cat = mods[midx].symtab->defs[index];
+            needFlush |= _objc_register_category(cat, (int)mods[midx].version);
+        }
+    }
+
+    return needFlush;
+}
+
+
+/***********************************************************************
+* _objc_read_classes_from_image.
+* Read classes from the given image, perform assorted minor fixups, 
+*   scan for +load implementation.
+* 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_read_classes_from_image(header_info *hi)
+{
+    unsigned int       index;
+    unsigned int       midx;
+    Module             mods;
+    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 != (headerType *)&_mh_dylib_header && _NXHashCapacity(class_hash) < 1024) {
+        _NXHashRehashToCapacity(class_hash, 1024);
+    }
+    OBJC_UNLOCK(&classLock);
+
+    // 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 old_class *newCls, *oldCls;
+
+            // Locate the class description pointer
+            newCls = mods[midx].symtab->defs[index];
+
+            // 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) &_objc_empty_cache;
+            if (newCls->isa->cache == NULL)
+                newCls->isa->cache = (Cache) &_objc_empty_cache;
+
+            // 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|CLS_NO_PROPERTY_ARRAY;
+            newCls->isa->info |= CLS_NO_METHOD_ARRAY|CLS_NO_PROPERTY_ARRAY;
+
+            // class has no subclasses for cache flushing
+            newCls->info |= CLS_LEAF;
+            newCls->isa->info |= CLS_LEAF;
+
+            if (mods[midx].version >= 6) {
+                // class structure has ivar_layout and ext fields
+                newCls->info |= CLS_EXT;
+                newCls->isa->info |= CLS_EXT;
+            }
+
+            // Check for +load implementation before categories are attached
+            if (_class_hasLoadMethod((Class)newCls)) {
+                newCls->isa->info |= CLS_HAS_LOAD_METHOD;
+            }
+            
+            // Install into unconnected_class_hash.
+            OBJC_LOCK(&classLock);
+
+            if (future_class_hash) {
+                struct old_class *futureCls =
+                    NXHashRemove(future_class_hash, newCls);
+                if (futureCls) {
+                    // Another class structure for this class was already 
+                    // prepared by objc_getFutureClass(). Use it instead.
+                    _free_internal((char *)futureCls->name);
+                    memcpy(futureCls, newCls, sizeof(*newCls));
+                    setOriginalClassForFutureClass(futureCls, newCls);
+                    newCls = futureCls;
+
+                    if (NXCountHashTable(future_class_hash) == 0) {
+                        NXFreeHashTable(future_class_hash);
+                        future_class_hash = NULL;
+                    }
+                }
+            }
+
+            if (!unconnected_class_hash) {
+                unconnected_class_hash = 
+                    NXCreateHashTableFromZone(classHashPrototype, 128, 
+                                              NULL, _objc_internal_zone());
+            }
+
+            oldCls = NXHashInsert(unconnected_class_hash, newCls); 
+            if (oldCls) {
+                // Duplicate classes loaded. 
+                // newCls has been inserted over oldCls, 
+                // same as really_connect_class
+                inform_duplicate(oldCls, newCls);
+            }
+
+            OBJC_UNLOCK(&classLock);
+
+            // 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_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_connect_classes_from_image(header_info *hi)
+{
+    unsigned int index;
+    unsigned int midx;
+    Module mods;
+    BOOL replacement = _objcHeaderIsReplacement(hi);
+
+    // 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 old_class *cls = mods[midx].symtab->defs[index];
+            if (! replacement) {
+                BOOL connected;
+                struct old_class *futureCls = getFutureClassForOriginalClass(cls);
+                if (futureCls) {
+                    // objc_getFutureClass() requested a different class 
+                    // struct. Fix up the original struct's super_class 
+                    // field for [super ...] use, but otherwise perform 
+                    // fixups on the new class struct only.
+                    const char *super_name = (const char *) cls->super_class;
+                    if (super_name) cls->super_class = _class_asOld(objc_getClass(super_name));
+                    cls = futureCls;
+                }
+                connected = connect_class(cls);
+                if (connected  &&  callbackFunction) {
+                    (*callbackFunction)((Class)cls, 0);
+                }
+            } else {
+                // Replacement image - fix up super_class only (#3704817)
+                // And metaclass's super_class (#5351107)
+                const char *super_name = (const char *) cls->super_class;
+                if (super_name) {
+                    cls->super_class = _class_asOld(objc_getClass(super_name));
+                    // metaclass's superclass is superclass's metaclass
+                    cls->isa->super_class = cls->super_class->isa;
+                } else {
+                    // Replacement for a root class
+                    // cls->super_class already NULL
+                    // root metaclass's superclass is root class
+                    cls->isa->super_class = cls;
+                }
+            }
+        }
+    }
+}
+
+
+/***********************************************************************
+* _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
+* not yet exist, the reference is added to a list of pending references
+* to be fixed up at a later date.
+**********************************************************************/
+static void fix_class_ref(struct old_class **ref, const char *name, BOOL isMeta)
+{
+    struct old_class *cls;
+
+    // Get pointer to class of this name
+    // YES unconnected, YES class loader
+    cls = _class_asOld(look_up_class(name, YES, YES));
+    if (cls) {
+        // Referenced class exists. Fix up the reference.
+        *ref = isMeta ? cls->isa : cls;
+    } else {
+        // Referenced class does not exist yet. Insert a placeholder 
+        // class and fix up the reference later.
+        pendClassReference (ref, name, isMeta);
+        *ref = (struct old_class *)_class_getNonexistentObjectClass();
+    }
+}
+
+static void _objc_map_class_refs_for_image (header_info * hi)
+{
+    struct old_class **cls_refs;
+    size_t     count;
+    unsigned int       index;
+
+    // Locate class refs in image
+    cls_refs = _getObjcClassRefs (hi, &count);
+    if (cls_refs) {
+        // Process each class ref
+        for (index = 0; index < count; index += 1) {
+            // Ref is initially class name char*
+            const char *name = (const char *) cls_refs[index];
+            if (name == NULL) {
+                // rdar://5453039 is the entire page zero, or just this pointer
+                uintptr_t *p = (uintptr_t *)(((uintptr_t)&cls_refs[index]) & ~0xfff);
+                uintptr_t *end = (uintptr_t *)(((uintptr_t)p)+0x1000);
+                int clear = 1;
+                for ( ; p < end; p++) {
+                    if (*p != 0) {
+                        clear = 0; 
+                        break;
+                    }
+                }
+                _objc_inform_on_crash("rdar://5453039 page around %p IS%s clear", 
+                                      &cls_refs[index], clear ? "" : " NOT");
+                // crash in the usual spot so CrashTracer coalesces it
+            }
+            fix_class_ref(&cls_refs[index], name, NO /*never meta*/);
+        }
+    }
+}
+
+
+/***********************************************************************
+* _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 removePendingReferences(struct old_class **refs, size_t count)
+{
+    struct old_class **end = refs + count;
+
+    if (!refs) return;
+    if (!pendingClassRefsMap) return;
+
+    // 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 >= refs  &&  pending->ref < end) {
+                pending->ref = NULL;
+            }
+        }
+    } 
+}
+
+static void _objc_remove_pending_class_refs_in_image(header_info *hi)
+{
+    struct old_class **cls_refs;
+    size_t count;
+
+    // Locate class refs in this image
+    cls_refs = _getObjcClassRefs(hi, &count);
+    removePendingReferences(cls_refs, count);
+}
+
+
+/***********************************************************************
+* map_selrefs.  For each selector in the specified array,
+* 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.
+* Returns YES if dst was written to, NO if it was unchanged.
+**********************************************************************/
+static inline BOOL map_selrefs(SEL *src, SEL *dst, size_t size, BOOL copy)
+{
+    BOOL result = NO;
+    size_t cnt = size / sizeof(SEL);
+    size_t index;
+
+    sel_lock();
+
+    // Process each selector
+    for (index = 0; index < cnt; index += 1)
+    {
+        SEL sel;
+
+        // Lookup pointer to uniqued string
+        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 (dst[index] != sel) {
+            dst[index] = sel;
+            result = YES;
+        }
+    }
+    
+    sel_unlock();
+
+    return result;
+}
+
+
+/***********************************************************************
+* map_message_refs.  For each message ref in the specified array,
+* 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.
+* Returns YES if dst was written to, NO if it was unchanged.
+**********************************************************************/
+static inline BOOL map_message_refs(message_ref *src, message_ref *dst, size_t size, BOOL copy)
+{
+    BOOL result = NO;
+    size_t cnt = size / sizeof(message_ref);
+    size_t index;
+
+    sel_lock();
+
+    // Process each selector
+    for (index = 0; index < cnt; index += 1)
+    {
+        SEL sel;
+
+        // Lookup pointer to uniqued string
+        sel = sel_registerNameNoLock((const char *) src[index].sel, copy);
+
+        // Replace this selector with uniqued one (avoid
+        // modifying the VM page if this would be a NOP)
+        if (dst[index].sel != sel) {
+            dst[index].sel = 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, BOOL copy)
+{
+    unsigned int       index;
+
+    if (!methods) return;
+
+    sel_lock();
+
+    // Process each method
+    for (index = 0; index < methods->count; index += 1)
+    {
+        struct objc_method_description *       method;
+        SEL                                    sel;
+
+        // Get method entry to fix up
+        method = &methods->list[index];
+
+        // Lookup pointer to uniqued string
+        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)
+        if (method->name != sel)
+            method->name = sel;
+    }
+
+    sel_unlock();
+}
+
+
+/***********************************************************************
+* ext_for_protocol
+* Returns the protocol extension for the given protocol.
+* Returns NULL if the protocol has no extension.
+**********************************************************************/
+static struct old_protocol_ext *ext_for_protocol(struct old_protocol *proto)
+{
+    if (!proto) return NULL;
+    if (!protocol_ext_map) return NULL;
+    else return (struct old_protocol_ext *)NXMapGet(protocol_ext_map, proto);
+}
+
+
+/***********************************************************************
+* lookup_method
+* Search a protocol method list for a selector.
+**********************************************************************/
+static struct objc_method_description *
+lookup_method(struct objc_method_description_list *mlist, SEL aSel)
+{
+   if (mlist) {
+       int i;
+       for (i = 0; i < mlist->count; i++) {
+           if (mlist->list[i].name == aSel) {
+               return mlist->list+i;
+           }
+       }
+   }
+   return NULL;
+}
+
+
+/***********************************************************************
+* lookup_protocol_method
+* Recursively search for a selector in a protocol 
+* (and all incorporated protocols)
+**********************************************************************/
+__private_extern__ struct objc_method_description *
+lookup_protocol_method(struct old_protocol *proto, SEL aSel, 
+                       BOOL isRequiredMethod, BOOL isInstanceMethod)
+{
+    struct objc_method_description *m = NULL;
+    struct old_protocol_ext *ext;
+
+    if (isRequiredMethod) {
+        if (isInstanceMethod) {
+            m = lookup_method(proto->instance_methods, aSel);
+        } else {
+            m = lookup_method(proto->class_methods, aSel);
+        }
+    } else if ((ext = ext_for_protocol(proto))) {
+        if (isInstanceMethod) {
+            m = lookup_method(ext->optional_instance_methods, aSel);
+        } else {
+            m = lookup_method(ext->optional_class_methods, aSel);
+        }
+    }
+
+    if (!m  &&  proto->protocol_list) {
+        int i;
+        for (i = 0; !m  &&  i < proto->protocol_list->count; i++) {
+            m = lookup_protocol_method(proto->protocol_list->list[i], aSel, 
+                                       isRequiredMethod, isInstanceMethod);
+        }
+    }
+
+    return m;
+}
+
+
+/***********************************************************************
+* protocol_getName
+* Returns the name of the given protocol.
+**********************************************************************/
+const char *protocol_getName(Protocol *p)
+{
+    struct old_protocol *proto = oldprotocol(p);
+    if (!proto) return "nil";
+    return proto->protocol_name;
+}
+
+
+/***********************************************************************
+* protocol_getMethodDescription
+* Returns the description of a named method.
+* Searches either required or optional methods.
+* Searches either instance or class methods.
+**********************************************************************/
+struct objc_method_description 
+protocol_getMethodDescription(Protocol *p, SEL aSel, 
+                              BOOL isRequiredMethod, BOOL isInstanceMethod)
+{
+    struct old_protocol *proto = oldprotocol(p);
+    if (!proto) return (struct objc_method_description){NULL, NULL};
+
+    struct objc_method_description *desc = 
+        lookup_protocol_method(proto, aSel, 
+                               isRequiredMethod, isInstanceMethod);
+    if (desc) return *desc;
+    else return (struct objc_method_description){NULL, NULL};
+}
+
+
+/***********************************************************************
+* protocol_copyMethodDescriptionList
+* Returns an array of method descriptions from a protocol.
+* Copies either required or optional methods.
+* Copies either instance or class methods.
+**********************************************************************/
+struct objc_method_description *
+protocol_copyMethodDescriptionList(Protocol *p, 
+                                   BOOL isRequiredMethod, 
+                                   BOOL isInstanceMethod, 
+                                   unsigned int *outCount)
+{
+    struct objc_method_description_list *mlist = NULL;
+    struct old_protocol *proto = oldprotocol(p);
+    struct old_protocol_ext *ext;
+
+    if (!proto) {
+        if (outCount) *outCount = 0;
+        return NULL;
+    } 
+
+    if (isRequiredMethod) {
+        if (isInstanceMethod) {
+            mlist = proto->instance_methods;
+        } else {
+            mlist = proto->class_methods;
+        }
+    } else if ((ext = ext_for_protocol(proto))) {
+        if (isInstanceMethod) {
+            mlist = ext->optional_instance_methods;
+        } else {
+            mlist = ext->optional_class_methods;
+        }
+    }
+
+    if (!mlist) {
+        if (outCount) *outCount = 0;
+        return NULL;
+    }
+    
+    unsigned int i;
+    unsigned int count = mlist->count;
+    struct objc_method_description *result = 
+        calloc(count + 1, sizeof(struct objc_method_description));
+    for (i = 0; i < count; i++) {
+        result[i] = mlist->list[i];
+    }
+
+    if (outCount) *outCount = count;
+    return result;
+}
+
+
+Property protocol_getProperty(Protocol *p, const char *name, 
+                              BOOL isRequiredProperty, BOOL isInstanceProperty)
+{
+    struct old_protocol *proto = oldprotocol(p);
+
+    if (!proto  ||  !name) return NULL;
+    
+    if (!isRequiredProperty  ||  !isInstanceProperty) {
+        // Only required instance properties are currently supported
+        return NULL;
+    }
+
+    struct old_protocol_ext *ext;
+    if ((ext = ext_for_protocol(proto))) {
+        struct objc_property_list *plist;
+        if ((plist = ext->instance_properties)) {
+            uint32_t i;
+            for (i = 0; i < plist->count; i++) {
+                Property prop = property_list_nth(plist, i);
+                if (0 == strcmp(name, prop->name)) {
+                    return prop;
+                }
+            }
+        }
+    }
+
+    struct old_protocol_list *plist;
+    if ((plist = proto->protocol_list)) {
+        int i;
+        for (i = 0; i < plist->count; i++) {
+            Property prop = 
+                protocol_getProperty((Protocol *)plist->list[i], name, 
+                                     isRequiredProperty, isInstanceProperty);
+            if (prop) return prop;
+        }
+    }
+    
+    return NULL;
+}
+
+
+Property *protocol_copyPropertyList(Protocol *p, unsigned int *outCount)
+{
+    Property *result = NULL;
+    struct old_protocol_ext *ext;
+    
+    struct old_protocol *proto = oldprotocol(p);
+    if (! (ext = ext_for_protocol(proto))) {
+        if (outCount) *outCount = 0;
+        return NULL;
+    }
+
+    struct objc_property_list *plist = ext->instance_properties;
+    result = copyPropertyList(plist, outCount);
+    
+    return result;
+}
+
+
+/***********************************************************************
+* protocol_copyProtocolList
+* Copies this protocol's incorporated protocols. 
+* Does not copy those protocol's incorporated protocols in turn.
+**********************************************************************/
+Protocol **protocol_copyProtocolList(Protocol *p, unsigned int *outCount)
+{
+    unsigned int count = 0;
+    Protocol **result = NULL;
+    struct old_protocol *proto = oldprotocol(p);
+    
+    if (!proto) {
+        if (outCount) *outCount = 0;
+        return NULL;
+    }
+
+    if (proto->protocol_list) {
+        count = (unsigned int)proto->protocol_list->count;
+    }
+    if (count > 0) {
+        result = malloc((count+1) * sizeof(Protocol *));
+
+        unsigned int i;
+        for (i = 0; i < count; i++) {
+            result[i] = (Protocol *)proto->protocol_list->list[i];
+        }
+        result[i] = NULL;
+    }
+
+    if (outCount) *outCount = count;
+    return result;
+}
+
+
+BOOL protocol_conformsToProtocol(Protocol *self_gen, Protocol *other_gen)
+{
+    struct old_protocol *self = oldprotocol(self_gen);
+    struct old_protocol *other = oldprotocol(other_gen);
+
+    if (!self  ||  !other) {
+        return NO;
+    }
+
+    if (0 == strcmp(self->protocol_name, other->protocol_name)) {
+        return YES;
+    }
+
+    if (self->protocol_list) {
+        int i;
+        for (i = 0; i < self->protocol_list->count; i++) {
+            struct old_protocol *proto = self->protocol_list->list[i];
+            if (0 == strcmp(other->protocol_name, proto->protocol_name)) {
+                return YES;
+            }
+            if (protocol_conformsToProtocol((Protocol *)proto, other_gen)) {
+                return YES;
+            }
+        }
+    }
+
+    return NO;
+}
+
+
+BOOL protocol_isEqual(Protocol *self, Protocol *other)
+{
+    if (self == other) return YES;
+    if (!self  ||  !other) return NO;
+
+    if (!protocol_conformsToProtocol(self, other)) return NO;
+    if (!protocol_conformsToProtocol(other, self)) return NO;
+
+    return YES;
+}
+
+
+/***********************************************************************
+* _objc_fixup_protocol_objects_for_image.  For each protocol in the
+* specified image, selectorize the method names and add to the protocol hash.
+**********************************************************************/
+
+static BOOL versionIsExt(uintptr_t version, const char *names, size_t size)
+{
+    // CodeWarrior used isa field for string "Protocol" 
+    //   from section __OBJC,__class_names.  rdar://4951638
+    // gcc (10.4 and earlier) used isa field for version number; 
+    //   the only version number used on Mac OS X was 2.
+    // gcc (10.5 and later) uses isa field for ext pointer
+
+    if (version < 4096) {
+        return NO;
+    }
+
+    if (version >= (uintptr_t)names  &&  version < (uintptr_t)(names + size)) {
+        return NO;
+    }
+
+    return YES;
+}
+
+static void fix_protocol(struct old_protocol *proto, Class protocolClass, 
+                         BOOL isBundle, const char *names, size_t names_size)
+{
+#warning GrP fixme hack
+    if (!proto) return;
+
+    uintptr_t version = (uintptr_t)proto->isa;
+
+    // Set the protocol's isa
+    proto->isa = protocolClass;
+
+    // Fix up method lists
+    // fixme share across duplicates
+    map_method_descs (proto->instance_methods, isBundle);
+    map_method_descs (proto->class_methods, isBundle);
+
+    // Fix up ext, if any
+    if (versionIsExt(version, names, names_size)) {
+        struct old_protocol_ext *ext = (struct old_protocol_ext *)version;
+        NXMapInsert(protocol_ext_map, proto, ext);
+        map_method_descs (ext->optional_instance_methods, isBundle);
+        map_method_descs (ext->optional_class_methods, isBundle);
+    }
+    
+    // Record the protocol it if we don't have one with this name yet
+    // fixme bundles - copy protocol
+    // fixme unloading
+    if (!NXMapGet(protocol_map, proto->protocol_name)) {
+        NXMapKeyCopyingInsert(protocol_map, proto->protocol_name, proto);
+        if (PrintProtocols) {
+            _objc_inform("PROTOCOLS: protocol at %p is %s",
+                         proto, proto->protocol_name);
+        }
+    } else {
+        // duplicate - do nothing
+        if (PrintProtocols) {
+            _objc_inform("PROTOCOLS: protocol at %p is %s (duplicate)",
+                         proto, proto->protocol_name);
+        }
+    }
+}
+
+static void _objc_fixup_protocol_objects_for_image (header_info * hi)
+{
+    Class protocolClass = objc_getClass("Protocol");
+    size_t count, i;
+    struct old_protocol *protos;
+    int isBundle = hi->mhdr->filetype == MH_BUNDLE;
+    const char *names;
+    size_t names_size;
+
+    OBJC_LOCK(&classLock);
+
+    // Allocate the protocol registry if necessary.
+    if (!protocol_map) {
+        protocol_map = 
+            NXCreateMapTableFromZone(NXStrValueMapPrototype, 32, 
+                                     _objc_internal_zone());
+    }
+    if (!protocol_ext_map) {
+        protocol_ext_map = 
+            NXCreateMapTableFromZone(NXPtrValueMapPrototype, 32, 
+                                     _objc_internal_zone());        
+    }
+
+    protos = _getObjcProtocols(hi, &count);
+    names = _getObjcClassNames(hi, &names_size);
+    for (i = 0; i < count; i++) {
+        fix_protocol(&protos[i], protocolClass, isBundle, names, names_size);
+    }
+
+    OBJC_UNLOCK(&classLock);
+}
+
+
+/***********************************************************************
+* _objc_fixup_selector_refs.  Register all of the selectors in each
+* image, and fix them all up.
+**********************************************************************/
+static void _objc_fixup_selector_refs   (const header_info *hi)
+{
+    size_t count;
+    SEL *sels;
+
+    // Fix up selector refs
+    sels = _getObjcSelectorRefs (hi, &count);
+    if (sels) {
+        map_selrefs(sels, sels, count * sizeof(SEL), 
+                    hi->mhdr->filetype == MH_BUNDLE);
+    }
+}
+
+
+/***********************************************************************
+* _read_images
+* Perform metadata processing for hCount images starting with firstNewHeader
+**********************************************************************/
+__private_extern__ void _read_images(header_info **hList, uint32_t hCount)
+{
+    uint32_t i;
+
+    if (!class_hash) _objc_init_class_hash();
+
+    // Parts of this order are important for correctness or performance.
+
+    // Read classes from all images.
+    for (i = 0; i < hCount; i++) {
+        _objc_read_classes_from_image(hList[i]);
+    }
+
+    // Read categories from all images. 
+    BOOL needFlush = NO;
+    for (i = 0; i < hCount; i++) {
+        needFlush |= _objc_read_categories_from_image(hList[i]);
+    }
+    if (needFlush) flush_marked_caches();
+
+    // Connect classes from all images.
+    for (i = 0; i < hCount; i++) {
+        _objc_connect_classes_from_image(hList[i]);
+    }
+
+    // Fix up class refs, selector refs, and protocol objects from all images.
+    for (i = 0; i < hCount; i++) {
+        _objc_map_class_refs_for_image(hList[i]);
+        _objc_fixup_selector_refs(hList[i]);
+        _objc_fixup_protocol_objects_for_image(hList[i]);
+    }
+}
+
+
+/***********************************************************************
+* prepare_load_methods
+* Schedule +load for classes in this image, any un-+load-ed 
+* superclasses in other images, and any categories in this image.
+**********************************************************************/
+// Recursively schedule +load for cls and any un-+load-ed superclasses.
+// cls must already be connected.
+static void schedule_class_load(struct old_class *cls)
+{
+    if (cls->info & CLS_LOADED) return;
+    if (cls->super_class) schedule_class_load(cls->super_class);
+    add_class_to_loadable_list((Class)cls);
+    cls->info |= CLS_LOADED;
+}
+
+__private_extern__ void prepare_load_methods(header_info *hi)
+{
+    Module mods;
+    unsigned int midx;
+    
+
+    if (_objcHeaderIsReplacement(hi)) {
+        // Ignore any classes in this image
+        return;
+    }
+
+    // Major loop - process all modules in the image
+    mods = hi->mod_ptr;
+    for (midx = 0; midx < hi->mod_count; midx += 1)
+    {
+        unsigned int index;
+
+        // 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)
+        {
+            // Locate the class description pointer
+            struct old_class *cls = mods[midx].symtab->defs[index];
+            if (cls->info & CLS_CONNECTED) {
+                schedule_class_load(cls);
+            }
+        }
+    }
+
+
+    // Major loop - process all modules in the header
+    mods = hi->mod_ptr;
+
+    // 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;
+        Symtab symtab = mods[midx].symtab;
+
+        // 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;
+        
+        // Minor loop - register all categories from given module
+        index = total;
+        while (index-- > mods[midx].symtab->cls_def_cnt) {
+            struct old_category *cat = symtab->defs[index];
+            add_category_to_loadable_list((Category)cat);
+        }
+    }
+}
+
+
+/***********************************************************************
+* _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
+**********************************************************************/
+// Re-pend any class references in refs that point into [start..end)
+static void rependClassReferences(struct old_class **refs, size_t count, 
+                                  uintptr_t start, uintptr_t end)
+{
+    size_t i;
+
+    if (!refs) return;
+
+    // Process each class ref
+    for (i = 0; i < count; i++) {
+        if ((uintptr_t)(refs[i]) >= start  &&  (uintptr_t)(refs[i]) < end) {
+            pendClassReference(&refs[i], refs[i]->name, 
+                               (refs[i]->info & CLS_META) ? YES : NO);
+            refs[i] = (struct old_class *)_class_getNonexistentObjectClass();
+        }
+    }
+}
+
+
+static void try_free(const void *p)
+{
+    if (p  &&  malloc_size(p)) free((void *)p);
+}
+
+// Deallocate all memory in a method list
+static void unload_mlist(struct old_method_list *mlist) 
+{
+    int i;
+    if (mlist->obsolete == _OBJC_FIXED_UP) {
+        for (i = 0; i < mlist->method_count; i++) {
+            try_free(mlist->method_list[i].method_types);
+        }
+        
+        try_free(mlist);
+    }
+}
+
+// Deallocate all memory in a class. 
+__private_extern__ void unload_class(struct old_class *cls)
+{
+    // Free ivar lists
+    if (cls->ivars) {
+        int i;
+        for (i = 0; i < cls->ivars->ivar_count; i++) {
+            try_free(cls->ivars->ivar_list[i].ivar_name);
+            try_free(cls->ivars->ivar_list[i].ivar_type);
+        }
+        try_free(cls->ivars);
+    }
+
+    // Free fixed-up method lists and method list array
+    if (cls->methodLists) {
+        // more than zero method lists
+        if (cls->info & CLS_NO_METHOD_ARRAY) {
+            // one method list
+            unload_mlist((struct old_method_list *)cls->methodLists);
+        } 
+        else {
+            // more than one method list
+            struct old_method_list **mlistp;
+            for (mlistp = cls->methodLists; 
+                 *mlistp != NULL  &&  *mlistp != END_OF_METHODS_LIST; 
+                 mlistp++) 
+            {
+                unload_mlist(*mlistp);
+            }
+            free(cls->methodLists);
+        }
+    }
+
+    // Free protocol list
+    struct old_protocol_list *protos = cls->protocols;
+    while (protos) {
+        struct old_protocol_list *dead = protos;
+        protos = protos->next;
+        try_free(dead);
+    }
+
+    // Free method cache
+    if (cls->cache  &&  cls->cache != &_objc_empty_cache) {
+        _cache_free(cls->cache);
+    }
+
+    if ((cls->info & CLS_EXT)) {
+        if (cls->ext) {
+            // Free property lists and property list array
+            if (cls->ext->propertyLists) {
+                // more than zero property lists
+                if (cls->info & CLS_NO_PROPERTY_ARRAY) {
+                    // one property list
+                    try_free(cls->ext->propertyLists);
+                } else {
+                    // more than one property list
+                    struct objc_property_list **plistp;
+                    for (plistp = cls->ext->propertyLists; 
+                         *plistp != NULL; 
+                         plistp++) 
+                    {
+                        try_free(*plistp);
+                    }
+                    try_free(cls->ext->propertyLists);
+                }
+            }
+
+            // Free weak ivar layout
+            try_free(cls->ext->weak_ivar_layout);
+
+            // Free ext
+            try_free(cls->ext);
+        }
+
+        // Free non-weak ivar layout
+        try_free(cls->ivar_layout);
+    }
+
+    // Free class name
+    try_free(cls->name);
+
+    // Free cls
+    try_free(cls);
+}
+
+
+static void _objc_remove_classes_in_image(header_info *hi)
+{
+    unsigned int       index;
+    unsigned int       midx;
+    Module             mods;
+
+    OBJC_LOCK(&classLock);
+    
+    // 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 old_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((Class)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 heap memory pointed to by the class
+            unload_class(cls->isa);
+            unload_class(cls);
+        }
+    }
+
+
+    // Search all other images for class refs that point back to this range.
+    // Un-fix and re-pend any such class refs.
+
+    // 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;
+
+    header_info *other_hi;
+    for (other_hi = _objc_headerStart(); 
+         other_hi != NULL; 
+         other_hi = other_hi->next) 
+    {
+        struct old_class **other_refs;
+        size_t count;
+        if (other_hi == hi) continue;  // skip the image being unloaded
+
+        // Fix class refs in the other image
+        other_refs = _getObjcClassRefs(other_hi, &count);
+        rependClassReferences(other_refs, count, seg, seg+seg_size);
+    }
+
+    OBJC_UNLOCK(&classLock);
+}
+
+
+/***********************************************************************
+* _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 old_category *cat = symtab->defs[index];
+
+            // Clean up loadable category list
+            remove_category_from_loadable_list((Category)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;
+                    }
+                }
+            }
+        }
+    }
+}
+
+
+/***********************************************************************
+* 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;
+
+    _objc_inform("UNLOAD DEBUG: unloading image '%s' [%p..%p]", 
+                 _nameForHeader(hi->mhdr), (void *)seg, (void*)(seg+seg_size));
+
+    OBJC_LOCK(&classLock);
+
+    // 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 old_category *cat = symtab->defs[index];
+                struct old_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);
+                }
+            }
+        }
+    }
+
+    // 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 old_class *cls;
+        NXHashState state;
+
+        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);
+            }
+        }
+    }
+
+    OBJC_UNLOCK(&classLock);
+}
+
+
+/***********************************************************************
+* _unload_image
+* Only handles MH_BUNDLE for now.
+**********************************************************************/
+__private_extern__ void _unload_image(header_info *hi)
+{
+    // 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);
+}
+
+
+/***********************************************************************
+* objc_addClass.  Add the specified class to the table of known classes,
+* after doing a little verification and fixup.
+**********************************************************************/
+void           objc_addClass           (Class cls_gen)
+{
+    struct old_class *cls = _class_asOld(cls_gen);
+
+    OBJC_WARN_DEPRECATED;
+
+    // Synchronize access to hash table
+    OBJC_LOCK (&classLock);
+
+    // Make sure both the class and the metaclass have caches!
+    // 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 (cls->cache == NULL) {
+        cls->cache = (Cache) &_objc_empty_cache;
+        cls->info = CLS_CLASS;
+    }
+
+    if (cls->isa->cache == NULL) {
+        cls->isa->cache = (Cache) &_objc_empty_cache;
+        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);
+
+    // Superclass is no longer a leaf for cache flushing
+    if (cls->super_class && (cls->super_class->info & CLS_LEAF)) {
+        _class_clearInfo((Class)cls->super_class, CLS_LEAF);
+        _class_clearInfo((Class)cls->super_class->isa, CLS_LEAF);
+    }
+
+    // Desynchronize
+    OBJC_UNLOCK (&classLock);
+}
+
+/***********************************************************************
+* _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 old_class *cls)
+{
+    struct old_method_list *   originalList;
+    const int                                  initialEntries = 4;
+    size_t                                                     mallocSize;
+    struct old_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 old_method_list *) cls->methodLists;
+
+    // Allocate and zero a method list array
+    mallocSize   = sizeof(struct old_method_list *) * initialEntries;
+    ptr             = (struct old_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
+    cls->methodLists = ptr;
+    _class_clearInfo((Class)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.
+**********************************************************************/
+__private_extern__ void _objc_insertMethods(struct old_class *cls, 
+                                            struct old_method_list *mlist, 
+                                            struct old_category *cat)
+{
+    struct old_method_list ***list;
+    struct old_method_list **ptr;
+    ptrdiff_t endIndex;
+    size_t oldSize;
+    size_t newSize;
+
+    if (!cls->methodLists) {
+        // cls has no methods - simply use this method list
+        cls->methodLists = (struct old_method_list **)mlist;
+        _class_setInfo((Class)cls, CLS_NO_METHOD_ARRAY);
+        return;
+    }
+
+    // Log any existing methods being replaced
+    if (PrintReplacedMethods) {
+        int i;
+        for (i = 0; i < mlist->method_count; i++) {
+            extern IMP findIMPInClass(struct old_class *cls, SEL sel);
+            SEL sel = sel_registerName((char *)mlist->method_list[i].method_name);
+            IMP newImp = mlist->method_list[i].method_imp;
+            IMP oldImp;
+
+            if ((oldImp = findIMPInClass(cls, sel))) {
+                _objc_inform("REPLACED: %c[%s %s]  %s%s  (IMP was %p, now %p)",
+                             ISMETA(cls) ? '+' : '-',
+                             cls->name, sel_getName(sel), 
+                             cat ? "by category " : "", 
+                             cat ? cat->category_name : "", 
+                             oldImp, newImp);
+            }
+        }
+    }
+
+    // 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, add to it
+    if (*ptr == END_OF_METHODS_LIST)
+    {
+        // Calculate old and new dimensions
+        endIndex = ptr - *list;
+        oldSize  = (endIndex + 1) * sizeof(void *);
+        newSize  = oldSize + sizeof(struct old_method_list *); // only increase by 1
+
+        // Grow the method list array by one.
+        // This block may be from user code; don't use _realloc_internal
+        *list = (struct old_method_list **)realloc(*list, newSize);
+
+        // Zero out addition part of new array
+        bzero (&((*list)[endIndex]), newSize - oldSize);
+
+        // Place new end marker
+        (*list)[(newSize/sizeof(void *)) - 1] = END_OF_METHODS_LIST;
+
+        // Insertion point corresponds to old array end
+        ptr = &((*list)[endIndex]);
+    }
+
+    // Right shift existing entries by one
+    bcopy (*list, (*list) + 1, ((void *) ptr) - ((void *) *list));
+
+    // Insert at method list at beginning of array
+    **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.
+**********************************************************************/
+__private_extern__ void _objc_removeMethods(struct old_class *cls, 
+                                            struct old_method_list *mlist)
+{
+    struct old_method_list ***list;
+    struct old_method_list **ptr;
+
+    if (cls->methodLists == NULL) {
+        // cls has no methods
+        return;
+    }
+    if (cls->methodLists == (struct old_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;
+    while (*ptr != mlist) {
+        // fix for radar # 2538790
+        if ( *ptr == END_OF_METHODS_LIST ) return;
+        ptr += 1;
+    }
+
+    // Remove this entry
+    *ptr = 0;
+
+    // Left shift the following entries
+    while (*(++ptr) != END_OF_METHODS_LIST)
+        *(ptr-1) = *ptr;
+    *(ptr-1) = 0;
+}
+
+/***********************************************************************
+* _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 old_class *cls, struct old_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 (cls, category->instance_methods, category);
+
+    // Augment class methods
+    if (category->class_methods)
+        _objc_insertMethods (cls->isa, category->class_methods, category);
+
+    // Augment protocols
+    if ((version >= 5) && category->protocols)
+    {
+        if (cls->isa->version >= 5)
+        {
+            category->protocols->next = cls->protocols;
+            cls->protocols               = category->protocols;
+            cls->isa->protocols       = category->protocols;
+        }
+        else
+        {
+            _objc_inform ("unable to add protocols from category %s...\n", category->category_name);
+            _objc_inform ("class `%s' must be recompiled\n", category->class_name);
+        }
+    }
+
+    // Augment properties
+    if (version >= 7  &&  category->instance_properties) {
+        if (cls->isa->version >= 6) {
+            _class_addProperties(cls, category->instance_properties);
+        } else {
+            _objc_inform ("unable to add properties from category %s...\n", category->category_name);
+            _objc_inform ("class `%s' must be recompiled\n", category->class_name);
+        }
+    }
+}
+
+/***********************************************************************
+* _objc_add_category_flush_caches.  Install the specified category's 
+* methods into the class it augments, and flush the class' method cache.
+* Return YES if some method caches now need to be flushed.
+**********************************************************************/
+static BOOL _objc_add_category_flush_caches(struct old_class *cls, struct old_category *category, int version)
+{
+    BOOL needFlush = NO;
+
+    // Install the category's methods into its intended class
+    OBJC_LOCK(&methodListLock);
+    _objc_add_category (cls, category, version);
+    OBJC_UNLOCK(&methodListLock);
+
+    // Queue for cache flushing so category's methods can get called
+    if (category->instance_methods) {
+        _class_setInfo((Class)cls, CLS_FLUSH_CACHE);
+        needFlush = YES;
+    }
+    if (category->class_methods) {
+        _class_setInfo((Class)cls->isa, CLS_FLUSH_CACHE);
+        needFlush = YES;
+    }
+    
+    return needFlush;
+}
+
+
+/***********************************************************************
+* 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;
+}
+
+
+/***********************************************************************
+* resolve_categories_for_class.  
+* Install all existing categories intended for the specified class.
+* cls must be a true class and not a metaclass.
+**********************************************************************/
+static void resolve_categories_for_class(struct old_class *cls)
+{
+    _objc_unresolved_category *        pending;
+    _objc_unresolved_category *        next;
+
+    // Nothing to do if there are no categories at all
+    if (!category_hash) return;
+
+    // Locate and remove first element in category list
+    // associated with this class
+    pending = NXMapKeyFreeingRemove (category_hash, cls->name);
+
+    // Traverse the list of categories, if any, registered for this class
+
+    // 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, (int)pending->version);
+        }
+
+        // Delink and reclaim this registration
+        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(Class cls_gen)
+{
+    struct old_class *cls = _class_asOld(cls_gen);
+
+    // 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 = _class_asOld(objc_getClass(baseName));
+        } else {
+            cls = _class_asOld(objc_getClass(cls->name));
+        }
+    }
+
+    resolve_categories_for_class(cls);
+}
+
+
+/***********************************************************************
+* _objc_register_category.
+* Process a category read from an image. 
+* If the category's class exists, attach the category immediately. 
+*   Classes that need cache flushing are marked but not flushed.
+* 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.
+* Returns YES if some method caches now need to be flushed.
+**********************************************************************/
+static BOOL _objc_register_category(struct old_category *cat, int version)
+{
+    _objc_unresolved_category *        new_cat;
+    _objc_unresolved_category *        old;
+    struct old_class *theClass;
+
+    // If the category's class exists, attach the category.
+    if ((theClass = _class_asOld(objc_lookUpClass(cat->class_name)))) {
+        return _objc_add_category_flush_caches(theClass, cat, version);
+    }
+    
+    // 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 = _class_asOld(look_up_class(cat->class_name, YES, NO)))) {
+        _objc_add_category(theClass, cat, version);
+        return NO;
+    }
+
+
+    // 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_internal_zone ());
+
+    // 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.
+    // 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;
+    (void) NXMapKeyCopyingInsert (category_hash, cat->class_name, new_cat);
+
+    return NO;
+}
+
+
+__private_extern__ const char **
+_objc_copyClassNamesForImage(header_info *hi, unsigned int *outCount)
+{
+    Module mods;
+    int m;
+    const char **list;
+    int count;
+    int allocated;
+
+    list = NULL;
+    count = 0;
+    allocated = 0;
+    
+    mods = hi->mod_ptr;
+    for (m = 0; m < hi->mod_count; m++) {
+        int d;
+
+        if (!mods[m].symtab) continue;
+        
+        for (d = 0; d < mods[m].symtab->cls_def_cnt; d++) {
+            struct old_class *cls = mods[m].symtab->defs[d];
+            // fixme what about future-ified classes?
+            if (class_is_connected(cls)) {
+                if (count == allocated) {
+                    allocated = allocated*2 + 16;
+                    list = realloc(list, allocated * sizeof(char *));
+                }
+                list[count++] = cls->name;
+            }
+        }
+    }
+
+    if (count > 0) {
+        // NULL-terminate non-empty list
+        if (count == allocated) {
+            allocated = allocated+1;
+            list = realloc(list, allocated * sizeof(char *));
+        }
+        list[count] = NULL;
+    }
+
+    if (outCount) *outCount = count;
+    return list;
+}
+
+#endif
index 21acf9245df5b3ee8a3f43bd108af64f3504637f..1701b1ec0851a9cce5aa34acbd67a64e02fce9b2 100644 (file)
@@ -1,200 +1,2 @@
-/*
- * Copyright (c) 1999 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-runtime.h
- *     Copyright 1988-1996, NeXT Software, Inc.
- */
-
-#ifndef _OBJC_RUNTIME_H_
-#define _OBJC_RUNTIME_H_
-
-#import <stdarg.h>
-#import <AvailabilityMacros.h>
-#import <objc/objc.h>
-#import <objc/objc-class.h>
-
-#if !defined(AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER)
-    /* For 10.2 compatibility */
-#   define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
-#endif
-
-typedef struct objc_symtab *Symtab;
-
-struct objc_symtab {
-       unsigned long   sel_ref_cnt;
-       SEL             *refs;          
-       unsigned short  cls_def_cnt;
-       unsigned short  cat_def_cnt;
-       void            *defs[1];       /* variable size */
-};
-
-typedef struct objc_module *Module;
-
-struct objc_module {
-       unsigned long   version;
-       unsigned long   size;
-       const char      *name;
-       Symtab          symtab; 
-};
-
-struct objc_super {
-       id receiver;
-#ifndef __cplusplus
-       Class class;
-#else
-       Class super_class;
-#endif
-};
-
-/*
- * Messaging Primitives (prototypes)
- */
-
-OBJC_EXPORT id objc_getClass(const char *name);
-OBJC_EXPORT id objc_getMetaClass(const char *name);
-OBJC_EXPORT id objc_msgSend(id self, SEL op, ...);
-OBJC_EXPORT id objc_msgSendSuper(struct objc_super *super, SEL op, ...);
-
-
-/* Floating-point-returning Messaging Primitives (prototypes)
- * 
- * On some platforms, the ABI for functions returning a floating-point 
- * value is incompatible with that for functions returning an integral type. 
- * objc_msgSend_fpret must be used for these. 
- * 
- * ppc: objc_msgSend_fpret not used
- * ppc64: objc_msgSend_fpret not used
- * i386: objc_msgSend_fpret REQUIRED
- *
- * For `float` or `long double` return types, cast the function 
- * to an appropriate function pointer type first.
- */
-
-#ifdef __i386__
-OBJC_EXPORT double objc_msgSend_fpret(id self, SEL op, ...);
-#endif
-
-
-/* Struct-returning Messaging Primitives (prototypes)
- *
- * For historical reasons, the prototypes for the struct-returning 
- * messengers are unusual. The portable, correct way to call these functions 
- * is to cast them to your desired return type first.
- * 
- * For example, `NSRect result = [myNSView frame]` could be written as:
- *   NSRect (*msgSend_stret_fn)(id, SEL, ...) = (NSRect(*)(id, SEL, ...))objc_msgSend_stret;
- *   NSRect result = (*msgSend_stret_fn)(myNSView, @selector(frame));
- * or, without the function pointer:
- *   NSRect result = (*(NSRect(*)(id, SEL, ...))objc_msgSend_stret)(myNSView, @selector(frame));
- * 
- * BE WARNED that these prototypes have changed in the past and will change 
- * in the future. Code that uses a cast like the example above will be 
- * unaffected. 
- */
-
-#if defined(__cplusplus)
-  OBJC_EXPORT id objc_msgSend_stret(id self, SEL op, ...);
-  OBJC_EXPORT id objc_msgSendSuper_stret(struct objc_super *super, SEL op, ...);
-#else
-  OBJC_EXPORT void objc_msgSend_stret(void * stretAddr, id self, SEL op, ...);
-  OBJC_EXPORT void objc_msgSendSuper_stret(void * stretAddr, struct objc_super *super, SEL op, ...);
-#endif
-
-
-/* Forwarding */
-
-/* Note that objc_msgSendv_stret() does not return a structure type, 
- * and should not be cast to do so. This is unlike objc_msgSend_stret() 
- * and objc_msgSendSuper_stret().
- */
-
-OBJC_EXPORT id objc_msgSendv(id self, SEL op, unsigned arg_size, marg_list arg_frame);
-OBJC_EXPORT void objc_msgSendv_stret(void * stretAddr, id self, SEL op, unsigned arg_size, marg_list arg_frame);
-#ifdef __i386__
-OBJC_EXPORT double objc_msgSendv_fpret(id self, SEL op, unsigned arg_size, marg_list arg_frame);
-#endif
-
-
-/* 
-    getting all the classes in the application...
-    
-    int objc_getClassList(buffer, bufferLen)
-       classes is an array of Class values (which are pointers)
-               which will be filled by the function; if this
-               argument is NULL, no copying is done, only the
-               return value is returned
-       bufferLen is the number of Class values the given buffer
-               can hold; if the buffer is not large enough to
-               hold all the classes, the buffer is filled to
-               the indicated capacity with some arbitrary subset
-               of the known classes, which could be different
-               from call to call
-       returns the number of classes, which is the number put
-               in the buffer if the buffer was large enough,
-               or the length the buffer should have been
-
-    int numClasses = 0, newNumClasses = objc_getClassList(NULL, 0);
-    Class *classes = NULL;
-    while (numClasses < newNumClasses) {
-        numClasses = newNumClasses;
-        classes = realloc(classes, sizeof(Class) * numClasses);
-        newNumClasses = objc_getClassList(classes, numClasses);
-    }
-    // now, can use the classes list; if NULL, there are no classes
-    free(classes);
-
-*/
-OBJC_EXPORT int objc_getClassList(Class *buffer, int bufferLen);
-
-#define OBSOLETE_OBJC_GETCLASSES 1
-#if OBSOLETE_OBJC_GETCLASSES
-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 */
-
-OBJC_EXPORT void objc_setClassHandler(int (*)(const char *));
-
-/* Making the Objective-C runtime thread safe. */
-OBJC_EXPORT void objc_setMultithreaded (BOOL flag);
-
-/* overriding the default object allocation and error handling routines */
-
-OBJC_EXPORT id (*_alloc)(Class, unsigned int);
-OBJC_EXPORT id (*_copy)(id, unsigned int);
-OBJC_EXPORT id (*_realloc)(id, unsigned int);
-OBJC_EXPORT id (*_dealloc)(id);
-OBJC_EXPORT id (*_zoneAlloc)(Class, unsigned int, void *);
-OBJC_EXPORT id (*_zoneRealloc)(id, unsigned int, void *);
-OBJC_EXPORT id (*_zoneCopy)(id, unsigned int, void *);
-
-OBJC_EXPORT void       (*_error)(id, const char *, va_list);
-
-
-#endif /* _OBJC_RUNTIME_H_ */
+#import <objc/runtime.h>
+#import <objc/message.h>
index 3b90f09f685e62440c369692a13c2b32a7e053a3..99db00e875a9c123c1f0203277c3b478f493b79f 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
+ * Copyright (c) 1999-2007 Apple Inc.  All Rights Reserved.
  * 
- * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
+ * @APPLE_LICENSE_HEADER_START@
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
 *
 **********************************************************************/
 
-/***********************************************************************
- * 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. 
- *   Note any +load implementations before categories are attached.
- *   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.
- * 
- * Correctness: all classes are scanned for +load before any categories 
- * are attached. Otherwise, if a category implements +load and its class 
- * has no class methods, the class's +load scan would find the category's 
- * +load method, which would then be called twice.
- * 
- **********************************************************************/
 
 
 /***********************************************************************
 #include <mach-o/ldsyms.h>
 #include <mach-o/dyld.h>
 #include <mach-o/dyld_gdb.h>
+#include <mach-o/dyld_priv.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/objc-runtime.h>
-#import <objc/hashtable2.h>
-#import "maptable.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>
+#include <crt_externs.h>
+#include <libgen.h>
 
-/* NXHashTable SPI */
-OBJC_EXPORT unsigned _NXHashCapacity(NXHashTable *table);
-OBJC_EXPORT void _NXHashRehashToCapacity(NXHashTable *table, unsigned newCapacity);
-
-
-OBJC_EXPORT Class _objc_getNonexistentClass(void);
-
-
-OBJC_EXPORT Class getOriginalClassForPosingClass(Class);
-
-
-/***********************************************************************
-* Constants and macros internal to this module.
-**********************************************************************/
-
-/* Turn on support for literal string objects. */
-#define LITERAL_STRING_OBJECTS
-
-/***********************************************************************
-* Types internal to this module.
-**********************************************************************/
-
-typedef struct _objc_unresolved_category
-{
-    struct _objc_unresolved_category * next;
-    struct objc_category *                     cat;  // may be NULL
-    long                                       version;
-} _objc_unresolved_category;
-
-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;  // 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.
-**********************************************************************/
-
-// Function called after class has been fixed up (MACH only)
-void           (*callbackFunction)(Class, const char *) = 0;
-
-// Lock for class hashtable
-OBJC_DECLARE_LOCK (classLock);
-
-// 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
-__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";
-
-
-/***********************************************************************
-* Function prototypes internal to this module.
-**********************************************************************/
-
-static unsigned                        classHash                                                       (void * info, struct objc_class * data);
-static int                             classIsEqual                                            (void * info, struct objc_class * name, struct objc_class * cls);
-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);
-static void                            _objc_read_categories_from_image                (header_info * hi);
-static const header_info * _headerForClass                                     (struct objc_class * cls);
-static NXMapTable *            pendingClassRefsMapTable                        (void);
-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                            _objc_fixup_protocol_objects_for_image  (header_info * hi);
-static void                            _objc_fixup_selector_refs                       (const header_info * hi);
-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 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 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 NOBSS = 0;
-static NXHashTablePrototype    classHashPrototype =
-{
-    (unsigned (*) (const void *, const void *))                        classHash,
-    (int (*)(const void *, const void *, const void *))        classIsEqual,
-    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;
-
-// Function pointer objc_getClass calls through when class is not found
-static int                     (*objc_classHandler) (const char *) = _objc_defaultClassHandler;
-
-// Function pointer called by objc_getClass and objc_lookupClass when 
-// class is not found. _objc_classLoader is called before objc_classHandler.
-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;
-
-// 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.
-**********************************************************************/
-void   objc_dump_class_hash           (void)
-{
-    NXHashTable *      table;
-    unsigned           count;
-    struct objc_class  *               data;
-    NXHashState                state;
-
-    table = class_hash;
-    count = 0;
-    state = NXInitHashState (table);
-    while (NXNextHashState (table, &state, (void **) &data))
-        printf ("class %d: %s\n", ++count, data->name);
-}
-
-/***********************************************************************
-* classHash.
-**********************************************************************/
-static unsigned                classHash              (void *          info,
-                                   struct objc_class *         data)
-{
-    // Nil classes hash to zero
-    if (!data)
-        return 0;
-
-    // Call through to real hash function
-    return _objc_strhash ((unsigned char *) ((struct objc_class *) data)->name);
-}
-
-/***********************************************************************
-* classIsEqual.  Returns whether the class names match.  If we ever
-* check more than the name, routines like objc_lookUpClass have to
-* change as well.
-**********************************************************************/
-static int             classIsEqual           (void *          info,
-                                 struct objc_class *           name,
-                                 struct objc_class *           cls)
-{
-    // Standard string comparison
-    // Our local inlined version is significantly shorter on PPC and avoids the
-    // mflr/mtlr and dyld_stub overhead when calling strcmp.
-    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.
-**********************************************************************/
-void   _objc_init_class_hash          (void)
-{
-    // Do nothing if class hash table already exists
-    if (class_hash)
-        return;
-
-    // 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,
-                                            16,
-                                            nil,
-                                            _objc_internal_zone ());
-    _objc_debug_class_hash = class_hash;
-}
-
-/***********************************************************************
-* objc_getClassList.  Return the known classes.
-**********************************************************************/
-int objc_getClassList(Class *buffer, int bufferLen) {
-    NXHashState state;
-    struct objc_class * class;
-    int cnt, num;
-
-    OBJC_LOCK(&classLock);
-    num = NXCountHashTable(class_hash);
-    if (NULL == buffer) {
-        OBJC_UNLOCK(&classLock);
-        return num;
-    }
-    cnt = 0;
-    state = NXInitHashState(class_hash);
-    while (cnt < bufferLen  &&  
-           NXNextHashState(class_hash, &state, (void **)&class)) 
-    {
-        buffer[cnt++] = class;
-    }
-    OBJC_UNLOCK(&classLock);
-    return num;
-}
-
-/***********************************************************************
-* objc_getClasses.  Return class lookup table.
-*
-* NOTE: This function is very dangerous, since you cannot safely use
-* the hashtable without locking it, and the lock is private!
-**********************************************************************/
-void *         objc_getClasses        (void)
-{
-    // Return the class lookup hash table
-    return class_hash;
-}
-
-/***********************************************************************
-* _objc_defaultClassHandler.  Default objc_classHandler.  Does nothing.
-**********************************************************************/
-static int     _objc_defaultClassHandler      (const char *    clsName)
-{
-    // Return zero so objc_getClass doesn't bother re-searching
-    return 0;
-}
-
-/***********************************************************************
-* objc_setClassHandler.  Set objc_classHandler to the specified value.
-*
-* NOTE: This should probably deal with userSuppliedHandler being NULL,
-* because the objc_classHandler caller does not check... it would bus
-* error.  It would make sense to handle NULL by restoring the default
-* handler.  Is anyone hacking with this, though?
-**********************************************************************/
-void   objc_setClassHandler    (int    (*userSuppliedHandler) (const char *))
-{
-    objc_classHandler = userSuppliedHandler;
-}
-
-
-/***********************************************************************
-* 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)
-**********************************************************************/
-static id look_up_class(const char *aClassName, BOOL includeUnconnected, BOOL includeClassHandler)
-{
-    BOOL includeClassLoader = YES; // class loader cannot be skipped
-    id result = nil;
-    struct objc_class query;
-
-    query.name = aClassName;
-
- retry:
-
-    if (!result  &&  class_hash) {
-        // Check ordinary classes
-        OBJC_LOCK (&classLock);
-        result = (id)NXHashGet(class_hash, &query);
-        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 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 
-* a new class.
-*
-* Formerly objc_getClassWithoutWarning ()
-**********************************************************************/
-id             objc_lookUpClass       (const char *    aClassName)
-{
-    // NO unconnected, NO class handler
-    return look_up_class(aClassName, NO, NO);
-}
-
-/***********************************************************************
-* objc_getMetaClass.  Return the id of the meta class the named class.
-* Warning: doesn't work if aClassName is the name of a posed-for class's isa!
-**********************************************************************/
-id             objc_getMetaClass       (const char *   aClassName)
-{
-    struct objc_class *        cls;
-
-    cls = objc_getClass (aClassName);
-    if (!cls)
-    {
-        _objc_inform ("class `%s' not linked into application", aClassName);
-        return Nil;
-    }
-
-    return cls->isa;
-}
-
-/***********************************************************************
-* objc_addClass.  Add the specified class to the table of known classes,
-* after doing a little verification and fixup.
-**********************************************************************/
-void           objc_addClass           (struct objc_class *cls)
-{
-    // Synchronize access to hash table
-    OBJC_LOCK (&classLock);
-
-    // Make sure both the class and the metaclass have caches!
-    // 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 (cls->cache == NULL) {
-        cls->cache = (Cache) &emptyCache;
-        cls->info = CLS_CLASS;
-    }
-
-    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);
-
-    // Desynchronize
-    OBJC_UNLOCK (&classLock);
-}
-
-/***********************************************************************
-* _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)
-{
-    struct objc_method_list *  originalList;
-    const int                                  initialEntries = 4;
-    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;
+#include <crt_externs.h>
+#include <libgen.h>
 
-    // Allocate and zero a method list array
-    mallocSize   = sizeof(struct objc_method_list *) * initialEntries;
-    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
-    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_class *cls, 
-                         struct objc_method_list *mlist)
-{
-    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, add to it
-    if (*ptr == END_OF_METHODS_LIST)
-    {
-        // Calculate old and new dimensions
-        endIndex = ptr - *list;
-        oldSize  = (endIndex + 1) * sizeof(void *);
-        newSize  = oldSize + sizeof(struct objc_method_list *); // only increase by 1
-
-        // 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);
-
-        // Place new end marker
-        (*list)[(newSize/sizeof(void *)) - 1] = END_OF_METHODS_LIST;
-
-        // Insertion point corresponds to old array end
-        ptr = &((*list)[endIndex]);
-    }
-
-    // Right shift existing entries by one
-    bcopy (*list, (*list) + 1, ((void *) ptr) - ((void *) *list));
-
-    // Insert at method list at beginning of array
-    **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_class *cls, 
-                         struct objc_method_list *mlist)
-{
-    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;
-    while (*ptr != mlist) {
-        // fix for radar # 2538790
-        if ( *ptr == END_OF_METHODS_LIST ) return;
-        ptr += 1;
-    }
-
-    // Remove this entry
-    *ptr = 0;
-
-    // Left shift the following entries
-    while (*(++ptr) != END_OF_METHODS_LIST)
-        *(ptr-1) = *ptr;
-    *(ptr-1) = 0;
-}
-
-/***********************************************************************
-* _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 (cls, category->instance_methods);
-
-    // Augment class methods
-    if (category->class_methods)
-        _objc_insertMethods (cls->isa, category->class_methods);
-
-    // Augment protocols
-    if ((version >= 5) && category->protocols)
-    {
-        if (cls->isa->version >= 5)
-        {
-            category->protocols->next = cls->protocols;
-            cls->protocols               = category->protocols;
-            cls->isa->protocols       = category->protocols;
-        }
-        else
-        {
-            _objc_inform ("unable to add protocols from category %s...\n", category->category_name);
-            _objc_inform ("class `%s' must be recompiled\n", category->class_name);
-        }
-    }
-}
-
-/***********************************************************************
-* _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;
-}
-
-
-/***********************************************************************
-* resolve_categories_for_class.  
-* Install all existing categories intended for the specified class.
-* cls must be a true class and not a metaclass.
-**********************************************************************/
-static void resolve_categories_for_class(struct objc_class *cls)
-{
-    _objc_unresolved_category *        pending;
-    _objc_unresolved_category *        next;
-
-    // Nothing to do if there are no categories at all
-    if (!category_hash) return;
-
-    // Locate and remove first element in category list
-    // associated with this class
-    pending = NXMapKeyFreeingRemove (category_hash, cls->name);
-
-    // Traverse the list of categories, if any, registered for this class
-
-    // 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);
-        }
-
-        // Delink and reclaim this registration
-        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.
-* 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)
-{
-    _objc_unresolved_category *        new_cat;
-    _objc_unresolved_category *        old;
-    struct objc_class *theClass;
-
-    // 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_internal_zone ());
-
-    // 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.
-    // 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;
-    (void) NXMapKeyCopyingInsert (category_hash, cat->class_name, new_cat);
-}
-
-
-/***********************************************************************
-* _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_read_categories_from_image (header_info *  hi)
-{
-    Module             mods;
-    unsigned int       midx;
-
-    if (_objcHeaderIsReplacement(hi)) {
-        // Ignore any categories in this image
-        return;
-    }
-
-
-    // Major loop - process all modules in the header
-    mods = hi->mod_ptr;
-
-    // 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;
-        
-        // Minor loop - register all categories from given module
-        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);
-        }
-    }
-}
-
-
-/***********************************************************************
-* _headerForAddress.
-* addr can be a class or a category
-**********************************************************************/
-static const header_info *_headerForAddress(void *addr)
-{
-    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
-        if (!hInfo->objcSegmentHeader) continue;
-        seg = hInfo->objcSegmentHeader->vmaddr + hInfo->image_slide;
-        size = hInfo->objcSegmentHeader->filesize;
-
-        // Is the class in this header?
-        if ((seg <= (unsigned long) addr) &&
-            ((unsigned long) addr < (seg + size)))
-            return hInfo;
-    }
-
-    // Not found
-    return 0;
-}
-
-
-/***********************************************************************
-* _headerForClass
-* Return the image header containing this class, or NULL.
-* Returns NULL on runtime-constructed classes, and the NSCF classes.
-**********************************************************************/
-static const header_info *_headerForClass(struct objc_class *cls)
-{
-    return _headerForAddress(cls);
-}
-
-
-/***********************************************************************
-* _nameForHeader.
-**********************************************************************/
-const char *   _nameForHeader         (const headerType *      header)
-{
-    return _getObjcHeaderName ((headerType *) header);
-}
-
-
-/***********************************************************************
-* 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 BOOL class_is_connected(struct objc_class *cls)
-{
-    BOOL result;
-    OBJC_LOCK(&classLock);
-    result = NXHashMember(class_hash, cls);
-    OBJC_UNLOCK(&classLock);
-    return result;
-}
-
-
-/***********************************************************************
-* pendingClassRefsMapTable.  Return a pointer to the lookup table for
-* pending class refs.
-**********************************************************************/
-static inline NXMapTable *pendingClassRefsMapTable(void)
-{
-    // Allocate table if needed
-    if (!pendingClassRefsMap) {
-        pendingClassRefsMap = 
-            NXCreateMapTableFromZone(NXStrValueMapPrototype, 
-                                     10, _objc_internal_zone ());
-    }
-    
-    // Return table pointer
-    return pendingClassRefsMap;
-}
-
-
-/***********************************************************************
-* pendingSubclassesMapTable.  Return a pointer to the lookup table for
-* pending subclasses.
-**********************************************************************/
-static inline NXMapTable *pendingSubclassesMapTable(void)
-{
-    // Allocate table if needed
-    if (!pendingSubclassesMap) {
-        pendingSubclassesMap = 
-            NXCreateMapTableFromZone(NXStrValueMapPrototype, 
-                                     10, _objc_internal_zone ());
-    }
-    
-    // Return table pointer
-    return pendingSubclassesMap;
-}
-
-
-/***********************************************************************
-* pendClassInstallation
-* Finish connecting class cls when its superclass becomes connected.
-* Check for multiple pends of the same class because connect_class does not.
-**********************************************************************/
-static void pendClassInstallation(struct objc_class *cls, 
-                                  const char *superName)
-{
-    NXMapTable *table;
-    PendingSubclass *pending;
-    PendingSubclass *oldList;
-    PendingSubclass *l;
-    
-    // Create and/or locate pending class lookup table
-    table = pendingSubclassesMapTable ();
-
-    // 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);
-}
-
-
-/***********************************************************************
-* pendClassReference
-* Fix up a class ref when the class with the given name becomes connected.
-**********************************************************************/
-static void pendClassReference(struct objc_class **ref, 
-                               const char *className)
-{
-    NXMapTable *table;
-    PendingClassRef *pending;
-    
-    // Create and/or locate pending class lookup table
-    table = pendingClassRefsMapTable ();
-    
-    // Create entry containing the class reference
-    pending = _malloc_internal(sizeof(PendingClassRef));
-    pending->ref = ref;
-    
-    // Link new entry into head of list of entries for this class
-    pending->next = NXMapGet (table, className);
-    
-    // (Re)place entry list in the table
-    (void) NXMapKeyCopyingInsert (table, className, pending);
-
-    if (PrintConnecting) {
-        _objc_inform("CONNECT: pended reference to class '%s' at %p", 
-                     className, (void *)ref);
-    }
-}
-
-
-/***********************************************************************
-* resolve_references_to_class
-* Fix up any pending class refs to this class.
-**********************************************************************/
-static void resolve_references_to_class(struct objc_class *cls)
-{
-    PendingClassRef *pending;
-    
-    if (!pendingClassRefsMap) return;  // no unresolved refs for any class
-
-    pending = NXMapGet(pendingClassRefsMap, cls->name); 
-    if (!pending) return;  // no unresolved refs for this class
-
-    NXMapKeyFreeingRemove(pendingClassRefsMap, cls->name);
-
-    if (PrintConnecting) {
-        _objc_inform("CONNECT: resolving references to class '%s'", cls->name);
-    }
-
-    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;
-    
-    if (cls->isa->info & CLS_HAS_LOAD_METHOD) {
-        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);
+#import "objc-private.h"
+#import "hashtable2.h"
+#import "maptable.h"
+#import "Object.h"
+#import "objc-rtp.h"
+#import "objc-auto.h"
+#import "objc-loadmethod.h"
 
-    load_method_thread = NULL;
-}
+OBJC_EXPORT Class getOriginalClassForPosingClass(Class);
 
 
 /***********************************************************************
-* 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.
+* Exports.
 **********************************************************************/
-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);
+// 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 PrintInitializing = -1; // env OBJC_PRINT_INITIALIZE_METHODS
+__private_extern__ int PrintResolving = -1;  // env OBJC_PRINT_RESOLVED_METHODS
+__private_extern__ int PrintConnecting = -1; // env OBJC_PRINT_CLASS_SETUP
+__private_extern__ int PrintProtocols = -1;  // env OBJC_PRINT_PROTOCOL_SETUP
+__private_extern__ int PrintIvars = -1;      // env OBJC_PRINT_IVAR_SETUP
+__private_extern__ int PrintFuture = -1;     // env OBJC_PRINT_FUTURE_CLASSES
+__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 PrintExceptions = -1; // env OBJC_PRINT_EXCEPTIONS
+__private_extern__ int PrintAltHandlers = -1; // env OBJC_PRINT_ALT_HANDLERS
+__private_extern__ int PrintDeprecation = -1;// env OBJC_PRINT_DEPRECATION_WARNINGS
+__private_extern__ int PrintReplacedMethods = -1; // env OBJC_PRINT_REPLACED_METHODS
+__private_extern__ int PrintCacheCollection = -1; // env OBJC_PRINT_CACHE_COLLECTION
 
-    // Delete unconnected_class_hash if it is now empty.
-    if (NXCountHashTable(unconnected_class_hash) == 0) {
-        NXFreeHashTable(unconnected_class_hash);
-        unconnected_class_hash = NULL;
-    }
+__private_extern__ int UseInternalZone = -1; // env OBJC_USE_INTERNAL_ZONE
+__private_extern__ int AllowInterposing = -1;// env OBJC_ALLOW_INTERPOSING
 
-    OBJC_UNLOCK(&classLock);
+__private_extern__ int DebugUnload = -1;     // env OBJC_DEBUG_UNLOAD
+__private_extern__ int DebugFragileSuperclasses = -1; // env OBJC_DEBUG_FRAGILE_SUPERCLASSES
+__private_extern__ int DebugNilSync = -1;    // env OBJC_DEBUG_NIL_SYNC
 
-    // 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);
-        }
-    }
+__private_extern__ int DisableGC = -1;       // env OBJC_DISABLE_GC
+__private_extern__ int DebugFinalizers = -1; // env OBJC_DEBUG_FINALIZERS
 
-    // 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;
-        }
+// objc's key for pthread_getspecific
+static pthread_key_t _objc_pthread_key = 0;
 
-        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);
-            }
-        }
-    }
-}
+// 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";
 
 
 /***********************************************************************
-* 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)
+* Function prototypes internal to this module.
 **********************************************************************/
-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);
+static void _objc_unmap_image(header_info *hi);
 
-            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);
-        }
+/***********************************************************************
+* Static data internal to this module.
+**********************************************************************/
 
-        really_connect_class(cls, supercls);
-        return TRUE;
-    } 
-}
+// we keep a linked list of header_info's describing each image as told to us by dyld
+static header_info *FirstHeader NOBSS = 0;  // NULL means empty list
+static header_info *LastHeader  NOBSS = 0;  // NULL means invalid; recompute it
+static int HeaderCount NOBSS = 0;
 
 
 /***********************************************************************
-* _objc_read_classes_from_image.
-* Read classes from the given image, perform assorted minor fixups, 
-*   scan for +load implementation.
-* Does not connect classes to superclasses. 
-* Does attach pended categories to the classes.
-* Adds all classes to unconnected_class_hash. class_hash is unchanged.
+* 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!
 **********************************************************************/
-static void    _objc_read_classes_from_image(header_info *hi)
+id objc_getClass(const char *aClassName)
 {
-    unsigned int       index;
-    unsigned int       midx;
-    Module             mods;
-    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 = 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 *        newCls;
-            struct objc_method_list *mlist;
-
-            // Locate the class description pointer
-            newCls = mods[midx].symtab->defs[index];
-
-            // 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;
-
-            // Check for +load implementation before categories are attached
-            if ((mlist = get_base_method_list(newCls->isa))) {
-                if (lookupNamedMethodInMethodList (mlist, "load")) {
-                    newCls->isa->info |= CLS_HAS_LOAD_METHOD;
-                }
-            }
-            
-            // 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);
+    if (!aClassName) return Nil;
 
-            // 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);
-        }
-    }
+    // NO unconnected, YES class handler
+    return look_up_class(aClassName, NO, YES);
 }
 
 
 /***********************************************************************
-* _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.
+* 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.
 **********************************************************************/
-static void _objc_connect_classes_from_image(header_info *hi)
+id objc_getRequiredClass(const char *aClassName)
 {
-    unsigned int index;
-    unsigned int midx;
-    Module mods;
-    BOOL replacement = _objcHeaderIsReplacement(hi);
-
-    // 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 = 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);
-            }
-        }
-    }
+    id cls = objc_getClass(aClassName);
+    if (!cls) _objc_fatal("link error: class '%s' not found.", aClassName);
+    return cls;
 }
 
 
 /***********************************************************************
-* _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
-* not yet exist, the reference is added to a list of pending references
-* to be fixed up at a later date.
+* objc_lookUpClass.  Return the id of the named class.
+* If the class does not exist, call _objc_classLoader, which may create 
+* a new class.
+*
+* Formerly objc_getClassWithoutWarning ()
 **********************************************************************/
-static void _objc_map_class_refs_for_image (header_info * hi)
+id objc_lookUpClass(const char *aClassName)
 {
-    struct objc_class * *                      cls_refs;
-    unsigned int       size;
-    unsigned int       index;
-
-    // Locate class refs in image
-    cls_refs = _getObjcClassRefs ((headerType *) hi->mhdr, &size);
-    if (!cls_refs)
-        return;
-    cls_refs = (struct objc_class * *) ((unsigned long) cls_refs + hi->image_slide);
-
-    // Process each class ref
-    for (index = 0; index < size; index += 1)
-    {
-        const char *   ref;
-        struct objc_class *            cls;
-
-        // Get ref to convert from name string to class pointer
-        ref = (const char *) cls_refs[index];
-
-        // Get pointer to class of this name
-        // 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 ();
-        }
-    }
-}
+    if (!aClassName) return Nil;
 
+    // NO unconnected, NO class handler
+    return look_up_class(aClassName, NO, NO);
+}
 
 /***********************************************************************
-* _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.
+* objc_getFutureClass.  Return the id of the named class.
+* If the class does not exist, return an uninitialized class 
+* structure that will be used for the class when and if it 
+* does get loaded.
+* Not thread safe. 
 **********************************************************************/
-static void _objc_remove_pending_class_refs_in_image(header_info *hi)
+Class objc_getFutureClass(const char *name)
 {
-    struct objc_class **cls_refs, **cls_refs_end;
-    unsigned int size;
-
-    if (!pendingClassRefsMap) return;
+    Class cls;
 
-    // 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;
-            }
+    // YES unconnected, NO class handler
+    // (unconnected is OK because it will someday be the real class)
+    cls = look_up_class(name, YES, NO);
+    if (cls) {
+        if (PrintFuture) {
+            _objc_inform("FUTURE: found %p already in use for %s", cls, name);
         }
-    } 
+        return cls;
+    }
+    
+    // No class or future class with that name yet. Make one.
+    // fixme not thread-safe with respect to 
+    // simultaneous library load or getFutureClass.
+    return _objc_allocateFutureClass(name);
 }
 
 
 /***********************************************************************
-* 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.
+* objc_getMetaClass.  Return the id of the meta class the named class.
+* Warning: doesn't work if aClassName is the name of a posed-for class's isa!
 **********************************************************************/
-static inline BOOL map_selrefs(SEL *src, SEL *dst, size_t size, BOOL copy)
+id objc_getMetaClass(const char *aClassName)
 {
-    BOOL result = NO;
-    unsigned int cnt = size / sizeof(SEL);
-    unsigned int index;
+    Class cls;
 
-    sel_lock();
+    if (!aClassName) return Nil;
 
-    // Process each selector
-    for (index = 0; index < cnt; index += 1)
+    cls = objc_getClass (aClassName);
+    if (!cls)
     {
-        SEL sel;
-
-        // Lookup pointer to uniqued string
-        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 (dst[index] != sel) {
-            dst[index] = sel;
-            result = YES;
-        }
+        _objc_inform ("class `%s' not linked into application", aClassName);
+        return Nil;
     }
-    
-    sel_unlock();
 
-    return result;
+    return ((id)cls)->isa;
 }
 
 
+#if !__LP64__
+// Not updated for 64-bit ABI
+
 /***********************************************************************
-* 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.
+* _headerForAddress.
+* addr can be a class or a category
 **********************************************************************/
-static void  map_method_descs (struct objc_method_description_list * methods, BOOL copy)
+static const header_info *_headerForAddress(void *addr)
 {
-    unsigned int       index;
-
-    sel_lock();
+    unsigned long                      size;
+    unsigned long                      seg;
+    header_info *              hInfo;
 
-    // Process each method
-    for (index = 0; index < methods->count; index += 1)
+    // Check all headers in the vector
+    for (hInfo = FirstHeader; hInfo != NULL; hInfo = hInfo->next)
     {
-        struct objc_method_description *       method;
-        SEL                                    sel;
-
-        // Get method entry to fix up
-        method = &methods->list[index];
-
-        // Lookup pointer to uniqued string
-        sel = sel_registerNameNoLock((const char *) method->name, copy);
+        // Locate header data, if any
+        if (!hInfo->objcSegmentHeader) continue;
+        seg = hInfo->objcSegmentHeader->vmaddr + hInfo->image_slide;
+        size = hInfo->objcSegmentHeader->filesize;
 
-        // Replace this selector with uniqued one (avoid
-        // modifying the VM page if this would be a NOP)
-        if (method->name != sel)
-            method->name = sel;
+        // Is the class in this header?
+        if ((seg <= (unsigned long) addr) &&
+            ((unsigned long) addr < (seg + size)))
+            return hInfo;
     }
 
-    sel_unlock();
+    // Not found
+    return 0;
 }
 
+
 /***********************************************************************
-* _fixup.
+* _headerForClass
+* Return the image header containing this class, or NULL.
+* Returns NULL on runtime-constructed classes, and the NSCF classes.
 **********************************************************************/
-@interface Protocol(RuntimePrivate)
-+ _fixup: (OBJC_PROTOCOL_PTR)protos numElements: (int) nentries;
-@end
+__private_extern__ const header_info *_headerForClass(Class cls)
+{
+    return _headerForAddress(cls);
+}
+
+// !__LP64__
+#endif
+
 
 /***********************************************************************
-* _objc_fixup_protocol_objects_for_image.  For each protocol in the
-* specified image, selectorize the method names and call +_fixup.
+* _nameForHeader.
 **********************************************************************/
-static void _objc_fixup_protocol_objects_for_image (header_info * hi)
+__private_extern__ const char *_nameForHeader(const headerType *header)
 {
-    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);
-    if (!protos)
-        return;
+    return _getObjcHeaderName ((headerType *) header);
+}
 
-    // Apply the slide bias
-    protos = (OBJC_PROTOCOL_PTR) ((unsigned long) protos + hi->image_slide);
 
-    // Process each protocol
-    for (index = 0; index < size; index += 1)
-    {
-        // Selectorize the instance methods
-        if (protos[index] OBJC_PROTOCOL_DEREF instance_methods)
-            map_method_descs (protos[index] OBJC_PROTOCOL_DEREF instance_methods, isBundle);
+/***********************************************************************
+* _gcForHInfo.
+**********************************************************************/
+__private_extern__ const char *_gcForHInfo(const header_info *hinfo)
+{
+    if (_objcHeaderRequiresGC(hinfo)) return "requires GC";
+    else if (_objcHeaderSupportsGC(hinfo)) return "supports GC";
+    else return "does not support GC";
+}
+__private_extern__ const char *_gcForHInfo2(const header_info *hinfo)
+{
+    if (_objcHeaderRequiresGC(hinfo)) return " (requires GC)";
+    else if (_objcHeaderSupportsGC(hinfo)) return " (supports GC)";
+    else return "";
+}
 
-        // Selectorize the class methods
-        if (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
-    [Protocol _fixup:(OBJC_PROTOCOL_PTR)protos numElements:size];
+/***********************************************************************
+* bad_magic.
+* Return YES if the header has invalid Mach-o magic.
+**********************************************************************/
+static BOOL bad_magic(const headerType *mhdr)
+{
+    return (mhdr->magic != MH_MAGIC  &&  mhdr->magic != MH_MAGIC_64  &&  
+            mhdr->magic != MH_CIGAM  &&  mhdr->magic != MH_CIGAM_64);
 }
 
+
 /***********************************************************************
 * _objc_headerStart.  Return what headers we know about.
 **********************************************************************/
-header_info *  _objc_headerStart ()
+__private_extern__ header_info *_objc_headerStart(void)
 {
-
     // Take advatage of our previous work
     return FirstHeader;
 }
 
-void _objc_bindModuleContainingList() {
-    /* We define this for backwards binary compat with things which should not
-    * have been using it (cough OmniWeb), but now it does nothing for them.
-    */
-}
-
 
 /***********************************************************************
 * _objc_addHeader.
+* Returns NULL if the header has no ObjC metadata.
 **********************************************************************/
 
 // tested with 2; typical case is 4, but OmniWeb & Mail push it towards 20
@@ -2141,28 +319,28 @@ void _objc_bindModuleContainingList() {
 static int HeaderInfoCounter NOBSS = 0;
 static header_info HeaderInfoTable[HINFO_SIZE] NOBSS = { {0} };
 
-static header_info * _objc_addHeader(const struct mach_header *header)
+static header_info * _objc_addHeader(const headerType *header)
 {
-    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;
+    size_t info_size = 0;
+    const segmentType *objc_segment;
+    const segmentType *objc2_segment;
+    const objc_image_info *image_info;
+    const segmentType *data_segment;
     header_info *result;
+    ptrdiff_t image_slide;
+
+    // Weed out duplicates
+    for (result = FirstHeader; result; result = result->next) {
+        if (header == result->mhdr) return NULL;
+    }
 
     // Locate the __OBJC segment
+    image_slide = _getImageSlide(header);
+    image_info = _getObjcImageInfo(header, image_slide, &info_size);
     objc_segment = getsegbynamefromheader(header, SEG_OBJC);
-    if (!objc_segment) return NULL;
-
-    // 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);
-
-    // Calculate vm slide.
-    slide = _getImageSlide(header);
-
+    objc2_segment = getsegbynamefromheader(header, SEG_OBJC2);
+    data_segment = getsegbynamefromheader(header, SEG_DATA);
+    if (!objc_segment  &&  !image_info  &&  !objc2_segment) return NULL;
 
     // Find or allocate a header_info entry.
     if (HeaderInfoCounter < HINFO_SIZE) {
@@ -2173,23 +351,29 @@ static header_info * _objc_addHeader(const struct mach_header *header)
 
     // 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->image_slide        = image_slide;
     result->objcSegmentHeader = objc_segment;
-    if (image_info_unslid) {
-        result->info = (objc_image_info *)(image_info_unslid + slide);
-    } else {
-        result->info = NULL;
+    result->dataSegmentHeader = data_segment;
+#if !__OBJC2__
+    result->mod_count = 0;
+    result->mod_ptr = _getObjcModules(header, result->image_slide, &result->mod_count);
+#endif
+    result->info = image_info;
+    dladdr(result->mhdr, &result->dl_info);
+    result->allClassesRealized = NO;
+
+    // dylibs are not allowed to unload
+    if (result->mhdr->filetype == MH_DYLIB) {
+        dlopen(result->dl_info.dli_fname, RTLD_NOLOAD);
     }
 
     // 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 = 
+        const objc_image_info *start = result->info;
+        const objc_image_info *end = 
             (objc_image_info *)(info_size + (uint8_t *)start);
-        objc_image_info *info = start;
+        const objc_image_info *info = start;
         while (info < end) {
             // version is byte size, except for version 0
             size_t struct_size = info->version;
@@ -2197,7 +381,7 @@ static header_info * _objc_addHeader(const struct mach_header *header)
             if (info->version != start->version  ||  
                 0 != memcmp(info, start, struct_size))
             {
-                _objc_fatal("'%s' has inconsistently-compiled Objective-C "
+                _objc_inform("'%s' has inconsistently-compiled Objective-C "
                             "code. Please recompile all code in it.", 
                             _nameForHeader(header));
             }
@@ -2207,6 +391,7 @@ static header_info * _objc_addHeader(const struct mach_header *header)
 
     // Add the header to the header list. 
     // The header is appended to the list, to preserve the bottom-up order.
+    HeaderCount++;
     result->next = NULL;
     if (!FirstHeader) {
         // list is empty
@@ -2256,6 +441,8 @@ static void _objc_removeHeader(header_info *hi)
                 _free_internal(deadHead);
             }
 
+            HeaderCount--;
+
             break;
         }
     }
@@ -2270,19 +457,12 @@ static void _objc_removeHeader(header_info *hi)
 **********************************************************************/
 static BOOL check_wants_gc(void)
 {
-    // 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");
+    if (DisableGC) {
+        _objc_inform("GC: forcing GC OFF because OBJC_DISABLE_GC is set");
         appWantsGC = NO;
     }
     else {
@@ -2295,15 +475,13 @@ static BOOL check_wants_gc(void)
             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");
+                    _objc_inform("GC: executable '%s' %s",
+                                 _nameForHeader(hi->mhdr), _gcForHInfo(hi));
                 }
             }
         }
     }
     return appWantsGC;
-    */
 }
 
 /***********************************************************************
@@ -2312,12 +490,15 @@ static BOOL check_wants_gc(void)
 * and presumably ready for gc.
 ************************************************************************/
 
-static void verify_gc_readiness(BOOL wantsGC, header_info *hi) 
+static void verify_gc_readiness(BOOL wantsGC, header_info **hList, 
+                                uint32_t hCount) 
 {
     BOOL busted = NO;
+    uint32_t i;
 
     // Find the libraries and check their GC bits against the app's request
-    for (; hi != NULL; hi = hi->next) {
+    for (i = 0; i < hCount; i++) {
+        header_info *hi = hList[i];
         if (hi->mhdr->filetype == MH_EXECUTE) {
             continue;
         }
@@ -2327,58 +508,37 @@ static void verify_gc_readiness(BOOL wantsGC, header_info *hi)
         } 
         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));
+            _objc_inform_now_and_on_crash
+                ("'%s' was not compiled with -fobjc-gc or -fobjc-gc-only, "
+                 "but the application requires GC",
+                 _nameForHeader(hi->mhdr));
             busted = YES;
         } 
+        else if (!wantsGC  &&  _objcHeaderRequiresGC(hi)) {
+            // App doesn't want GC but library requires it - bad
+            _objc_inform_now_and_on_crash
+                ("'%s' was compiled with -fobjc-gc-only, "
+                 "but the application does not support GC",
+                 _nameForHeader(hi->mhdr));
+            busted = YES;            
+        }
 
         if (PrintGC) {
-            _objc_inform("GC: library '%s' %s GC", _nameForHeader(hi->mhdr)
-                         _objcHeaderSupportsGC(hi) ? "supports" : "does not support");
+            _objc_inform("GC: library '%s' %s"
+                         _nameForHeader(hi->mhdr), _gcForHInfo(hi));
         }
     }
     
     if (busted) {
         // GC state is not consistent. 
         // Kill the process unless one of the forcing flags is set.
-        if (!ForceGC  &&  !ForceNoGC) {
+        if (!DisableGC) {
             _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.
-**********************************************************************/
-static void _objc_fixup_selector_refs   (const header_info *   hi)
-{
-    unsigned int count;
-    Module mods;
-    vm_address_t local_sels;
-    vm_size_t local_size;
-
-    mods = hi->mod_ptr;
-
-    // Fix up message refs
-    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);
-        
-        map_selrefs((SEL *)local_sels, (SEL *)local_sels, local_size, 
-                    hi->mhdr->filetype == MH_BUNDLE);
-    }
-}
-
-
 /***********************************************************************
 * objc_setConfiguration
 * Read environment variables that affect the runtime.
@@ -2387,31 +547,55 @@ static void _objc_fixup_selector_refs   (const header_info *     hi)
 static void objc_setConfiguration() {
     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");
+    int secure = issetugid();
+
+    if (secure) {
+        // All environment variables are ignored when setuid or setgid.
+        if (PrintHelp) _objc_inform("OBJC_HELP ignored when running setuid or setgid");
+        if (PrintOptions) _objc_inform("OBJC_PRINT_OPTIONS ignored when running setuid or setgid");
+    } 
+    else {
+        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_HELP is set");
+            _objc_inform("OBJC_PRINT_OPTIONS is set");
         }
-        _objc_inform("OBJC_PRINT_OPTIONS: list which options are set");
-    }
-    if (PrintOptions) {
-        _objc_inform("OBJC_PRINT_OPTIONS is set");
     }
     
 #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"); \
+        char *value = getenv(#env); \
+        var = value != NULL && !strcmp("YES", value); \
+        if (secure) { \
+            if (var) _objc_inform(#env " ignored when running setuid or setgid"); \
+            var = 0; \
+        } else { \
+            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");
+           "log image and library names as they are loaded");
     OPTION(PrintLoading, OBJC_PRINT_LOAD_METHODS,
-           "log class and category +load methods as they are called");
+           "log calls to class and category +load methods");
+    OPTION(PrintInitializing, OBJC_PRINT_INITIALIZE_METHODS,
+           "log calls to class +initialize methods");
+    OPTION(PrintResolving, OBJC_PRINT_RESOLVED_METHODS,
+           "log methods created by +resolveClassMethod: and +resolveInstanceMethod:");
+    OPTION(PrintConnecting, OBJC_PRINT_CLASS_SETUP,
+           "log progress of class and category setup");
+    OPTION(PrintProtocols, OBJC_PRINT_PROTOCOL_SETUP,
+           "log progresso of protocol setup");
+    OPTION(PrintIvars, OBJC_PRINT_IVAR_SETUP,
+           "log processing of non-fragile ivars");
+    OPTION(PrintFuture, OBJC_PRINT_FUTURE_CLASSES, 
+           "log use of future classes for toll-free bridging");
     OPTION(PrintRTP, OBJC_PRINT_RTP,
            "log initialization of the Objective-C runtime pages");
     OPTION(PrintGC, OBJC_PRINT_GC,
@@ -2420,23 +604,34 @@ static void objc_setConfiguration() {
            "log cross-process memory sharing");
     OPTION(PrintCxxCtors, OBJC_PRINT_CXX_CTORS, 
            "log calls to C++ ctors and dtors for instance variables");
+    OPTION(PrintExceptions, OBJC_PRINT_EXCEPTIONS, 
+           "log exception handling");
+    OPTION(PrintAltHandlers, OBJC_PRINT_ALT_HANDLERS, 
+           "log processing of exception alt handlers");
+    OPTION(PrintReplacedMethods, OBJC_PRINT_REPLACED_METHODS, 
+           "log methods replaced by category implementations");
+    OPTION(PrintDeprecation, OBJC_PRINT_DEPRECATION_WARNINGS, 
+           "warn about calls to deprecated runtime functions");
+    OPTION(PrintCacheCollection, OBJC_PRINT_CACHE_COLLECTION, 
+           "log cleanup of stale method caches");
 
     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(DebugFinalizers, OBJC_DEBUG_FINALIZERS, 
+           "warn about classes that implement -dealloc but not -finalize");
+    OPTION(DebugNilSync, OBJC_DEBUG_NIL_SYNC, 
+           "warn about @synchronized(nil), which does no synchronization");
 
     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,
+    OPTION(DisableGC, OBJC_DISABLE_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
 }
 
@@ -2446,10 +641,31 @@ static void objc_setConfiguration() {
 **********************************************************************/
 void objc_setMultithreaded (BOOL flag)
 {
+    OBJC_WARN_DEPRECATED;
+
     // Nothing here. Thread synchronization in the runtime is always active.
 }
 
 
+/***********************************************************************
+* _objc_fetch_pthread_data
+* Fetch objc's pthread data for this thread.
+* If the data doesn't exist yet and create is NO, return NULL.
+* If the data doesn't exist yet and create is YES, allocate and return it.
+**********************************************************************/
+__private_extern__ _objc_pthread_data *_objc_fetch_pthread_data(BOOL create)
+{
+    _objc_pthread_data *data;
+
+    data = pthread_getspecific(_objc_pthread_key);
+    if (!data  &&  create) {
+        data = _calloc_internal(1, sizeof(_objc_pthread_data));
+        pthread_setspecific(_objc_pthread_key, data);
+    }
+
+    return data;
+}
+
 
 /***********************************************************************
 * _objc_pthread_destroyspecific
@@ -2457,28 +673,113 @@ void objc_setMultithreaded (BOOL flag)
 * arg shouldn't be NULL, but we check anyway.
 **********************************************************************/
 extern void _destroyInitializingClassList(struct _objc_initializing_classes *list);
-void _objc_pthread_destroyspecific(void *arg)
+__private_extern__ void _objc_pthread_destroyspecific(void *arg)
 {
     _objc_pthread_data *data = (_objc_pthread_data *)arg;
     if (data != NULL) {
         _destroyInitializingClassList(data->initializingClasses);
+        _destroyLockList(data->lockList);
+        _destroySyncCache(data->syncCache);
+        _destroyAltHandlerList(data->handlerList);
 
         // add further cleanup here...
 
-        _free_internal(data);
+        _free_internal(data);
+    }
+}
+
+
+/***********************************************************************
+* _objcInit
+* Former library initializer. This function is now merely a placeholder 
+* for external callers. All runtime initialization has now been moved 
+* to map_images() and _objc_init.
+**********************************************************************/
+void _objcInit(void)
+{
+    // do nothing
+}
+
+
+/***********************************************************************
+* gc_enforcer
+* Make sure that images about to be loaded by dyld are GC-acceptable.
+* Images linked to the executable are always permitted; they are 
+* enforced inside map_images() itself.
+**********************************************************************/
+static BOOL InitialDyldRegistration = NO;
+static const char *gc_enforcer(enum dyld_image_states state, 
+                               uint32_t infoCount, 
+                               const struct dyld_image_info info[])
+{
+    uint32_t i;
+
+    // Linked images get a free pass
+    if (InitialDyldRegistration) return NULL;
+
+    if (PrintImages) {
+        _objc_inform("IMAGES: checking %d images for compatibility...", 
+                     infoCount);
+    }
+
+    for (i = 0; i < infoCount; i++) {
+        const headerType *mhdr = (const headerType *)info[i].imageLoadAddress;
+        if (bad_magic(mhdr)) continue;
+
+        objc_image_info *image_info;
+        size_t size;
+
+        if (mhdr == &_mh_dylib_header) {
+            // libobjc itself - OK
+            continue;
+        }
+
+#if !__LP64__
+        // 32-bit: __OBJC seg but no image_info means no GC support
+        if (!getsegbynamefromheader(mhdr, SEG_OBJC)) {
+            // not objc - assume OK
+            continue;
+        }
+        image_info = _getObjcImageInfo(mhdr, _getImageSlide(mhdr), &size);
+        if (!image_info) {
+            // No image_info - assume GC unsupported
+            if (!UseGC) {
+                // GC is OFF - ok
+                continue;
+            } else {
+                // GC is ON - bad
+                if (PrintImages  ||  PrintGC) {
+                    _objc_inform("IMAGES: rejecting %d images because %s doesn't support GC (no image_info)", infoCount, info[i].imageFilePath);
+                }
+                return "GC capability mismatch";
+            }
+        }
+#else
+        // 64-bit: no image_info means no objc at all
+        image_info = _getObjcImageInfo(mhdr, _getImageSlide(mhdr), &size);
+        if (!image_info) {
+            // not objc - assume OK
+            continue;
+        }
+#endif
+
+        if (UseGC  &&  !_objcInfoSupportsGC(image_info)) {
+            // GC is ON, but image does not support GC
+            if (PrintImages  ||  PrintGC) {
+                _objc_inform("IMAGES: rejecting %d images because %s doesn't support GC", infoCount, info[i].imageFilePath);
+            }
+            return "GC capability mismatch";
+        }
+        if (!UseGC  &&  _objcInfoRequiresGC(image_info)) {
+            // GC is OFF, but image requires GC
+            if (PrintImages  ||  PrintGC) {
+                _objc_inform("IMAGES: rejecting %d images because %s requires GC", infoCount, info[i].imageFilePath);
+            }
+            return "GC capability mismatch";
+        }
     }
-}
-
 
-/***********************************************************************
-* _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
+    return NULL;
 }
 
 
@@ -2491,24 +792,34 @@ void _objcInit(void)
 * 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 const char *map_images(enum dyld_image_states state, uint32_t infoCount,
+                              const struct dyld_image_info infoList[])
 {
     static BOOL firstTime = YES;
     static BOOL wantsGC NOBSS = NO;
     uint32_t i;
-    header_info *firstNewHeader = NULL;
     header_info *hInfo;
+    header_info *hList[infoCount];
+    uint32_t hCount;
 
     // Perform first-time initialization if necessary.
     // This function is called before ordinary library initializers. 
     if (firstTime) {
+        extern SEL FwdSel;  // in objc-msg-*.s
+        // workaround for rdar://5198739
+        pthread_key_t unused;
+        pthread_key_create(&unused, NULL);
         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);
+        FwdSel = sel_registerName("forward::");  // in objc-msg-*.s
+        exception_init();
+
+        InitialDyldRegistration = YES;
+        dyld_register_image_state_change_handler(dyld_image_state_mapped, 0 /* batch */, &gc_enforcer);
+        InitialDyldRegistration = NO;
     }
 
     if (PrintImages) {
@@ -2516,30 +827,27 @@ static void map_images(const struct dyld_image_info infoList[],
     }
 
 
-    // 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;
+    // Find all images with Objective-C metadata.
+    hCount = 0;
+    i = infoCount;
+    while (i--) {
+        const headerType *mhdr = (headerType *)infoList[i].imageLoadAddress;
+        if (bad_magic(mhdr)) continue;
 
         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;
         }
 
-        if (!firstNewHeader) firstNewHeader = hInfo;
+        hList[hCount++] = 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)":"");
+                         _gcForHInfo2(hInfo));
         }
     }
 
@@ -2552,343 +860,86 @@ static void map_images(const struct dyld_image_info infoList[],
     // 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");
-        }
-                                                                                          
+
+        verify_gc_readiness(wantsGC, hList, hCount);
+        
         gc_init(wantsGC);           // needs executable for GC decision
         rtp_init();                 // needs GC decision first
     } else {
-        verify_gc_readiness(wantsGC, firstNewHeader);
-    }
-
-
-    // Initialize everything. Parts of this order are important for 
-    // correctness or performance.
-
-    // Read classes from all images.
-    for (hInfo = firstNewHeader; hInfo != NULL; hInfo = hInfo->next) {
-        _objc_read_classes_from_image(hInfo);
-    }
-
-    // Read categories from all images. 
-    for (hInfo = firstNewHeader; hInfo != NULL; hInfo = hInfo->next) {
-        _objc_read_categories_from_image(hInfo);
+        verify_gc_readiness(wantsGC, hList, hCount);
     }
 
-    // Connect classes from all images.
-    for (hInfo = firstNewHeader; hInfo != NULL; hInfo = hInfo->next) {
-        _objc_connect_classes_from_image(hInfo);
-    }
-
-    // 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);
-    }
+    _read_images(hList, hCount);
 
     firstTime = NO;
 
-    // Call pending +load methods.
-    // Note that this may in turn cause map_images() to be called again.
-    call_load_methods();
+    return NULL;
 }
 
 
-/***********************************************************************
-* 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)
+static const char *load_images(enum dyld_image_states state,uint32_t infoCount,
+                               const struct dyld_image_info infoList[])
 {
+    BOOL found = NO;
     uint32_t i;
 
-    if (PrintImages) {
-        _objc_inform("IMAGES: processing %u newly-unmapped images...\n", infoCount);
-    }
-
-    for (i = 0; i < infoCount; i++) {
-        const struct mach_header *mhdr = infoList[i].imageLoadAddress;
-
-        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);
+    i = infoCount;
+    while (i--) {
+        header_info *hi;
+        for (hi = FirstHeader; hi != NULL; hi = hi->next) {
+            const headerType *mhdr = (headerType*)infoList[i].imageLoadAddress;
+            if (hi->mhdr == mhdr) {
+                prepare_load_methods(hi);
+                found = YES;
             }
         }
     }
-}
 
+    if (found) call_load_methods();
 
-/***********************************************************************
-* _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.
-**********************************************************************/
-__private_extern__ 
-void _objc_notify_images(enum dyld_image_mode mode, uint32_t infoCount, 
-                         const struct dyld_image_info infoList[])
-{
-    if (mode == dyld_image_adding) {
-        map_images(infoList, infoCount);
-    } else if (mode == dyld_image_removing) {
-        unmap_images(infoList, infoCount);
-    }
+    return NULL;
 }
 
-
 /***********************************************************************
-* _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
+* unmap_image
+* Process the given image which is about to be unmapped by dyld.
+* mh is mach_header instead of headerType because that's what 
+*   dyld_priv.h says even for 64-bit.
 **********************************************************************/
-static void    _objc_remove_classes_in_image(header_info *hi)
+static void unmap_image(const struct mach_header *mh, intptr_t vmaddr_slide)
 {
-    unsigned int       index;
-    unsigned int       midx;
-    Module             mods;
-
-    OBJC_LOCK(&classLock);
-    
-    // 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);
-            }
-        }
-    }
-
-
-    // Search all other images for class refs that point back to this range.
-    // Un-fix and re-pend any such class refs.
-
-    // 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;
-
-    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
-
-        // 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);
-
-        // 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 (PrintImages) {
+        _objc_inform("IMAGES: processing 1 newly-unmapped image...\n");
     }
 
-    OBJC_UNLOCK(&classLock);
-}
-
-
-/***********************************************************************
-* _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;
+    header_info *hi;
     
-    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;
-                    }
-                }
-            }
+    // Find the runtime's header_info struct for the image
+    for (hi = FirstHeader; hi != NULL; hi = hi->next) {
+        if (hi->mhdr == (const headerType *)mh) {
+            _objc_unmap_image(hi);
+            return;
         }
     }
+
+    // no objc data for this image
 }
 
 
 /***********************************************************************
-* unload_paranoia
-* Various paranoid debugging checks that look for poorly-behaving 
-* unloadable bundles. 
-* Called by _objc_unmap_image when OBJC_UNLOAD_DEBUG is set.
+* _objc_init
+* Static initializer. Registers our image notifier with dyld.
+* fixme move map_images' firstTime code here - but GC code might need 
+* another earlier image notifier
 **********************************************************************/
-static void unload_paranoia(header_info *hi) 
+static __attribute__((constructor))
+void _objc_init(void)
 {
-    // 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;
-
-    _objc_inform("UNLOAD DEBUG: unloading image '%s' [%p..%p]", 
-                 _nameForHeader(hi->mhdr), seg, seg+seg_size);
-
-    OBJC_LOCK(&classLock);
-
-    // 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);
-                }
-            }
-        }
-    }
-
-    // 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;
-
-        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);
-            }
-        }
-    }
-
-    OBJC_UNLOCK(&classLock);
+    // Register for unmap first, in case some +load unmaps something
+    _dyld_register_func_for_remove_image(&unmap_image);
+    dyld_register_image_state_change_handler(dyld_image_state_bound,
+                                             1/*batch*/, &map_images);
+    dyld_register_image_state_change_handler(dyld_image_state_dependents_initialized, 0/*not batch*/, &load_images);
 }
 
 
@@ -2898,34 +949,17 @@ static void unload_paranoia(header_info *hi)
 * be unloaded by dyld.
 * Note: not thread-safe, but image loading isn't either.
 **********************************************************************/
-static void    _objc_unmap_image(const headerType *mh
+static void    _objc_unmap_image(header_info *hi
 {
-    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)" : "", 
+                     _nameForHeader(hi->mhdr), 
+                     hi->mhdr->filetype == MH_BUNDLE ? " (bundle)" : "", 
                      _objcHeaderIsReplacement(hi) ? " (replacement)" : "", 
-                     _objcHeaderSupportsGC(hi) ? " (supports GC)" : "");
+                     _gcForHInfo2(hi));
     }
 
-    // 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);
+    _unload_image(hi);
 
     // Remove header_info from header list
     _objc_removeHeader(hi);
@@ -2955,63 +989,228 @@ id _objc_getNilReceiver(void)
 
 
 /***********************************************************************
-* _objc_setClassLoader
-* Similar to objc_setClassHandler, but objc_classLoader is used for 
-* both objc_getClass() and objc_lookupClass(), and objc_classLoader 
-* pre-empts objc_classHandler. 
+* objc_setForwardHandler
+**********************************************************************/
+void objc_setForwardHandler(void *fwd, void *fwd_stret)
+{
+    _objc_forward_handler = fwd;
+    _objc_forward_stret_handler = fwd_stret;
+}
+
+
+#if defined(__ppc__)  ||  defined(__ppc64__)
+
+// Test to see if either the displacement or destination is within 
+// the +/- 2^25 range needed for a PPC branch immediate 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 larger branch sequence is required. 
+// ppc64: max displacement is still +/- 2^25, but intptr_t is bigger
+
+// tiny:  bc*
+// small: b, ba (unconditional only)
+// 32:    bctr with lis+ori only
+static BOOL ppc_tiny_displacement(intptr_t displacement)
+{
+    size_t shift = sizeof(intptr_t) - 16;  // ilp32=16, lp64=48
+    return (((displacement << shift) >> shift) == displacement);
+}
+
+static BOOL ppc_small_displacement(intptr_t displacement)
+{
+    size_t shift = sizeof(intptr_t) - 26;  // ilp32=6, lp64=38
+    return (((displacement << shift) >> shift) == displacement);
+}
+
+#if defined(__ppc64__)
+// Same as ppc_small_displacement, but decides whether 32 bits is big enough.
+static BOOL ppc_32bit_displacement(intptr_t displacement)
+{
+    size_t shift = sizeof(intptr_t) - 32;
+    return (((displacement << shift) >> shift) == displacement);
+}
+#endif
+
+/**********************************************************************
+* objc_branch_size
+* Returns the number of instructions needed 
+* for a branch from entry to target. 
 **********************************************************************/
-void _objc_setClassLoader(BOOL (*newClassLoader)(const char *))
+__private_extern__ size_t objc_branch_size(void *entry, void *target)
 {
-    _objc_classLoader = newClassLoader;
+    return objc_cond_branch_size(entry, target, COND_ALWAYS);
 }
 
+__private_extern__ size_t 
+objc_cond_branch_size(void *entry, void *target, unsigned cond)
+{
+    intptr_t destination = (intptr_t)target;
+    intptr_t displacement = (intptr_t)destination - (intptr_t)entry;
 
-#if defined(__ppc__)
+    if (cond == COND_ALWAYS  &&  ppc_small_displacement(displacement)) {
+        // fits in unconditional relative branch immediate
+        return 1;
+    } 
+    if (cond == COND_ALWAYS  &&  ppc_small_displacement(destination)) {
+        // fits in unconditional absolute branch immediate
+        return 1;
+    }
+    if (ppc_tiny_displacement(displacement)) {
+        // fits in conditional relative branch immediate
+        return 1;
+    } 
+    if (ppc_tiny_displacement(destination)) {
+        // fits in conditional absolute branch immediate
+        return 1;
+    }
+#if defined(__ppc64__)
+    if (!ppc_32bit_displacement(destination)) {
+        // fits in 64-bit absolute branch through CTR
+        return 7;
+    }
+#endif
+    
+    // fits in 32-bit absolute branch through CTR
+    return 4;
+}
 
 /**********************************************************************
 * 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. 
+* The sequence written will be objc_branch_size(entry, target) instructions.
 * Returns the number of instructions written.
 **********************************************************************/
 __private_extern__ size_t objc_write_branch(void *entry, void *target) 
+{
+    return objc_write_cond_branch(entry, target, COND_ALWAYS);
+}
+
+__private_extern__ size_t 
+objc_write_cond_branch(void *entry, void *target, unsigned cond) 
 {
     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
+    if (cond == COND_ALWAYS  &&  ppc_small_displacement(displacement)) {
+        // use unconditional relative branch with the displacement
+        address[0] = 0x48000000 | (unsigned)(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)
+    } 
+    if (cond == COND_ALWAYS  &&  ppc_small_displacement(destination)) {
+        // use unconditional absolute branch with the destination
+        address[0] = 0x48000000 | (unsigned)(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
+    }
+
+    if (ppc_tiny_displacement(displacement)) {
+        // use conditional relative branch with the displacement
+        address[0] = 0x40000000 | cond | (unsigned)(displacement & 0x0000fffc); // b *+displacement
+        // issued 1 instruction
+        return 1;
+    } 
+    if (ppc_tiny_displacement(destination)) {
+        // use conditional absolute branch with the destination
+        address[0] = 0x40000000 | cond | (unsigned)(destination & 0x0000fffc) | 2; // ba destination (2 is the absolute flag)
+        // issued 1 instruction
+        return 1;
+    }
+
+
+    // destination is large and far away. 
+    // Use an absolute branch via CTR.
+
+#if defined(__ppc64__)
+    if (!ppc_32bit_displacement(destination)) {
+        uint16_t lo = destination & 0xffff;
+        uint16_t hi = (destination >> 16) & 0xffff;
+        uint16_t hi2 = (destination >> 32) & 0xffff;
+        uint16_t hi3 = (destination >> 48) & 0xffff;
+        
+        address[0] = 0x3d800000 | hi3;   // lis  r12, hi3
+        address[1] = 0x618c0000 | hi2;   // ori  r12, r12, hi2
+        address[2] = 0x798c07c6;         // sldi r12, r12, 32
+        address[3] = 0x658c0000 | hi;    // oris r12, r12, hi
+        address[4] = 0x618c0000 | lo;    // ori  r12, r12, lo
+        address[5] = 0x7d8903a6;         // mtctr r12
+        address[6] = 0x4c000420 | cond;  // bctr
+        // issued 7 instructions
+        return 7;
+    }
+#endif
+
+    {
+        uint16_t lo = destination & 0xffff;
+        uint16_t hi = (destination >> 16) & 0xffff;
+
+        address[0] = 0x3d800000 | hi;               // lis r12,hi
+        address[1] = 0x618c0000 | lo;               // ori r12,r12,lo
+        address[2] = 0x7d8903a6;                    // mtctr r12
+        address[3] = 0x4c000420 | cond;             // bctr
         // issued 4 instructions
         return 4;
     }
 }
 
-// defined(__ppc__)
+// defined(__ppc__)  ||  defined(__ppc64__)
+#endif
+
+#if defined(__i386__) || defined(__x86_64__)
+
+/**********************************************************************
+* objc_branch_size
+* Returns the number of BYTES needed 
+* for a branch from entry to target. 
+**********************************************************************/
+__private_extern__ size_t objc_branch_size(void *entry, void *target)
+{
+    return objc_cond_branch_size(entry, target, COND_ALWAYS);
+}
+
+__private_extern__ size_t 
+objc_cond_branch_size(void *entry, void *target, unsigned cond)
+{
+    // For simplicity, always use 32-bit relative jumps.
+    if (cond == COND_ALWAYS) return 5;
+    else return 6;
+}
+
+/**********************************************************************
+* objc_write_branch
+* Writes at entry an i386 branch instruction sequence that branches to target.
+* The sequence written will be objc_branch_size(entry, target) BYTES.
+* Returns the number of BYTES written.
+**********************************************************************/
+__private_extern__ size_t objc_write_branch(void *entry, void *target) 
+{
+    return objc_write_cond_branch(entry, target, COND_ALWAYS);
+}
+
+__private_extern__ size_t 
+objc_write_cond_branch(void *entry, void *target, unsigned cond) 
+{
+    uint8_t *address = (uint8_t *)entry;  // instructions written to here
+    intptr_t destination = (intptr_t)target;  // branch dest as absolute address
+    intptr_t displacement = (intptr_t)destination - ((intptr_t)address + objc_cond_branch_size(entry, target, cond)); // branch dest as relative offset
+    
+    // For simplicity, always use 32-bit relative jumps
+    if (cond != COND_ALWAYS) {
+        *address++ = 0x0f;  // Jcc prefix
+    }
+    *address++ = cond;
+    *address++ = displacement & 0xff;
+    *address++ = (displacement >> 8) & 0xff;
+    *address++ = (displacement >> 16) & 0xff;
+    *address++ = (displacement >> 24) & 0xff;
+
+    return address - (uint8_t *)entry;
+}
+
+// defined __i386__
 #endif
 
 
@@ -3099,3 +1298,104 @@ __private_extern__ int secure_open(const char *filename, int flags, uid_t euid)
 }
 
 
+#if !__OBJC2__
+// GrP fixme
+extern Class _objc_getOrigClass(const char *name);
+#endif
+const char *class_getImageName(Class cls)
+{
+    int ok;
+    Dl_info info;
+
+    if (!cls) return NULL;
+
+#if !__OBJC2__
+    cls = _objc_getOrigClass(_class_getName(cls));
+#endif
+
+    ok = dladdr(cls, &info);
+    if (ok) return info.dli_fname;
+    else return NULL;
+}
+
+
+const char **objc_copyImageNames(unsigned int *outCount)
+{
+    header_info *hi;
+    int count = 0;
+    int max = HeaderCount;
+    const char **names = calloc(max+1, sizeof(char *));
+    
+    for (hi = _objc_headerStart(); 
+         hi != NULL && count < max; 
+         hi = hi->next) 
+    {
+        if (hi->dl_info.dli_fname) {
+            names[count++] = hi->dl_info.dli_fname;
+        }
+    }
+    names[count] = NULL;
+    
+    if (count == 0) {
+        // Return NULL instead of empty list if there are no images
+        free(names);
+        names = NULL;
+    }
+
+    if (outCount) *outCount = count;
+    return names;
+}
+
+
+/**********************************************************************
+*
+**********************************************************************/
+const char ** 
+objc_copyClassNamesForImage(const char *image, unsigned int *outCount)
+{
+    header_info *hi;
+
+    if (!image) {
+        if (outCount) *outCount = 0;
+        return NULL;
+    }
+
+    // Find the image.
+    for (hi = _objc_headerStart(); hi != NULL; hi = hi->next) {
+        if (0 == strcmp(image, hi->dl_info.dli_fname)) break;
+    }
+    
+    if (!hi) {
+        if (outCount) *outCount = 0;
+        return NULL;
+    }
+
+    return _objc_copyClassNamesForImage(hi, outCount);
+}
+       
+
+/**********************************************************************
+* Fast Enumeration Support
+**********************************************************************/
+
+static void (*enumerationMutationHandler)(id);
+
+/**********************************************************************
+* objc_enumerationMutation
+* called by compiler when a mutation is detected during foreach iteration
+**********************************************************************/
+void objc_enumerationMutation(id object) {
+    if (enumerationMutationHandler == nil) {
+        _objc_fatal("mutation detected during 'for(... in ...)'  enumeration of object %p.", object);
+    }
+    (*enumerationMutationHandler)(object);
+}
+
+
+/**********************************************************************
+* objc_setEnumerationMutationHandler
+* an entry point to customize mutation error handing
+**********************************************************************/
+void objc_setEnumerationMutationHandler(void (*handler)(id)) {
+    enumerationMutationHandler = handler;
+}
index 56412a6c1d873dc1e6d8edc2dcd437da53153b41..8dc1753ff8e6554a6200f3ff4389f77609c07ebd 100644 (file)
@@ -1,10 +1,8 @@
 /*
- * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 2004 Apple 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
index bd6c2f8d1a4ff230345508e491e5407f6db4fb62..31edafbd9b4b367f60ca202f323307785ed2f7a4 100644 (file)
@@ -1,10 +1,8 @@
 /*
- * Copyright (c) 2004 Apple Computer, Inc. All rights reserved.
+ * Copyright (c) 1999-2004 Apple 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
index 5a7f7758a39a02a1f72d71dc10c80bc26b0c2285..389900dbebe2e148ddb6504e015491532d0214c4 100644 (file)
-/*
- * Copyright (c) 2003 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@
- */
-/* Last update: cjk - 16 October 2000
- * To construct this list, I enabled the code in the search function which
- * is marked DUMP_SELECTORS, and launched a few apps with stdout redirected
- * to files in /tmp, and ran the files through this script:
- *     cat file1 file2 file3 | sort -u > result
- *
- * Then I hand-edited the result file to clean it up. To do updates, I've
- * just dumped the selectors that end up in the side CFSet (see the macro
- * DUMP_UNKNOWN_SELECTORS).
- *
- * This left me with 13528 selectors, which was nicely close to but under
- * 2^14 for the binary search.
- */
-/* GrP 2004-12-15
- * Current apps use well over 2^14 selectors. 
- * 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 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] = {
-       ".cxx_construct",
-       ".cxx_destruct",
-       "CGColorSpace",
-       "CGCompositeOperationInContext:",
-       "CIContext",
-       "CI_affineTransform",
-       "CI_arrayWithAffineTransform:",
-       "CI_copyWithZone:map:",
-       "CI_initWithAffineTransform:",
-       "CI_initWithRect:",
-       "CI_rect",
-       "CTM",
-       "DOMDocument",
-       "DTD",
-       "DTDKind",
-       "DTDString",
-       "EPSOperationWithView:insideRect:toData:",
-       "EPSOperationWithView:insideRect:toData:printInfo:",
-       "EPSOperationWithView:insideRect:toPath:printInfo:",
-       "EPSRepresentation",
-       "HTMLData",
-       "HTMLFileWrapper",
-       "HTTPBody",
-       "HTTPBodyStream",
-       "HTTPBodyStreamForTransmission",
-       "HTTPContentType",
-       "HTTPExtraCookies",
-       "HTTPMethod",
-       "HTTPReferrer",
-       "HTTPResponse",
-       "HTTPShouldHandleCookies",
-       "HTTPUserAgent",
-       "IBeamCursor",
-       "ICCProfileData",
-       "MD5",
-       "MIMEType",
-       "MIMETypeEnumerator",
-       "MIMETypeForExtension:",
-       "MIMETypeForPath:",
-       "NPP_Destroy",
-       "NPP_DestroyStream",
-       "NPP_GetValue",
-       "NPP_HandleEvent",
-       "NPP_New",
-       "NPP_NewStream",
-       "NPP_Print",
-       "NPP_SetValue",
-       "NPP_SetWindow",
-       "NPP_StreamAsFile",
-       "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",
-       "RTFD",
-       "RTFDFileWrapper",
-       "RTFDFileWrapperFromRange:documentAttributes:",
-       "RTFDFromRange:",
-       "RTFDFromRange:documentAttributes:",
-       "RTFFromRange:",
-       "RTFFromRange:documentAttributes:",
-       "TIFFRepresentation",
-       "TIFFRepresentationOfImageRepsInArray:",
-       "TIFFRepresentationOfImageRepsInArray:usingCompression:factor:",
-       "TIFFRepresentationUsingCompression:factor:",
-       "UIDelegate",
-       "URI",
-       "URIRepresentation",
-       "URIRepresentationForID:",
-       "URL",
-       "URL:resourceDataDidBecomeAvailable:",
-       "URL:resourceDidFailLoadingWithError:",
-       "URL:resourceDidFailLoadingWithReason:",
-       "URLFromPasteboard:",
-       "URLHandle:resourceDataDidBecomeAvailable:",
-       "URLHandle:resourceDidFailLoadingWithReason:",
-       "URLHandleClassForURL:",
-       "URLHandleResourceDidBeginLoading:",
-       "URLHandleResourceDidCancelLoading:",
-       "URLHandleResourceDidFinishLoading:",
-       "URLHandleUsingCache:",
-       "URLProtocol:cachedResponseIsValid:",
-       "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",
-       "URLsFromRunningOpenPanel",
-       "UTF8String",
-       "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:",
-       "_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_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",
-       "_UIDelegateForwarder",
-       "_UIEventImpl",
-       "_URIisNil",
-       "_URL",
-       "_URLByEscapingSpacesAndControlChars",
-       "_URLForHistory",
-       "_URLForString:",
-       "_URLHasScheme:",
-       "_URLStringForString:",
-       "_URLStringFromLocationHeader",
-       "_URLWithData:relativeToURL:",
-       "_URLWithDataAsString:",
-       "_URLWithDataAsString:relativeToURL:",
-       "_URLsFromSelectors:",
-       "_URLsMatchItem:",
-       "_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",
-       "_abstractViewImpl",
-       "_abstractViewWithImpl:",
-       "_acceptExpressions:flags:",
-       "_acceptOperator:flags:",
-       "_acceptSubpredicates:flags:",
-       "_acceptableRowAboveKeyInVisibleRect:",
-       "_acceptableRowAboveRow:minRow:",
-       "_acceptableRowAboveRow:tryBelowPoint:",
-       "_acceptableRowBelowKeyInVisibleRect:",
-       "_acceptableRowBelowRow:maxRow:",
-       "_acceptableRowBelowRow:tryAbovePoint:",
-       "_acceptsFirstResponderInItem:",
-       "_acceptsMarkedText",
-       "_accessibilityArrowScreenRect:",
-       "_accessibilityBoundsOfChild:",
-       "_accessibilityButtonRect",
-       "_accessibilityButtonUIElement",
-       "_accessibilityCellLabelType",
-       "_accessibilityChildrenInRange:",
-       "_accessibilityCorrectlyParentedCells:",
-       "_accessibilityGrowBoxRect",
-       "_accessibilityIconHandlesTitle",
-       "_accessibilityIndicatorRect",
-       "_accessibilityIsModal",
-       "_accessibilityIsRadioGroup",
-       "_accessibilityIsSupportedPartCode:",
-       "_accessibilityLoadBrowserCellsAtRow:count:",
-       "_accessibilityMaxValue",
-       "_accessibilityMinValue",
-       "_accessibilityMinValueWithoutCollapsing",
-       "_accessibilityNextSplitterMinCoordinate",
-       "_accessibilityNumberOfChildren",
-       "_accessibilityPanel",
-       "_accessibilityParentForSubview:",
-       "_accessibilityPopUpButtonCellPressAction:",
-       "_accessibilityPressAction:",
-       "_accessibilityPreviousSplitterMaxCoordinate",
-       "_accessibilityRowsInRange:",
-       "_accessibilityScreenRectForSegment:",
-       "_accessibilitySearchFieldCellBounds",
-       "_accessibilitySegmentAtIndex:",
-       "_accessibilityShowMenu:",
-       "_accessibilitySplitterMinCoordinate",
-       "_accessibilitySplitterRects",
-       "_accessibilitySupportedPartCodes",
-       "_accessibilityTableCell:tableColumn:",
-       "_accessibilityTableRow:",
-       "_accessibilityTitle",
-       "_accessibilityTitleCell",
-       "_accessibilityTitleForColumn:",
-       "_accessibilityTitleRect",
-       "_accessibilityToolBarItem",
-       "_accessibilityToolBarItemViewer",
-       "_accessibilityUIElementForPartCode:",
-       "_accessibilityUIElementPath",
-       "_accessibilityUIElementPathForChild:",
-       "_accessibilityValue",
-       "_accessibilityViewCorrectedForFieldEditor:",
-       "_actOnKeyDown:",
-       "_actionCellInitWithCoder:",
-       "_actionHasBegun:atIndex:",
-       "_actionHasBegun:atIndexPath:",
-       "_actionInformationForLoadType:isFormSubmission:event:originalURL:",
-       "_actionInformationForNavigationType:event:originalURL:",
-       "_activate",
-       "_activateHelpModeBasedOnEvent:",
-       "_activateServer",
-       "_activateTrackingRectsForApplicationActivation",
-       "_activateWindows",
-       "_activeFileListViewForResizing",
-       "_actualOrderingFilePropertyAscending:",
-       "_adapter",
-       "_addAnimatedColumn",
-       "_addAttachmentForElement:URL:needsParagraph:usePlaceholder:",
-       "_addAutosavingOfDocument:contentsToURL:",
-       "_addBackForwardItem:",
-       "_addBackForwardItemClippedAtTarget:",
-       "_addBackForwardItems:",
-       "_addBindVarForConstVal:",
-       "_addBinding:toController:withKeyPath:valueTransformerName:options:",
-       "_addChild:",
-       "_addCollection:options:sender:",
-       "_addColor:",
-       "_addColumnSubviewAndAnimateIfNecessary:",
-       "_addColumnToFetch:",
-       "_addColumnWithoutChangingVisibleColumn",
-       "_addContent",
-       "_addContentsToDictionary:depth:",
-       "_addConversionsFromTypes:",
-       "_addCornerDirtyRectForRect:list:count:",
-       "_addCredential:forProtectionSpace:",
-       "_addCurrentDirectoryToRecentPlaces",
-       "_addCursorRect:cursor:forView:",
-       "_addDefaultTable",
-       "_addDeletesToDatabaseOp:forManyToMany:",
-       "_addDescriptorCheckingForDuplicates:toCollection:",
-       "_addDragTypesTo:",
-       "_addEditableSubfieldForElement:",
-       "_addEntities:toConfiguration:",
-       "_addEntity:",
-       "_addExpandedNodeToObservedNodeMappingForExpandedNode:",
-       "_addExtraFieldsToRequest:alwaysFromRequest:",
-       "_addFontDescriptorFromDrag:toCollectionAtIndex:",
-       "_addFramePathToString:",
-       "_addHeartBeatClientView:",
-       "_addHiddenWindow:",
-       "_addImage:named:",
-       "_addIndexedEntity:",
-       "_addInsertsToDatabaseOp:forManyToMany:",
-       "_addItem:toTable:",
-       "_addKeychainItem:",
-       "_addLibxml2TreeRepresentationToDoc:context:",
-       "_addListDefinition:forKey:",
-       "_addManyToManysToDatabaseOp:",
-       "_addMapping:forConfigurationWithName:",
-       "_addMarker:",
-       "_addMarkersToList:range:",
-       "_addMouseMovedListener:",
-       "_addMultipleToTypingAttributes:",
-       "_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:",
-       "_addPlugIn:allowNonExecutable:",
-       "_addPlugInStreamClient:",
-       "_addPlugInsFromPath:allowNonExecutable:checkForExistingPlugIn:",
-       "_addProperty:",
-       "_addQuoteForElement:opening:level:",
-       "_addQuoteForLibXML2ElementNode:opening:level:",
-       "_addRangeToArray:",
-       "_addRepresentedObject:toAttributedString:atRange:",
-       "_addRepresentedObjects:toAttributedString:atRange:",
-       "_addRepsFrom:toRep:",
-       "_addResponse:",
-       "_addResult:",
-       "_addRevealoverIfNecessaryForCell:cellRect:",
-       "_addRootColumnToFetch:",
-       "_addScrollerDashboardRegions:",
-       "_addScrollerDashboardRegions:from:",
-       "_addSpellingAttributeForRange:",
-       "_addStaticSubfieldWithString:",
-       "_addStringToRecentSearches:",
-       "_addSubentity:",
-       "_addSubfieldForElement:withString:",
-       "_addSubframeArchives:",
-       "_addSubresourceClient:",
-       "_addSubresources:",
-       "_addSubview:",
-       "_addToGroups:ordered:",
-       "_addToLibxml2TreeRepresentationWithDoc:dtd:context:",
-       "_addToOrphanList",
-       "_addToStyle:fontA:fontB:",
-       "_addToTypingAttributes:value:",
-       "_addToolTipRect:",
-       "_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:",
-       "_additionIndexPathAppendChildIndex:",
-       "_adjustCancelButtonCellImages::",
-       "_adjustCharacterIndicesForRawGlyphRange:byDelta:",
-       "_adjustClipIndicatorPosition",
-       "_adjustControls:andSetColor:",
-       "_adjustDatePickerElement:by:",
-       "_adjustDynamicDepthLimit",
-       "_adjustEditedCellLocation",
-       "_adjustFocusRingLocation:",
-       "_adjustFocusRingSize:",
-       "_adjustFontOfObject:mode:triggerRedisplay:compareDirectly:toFont:",
-       "_adjustFontSize",
-       "_adjustForGrowBox",
-       "_adjustFrameOfOutlineCellIfNecessary:frame:",
-       "_adjustFrameSize",
-       "_adjustLayoutForTextAreaFrame:",
-       "_adjustLength",
-       "_adjustMinContentSizeForMinFrameSize:",
-       "_adjustMovieToView",
-       "_adjustNibControlSizes",
-       "_adjustObject:mode:observedController:observedKeyPath:context:editableState:adjustState:",
-       "_adjustObject:mode:triggerRedisplay:",
-       "_adjustPanelForMinWidth",
-       "_adjustPort",
-       "_adjustPrintingMarginsForHeaderAndFooter",
-       "_adjustRichTextFontSizeByRatio:",
-       "_adjustSearchButtonCellImages::",
-       "_adjustSelectionForItemEntry:numberOfRows:adjustFieldEditorIfNecessary:",
-       "_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",
-       "_allPossibleLabelsToFit",
-       "_allSidebarItemViews",
-       "_allTokenFieldAttachments",
-       "_allocAndInitPrivateIvars",
-       "_allocAuxiliary:",
-       "_allocAuxiliaryStorage",
-       "_allocData:",
-       "_allocExtraData",
-       "_allocString:",
-       "_allocateAuxData",
-       "_allocateObserationStorage",
-       "_allocatePPDStuffAndParse",
-       "_allowKillRing",
-       "_allowSmallIcons",
-       "_allowedItemIdentifiers",
-       "_allowedToSetCookiesFromURL:withPolicyBaseURL:",
-       "_allowsContextMenus",
-       "_allowsDisplayMode:",
-       "_allowsDuplicateItems",
-       "_allowsNonNativeGlyphPacking",
-       "_allowsScreenFontKerning",
-       "_allowsSizeMode:",
-       "_allowsTearOffs",
-       "_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:",
-       "_antialiasThresholdChanged:",
-       "_antialiased",
-       "_anticipateRelease",
-       "_appDidBecomeActive:",
-       "_appHasNonMiniaturizedWindow",
-       "_appHasOpenNSWindow",
-       "_appHasVisibleWindowOrPanel",
-       "_appIcon",
-       "_appWillTerminate:",
-       "_appendArcSegmentWithCenter:radius:angle1:angle2:",
-       "_appendAttachment:toString:",
-       "_appendColorPicker:",
-       "_appendEventDeclarationsToAETEData:",
-       "_appendKey:option:value:inKeyNode:",
-       "_appendNewItemWithItemIdentifier:notifyDelegate:notifyView:notifyFamilyAndUpdateDefaults:",
-       "_appendNodes:forNodeInfo:addSeparator:",
-       "_appendObjectClassDeclarationsToAETEData:",
-       "_appendSanitizedTextBytes:length:encoding:isSymbol:attributes:",
-       "_appendStringInKeyNode:key:value:",
-       "_appendTextBytes:length:encoding:attributes:",
-       "_appendTypeDefinitionsSuiteDeclarationToAETEData:",
-       "_appletElementImpl",
-       "_applicationDidBecomeActive",
-       "_applicationDidResignActive",
-       "_applicationDidTerminate:",
-       "_applicationStatusChange:",
-       "_applicationWillLaunch:",
-       "_applicationWillTerminate:",
-       "_applyAllValuesFromValueBuffer",
-       "_applyDisplayedValueIfHasUncommittedChangesWithHandleErrors:typeOfAlert:discardEditingCallback:otherCallback:callbackContextInfo:didRunAlert:",
-       "_applyHTTPCredentials:",
-       "_applyHTTPProxyCredentials:",
-       "_applyMarkerSettingsFromParagraphStyle:",
-       "_applyObjectValue:forBinding:canRecoverFromErrors:handleErrors:typeOfAlert:discardEditingCallback:otherCallback:callbackContextInfo:didRunAlert:",
-       "_applyStyleToSelection:",
-       "_applyStylesheet:",
-       "_applyValue:forKey:registrationDomain:",
-       "_applyValueTransformerToValue:forBindingInfo:reverse:",
-       "_appropriateColorPanelSliderPane",
-       "_aquaColorVariantChanged",
-       "_aquaScrollerBehaviorChanged:",
-       "_aquaScrollerVariantChanged:",
-       "_archiveToFile:",
-       "_archiveWithCurrentState:",
-       "_archiveWithMarkupString:nodes:",
-       "_areAllPanelsNonactivating",
-       "_areWritesCancelled",
-       "_areaElementImpl",
-       "_argument",
-       "_argumentBindingCount",
-       "_argumentDescriptionForKey:",
-       "_argumentDescriptions",
-       "_argumentDescriptionsByName",
-       "_argumentDescriptionsFromUnnamedImplDeclaration:presoDeclaration:namedImplDeclarations:presoDeclarations:suiteName:commandName:",
-       "_argumentForUnderlineStyle:",
-       "_argumentValueFromParameterDescriptor:usingTypeDescription:",
-       "_arrangeObjectsWithSelectedObjects:avoidsEmptySelection:operationsMask:useBasis:",
-       "_arrayByTranslatingAEList:toType:inSuite:",
-       "_arrayControllerWithContent:retain:",
-       "_arrayForPartialPinningFromArray:",
-       "_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:",
-       "_attachWindowForOrdering:relativeOp:",
-       "_attachedSupermenuView",
-       "_attachmentAtGlyphIndex:containsWindowPoint:",
-       "_attachmentCellForSelection",
-       "_attachmentSizesRun",
-       "_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",
-       "_autoscrollForDraggingInfo:timeDelta:",
-       "_autovalidateToolbarItem:",
-       "_autovalidateVisibleToolbarItems",
-       "_autovalidatesItems",
-       "_availableBindingsWithFontBindingsFiltered:",
-       "_availableChannel",
-       "_availableChannelFromRegisteredChannels",
-       "_availableFontSetNames",
-       "_availablePaperWidthForPrintOperation:",
-       "_awakeFromFetch",
-       "_awakeFromInsert",
-       "_backForwardCacheExpirationInterval",
-       "_backForwardItems",
-       "_backgroundColor",
-       "_backgroundFileLoadCompleted:",
-       "_backingCGSFont",
-       "_barberImage:",
-       "_base64StringFromData:",
-       "_baseElementImpl",
-       "_baseFontElementImpl",
-       "_baseLineHeightForFont:",
-       "_baseString",
-       "_baseTransform",
-       "_baseWritingDirection",
-       "_baselineRenderingMode",
-       "_batchClose",
-       "_batchCollapseItemsWithItemEntries:collapseChildren:",
-       "_batchCollapseItemsWithItemEntries:collapseChildren:clearExpandState:",
-       "_batchExpandItemsWithItemEntries:expandChildren:",
-       "_batchOrdering",
-       "_batchZoom",
-       "_beginColumnAnimationOptimization",
-       "_beginCustomizationMode",
-       "_beginDraggingColumn:",
-       "_beginDrawForDragging",
-       "_beginDrawView:",
-       "_beginListeningForApplicationStatusChanges",
-       "_beginListeningForDeviceStatusChanges",
-       "_beginListeningForPowerStatusChanges",
-       "_beginListeningForSessionStatusChanges",
-       "_beginMark",
-       "_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:",
-       "_bindingAdaptor",
-       "_bindingAdaptorMethodsNeededMask",
-       "_bindingCreationDelegate",
-       "_bindingInfoForBinding:",
-       "_bindingInfoIndexForBinding:",
-       "_bindingInformationWithExistingNibConnectors:availableControllerChoices:",
-       "_bindingInfos",
-       "_bitBlitSourceRect:toDestinationRect:",
-       "_bitmapFormat",
-       "_blackRGBColor",
-       "_blinkCaret:",
-       "_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:",
-       "_bundleForClassPresentInAppKit:",
-       "_button",
-       "_buttonBezelColors",
-       "_buttonCellInitWithCoder:",
-       "_buttonElementImpl",
-       "_buttonFrameSizeForSizeMode:",
-       "_buttonHeight",
-       "_buttonImageSource",
-       "_buttonImageToolTip",
-       "_buttonOfClass:action:",
-       "_buttonToolTip",
-       "_buttonType",
-       "_buttonWidth",
-       "_bytesAreVM",
-       "_cacheDisplayValue:",
-       "_cacheObjectValue:",
-       "_cachePolicyForResponse",
-       "_cacheRepresentation:",
-       "_cacheRepresentation:stayFocused:",
-       "_cacheResourceLoadDelegateImplementations",
-       "_cacheRow:rect:",
-       "_cacheRowHeightsIntoBucket:bucketFirstRowIndex:lastCacheableRowIndex:",
-       "_cacheSelectedObjectsIfNecessary",
-       "_cacheUserKeyEquivalentInfo",
-       "_cacheViewImage:",
-       "_cachedChildrenForNode:createIfNeeded:",
-       "_cachedDisplayValue",
-       "_cachedObjectForKey:value:",
-       "_cachedObjectValue",
-       "_cachedResponseForURL:",
-       "_cachedResponseHasExpired",
-       "_cachedResponsePassesValidityChecks",
-       "_cachedValuesAreValid",
-       "_cachingView",
-       "_calcAndSetFilenameTitle",
-       "_calcHeights:num:margin:operation:helpedBy:",
-       "_calcMarginSize:operation:",
-       "_calcNumVisibleColumnsAndColumnSize",
-       "_calcOutlineColumnWidth",
-       "_calcScrollArrowHeight",
-       "_calcTextRect:",
-       "_calcTrackRect:andAdjustRect:",
-       "_calcVisibleColumnAreaAvailable",
-       "_calcWidths:num:margin:operation:helpedBy:",
-       "_calculatePageRectsWithOperation:pageSize:layoutAssuredComplete:",
-       "_calculatePrintHeight",
-       "_calculateSelectedSegmentForPoint:",
-       "_calculateSizeToFitWidthOfColumn:testLoadedOnly:",
-       "_calculateTotalScaleForPrintingWithOperation:",
-       "_calculatedExpiration",
-       "_calendarContentAttributedStringWithSelectedDay:today:",
-       "_calendarID",
-       "_calendarWithID:",
-       "_callImplementor:context:chars:glyphs:stringBuffer:font:",
-       "_canAutoGenerateKeyboardLoops",
-       "_canBecomeDefaultButtonCell",
-       "_canCachePage",
-       "_canChangeRulerMarkers",
-       "_canCopy",
-       "_canCut",
-       "_canDelete",
-       "_canDeselect",
-       "_canDeselect:",
-       "_canDragRowForClickOnCell:column:row:atPoint:",
-       "_canDrawOutsideOfItsBounds",
-       "_canEdit",
-       "_canHandleRequest:",
-       "_canHaveToolbar",
-       "_canHide",
-       "_canInitiateRowDragInColumn:",
-       "_canMoveItemAsSource:",
-       "_canOptimizeDrawing",
-       "_canPaste",
-       "_canProcessDragWithDraggingInfo:",
-       "_canRunCustomizationPanel",
-       "_canSave",
-       "_canSaveGraphRootedAtObject:intoStore:givenOthers:",
-       "_canShowGoto",
-       "_canShowMIMETypeAsHTML:",
-       "_canShowToolTip",
-       "_canSmartCopyOrDelete",
-       "_canSmartReplaceWithPasteboard:",
-       "_canUseCompositing",
-       "_canUseKeyEquivalentForMenuItem:",
-       "_canUseReorderResizeImageCache",
-       "_canUseResourceForRequest:",
-       "_canUserSetVisibilityPriority",
-       "_cancelAddMarker:",
-       "_cancelAllUserAttentionRequests",
-       "_cancelAnyScheduledAutoCollapse",
-       "_cancelAutoExpandTimer",
-       "_cancelCurrentToolTipWindowImmediately:",
-       "_cancelDelayedAutocomplete",
-       "_cancelDelayedKeyboardNavigationTabSwitch",
-       "_cancelDelayedShowOpenHandCursor",
-       "_cancelKey:",
-       "_cancelMovementTrackingTimer",
-       "_cancelPerformSelectors",
-       "_cancelRequest:",
-       "_cancelWithError:",
-       "_cancelWithErrorCode:",
-       "_candidateDragRowIndexForClickInRow:",
-       "_canonicalURLForURL:",
-       "_canonicalXMLStringPreservingComments:relationships:",
-       "_captureInput",
-       "_captureReorderResizeColumnImageCaches",
-       "_captureVisibleIntoImageCache",
-       "_captureVisibleIntoLiveResizeCache",
-       "_carbonNotification",
-       "_carbonWindowClass",
-       "_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:",
-       "_cfBundle",
-       "_cfPasteboard",
-       "_cfTypeID",
-       "_cfurl",
-       "_cgColor",
-       "_cgsEventRecord",
-       "_cgsEventTime",
-       "_chainNewError:toOriginalErrorDoublePointer:",
-       "_changeAlertSheetWasPresented:withResult:inContext:",
-       "_changeAllDrawersFirstResponder",
-       "_changeAllDrawersKeyState",
-       "_changeAllDrawersMainState",
-       "_changeCSSColorUsingSelector:inRange:",
-       "_changeColorToColor:",
-       "_changeDrawerFirstResponder",
-       "_changeDrawerKeyState",
-       "_changeDrawerMainState",
-       "_changeEditable:",
-       "_changeFileListMode:",
-       "_changeFirstResponder",
-       "_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:lineFragmentWidth:hyphenate:",
-       "_characterCoverage",
-       "_characterDataImpl",
-       "_characterRangeCurrentlyInAndAfterContainer:",
-       "_characterRangeForPoint:inRect:ofView:",
-       "_checkCollectionMoveOut:",
-       "_checkDataSource",
-       "_checkDirectoryListing",
-       "_checkDisplayDelegate:",
-       "_checkFavoriteMode",
-       "_checkForCookieExpiration",
-       "_checkForObsoleteDelegateMethodsInObject:",
-       "_checkForSimpleTrackingMode",
-       "_checkForTerminateAfterLastWindowClosed:",
-       "_checkForTimeouts",
-       "_checkGrammarInString:language:details:",
-       "_checkIfSpeakingThroughSpeechFeedbackWindowIsFinished:",
-       "_checkInList:listStart:markerRange:emptyItem:atEnd:inBlock:blockStart:",
-       "_checkLoadComplete",
-       "_checkLoadCompleteForThisFrame",
-       "_checkLoaded:rect:highlight:",
-       "_checkMiniMode:",
-       "_checkNavigationPolicyForRequest:dataSource:formState:andCall:withSelector:",
-       "_checkNewWindowPolicyForRequest:action:frameName:formState:andCall:withSelector:",
-       "_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:",
-       "_classDescriptionForName:",
-       "_classDescriptionForName:suiteName:isValid:",
-       "_classDescriptionFromKey:andContainerClassDescription:",
-       "_classDescriptionsFromPropertyListDeclarations:suiteName:",
-       "_classNameForType:",
-       "_classOfObjectsInNestedHomogeneousArray:",
-       "_classSynonymDescriptionsFromImplDeclarations:presoDeclarations:",
-       "_cleanUpAfterSave",
-       "_cleanUpAfterTransaction",
-       "_cleanUpConnectionWithSynchronizePeerBinders:",
-       "_cleanUpForCarbonAppTermination",
-       "_cleanup",
-       "_cleanupAndAuthenticate:sequence:conversation:invocation:raise:",
-       "_cleanupBindingsWithExistingNibConnectors:exception:",
-       "_cleanupHelpForQuit",
-       "_cleanupMenuMaps",
-       "_cleanupPausedActions",
-       "_clear",
-       "_clearAnimationInfo",
-       "_clearAnyValidResponderOverride",
-       "_clearCellFrame",
-       "_clearChangedThisTransaction:",
-       "_clearControlTintColor",
-       "_clearCurrentAttachmentSettings",
-       "_clearDefaultMenuFormRepresentation",
-       "_clearDeletions",
-       "_clearDependenciesWithPeerBindersInArray:",
-       "_clearDictionaries",
-       "_clearDirtyRectsForLockedTree",
-       "_clearDirtyRectsForTree",
-       "_clearDragMargins",
-       "_clearEditingTextView:",
-       "_clearErrors",
-       "_clearEventMask",
-       "_clearFocusForView",
-       "_clearImageForLockFocusUse",
-       "_clearInitialFirstResponderAndLastKeyViewIfAutoGenerated",
-       "_clearInsertions",
-       "_clearKeyCell",
-       "_clearLastHitViewIfSelf",
-       "_clearLiveResizeColumnLayoutInfo",
-       "_clearMarkedRange",
-       "_clearMarkedWidth",
-       "_clearModalWindowLevel",
-       "_clearMouseTracking",
-       "_clearMouseTrackingForCell:",
-       "_clearObserving",
-       "_clearOriginalSnapshotAndInitializeRec:",
-       "_clearOriginalSnapshotForObject:",
-       "_clearPageCache",
-       "_clearPendingChanges",
-       "_clearRawProperties",
-       "_clearRememberedEditingFirstResponder",
-       "_clearSaveTimer",
-       "_clearSelectedCell",
-       "_clearSpellingForRange:",
-       "_clearTemporaryAttributes",
-       "_clearTemporaryAttributesForCharacterRange:changeInLength:",
-       "_clearTrackingRects",
-       "_clearUndoManageForFieldEditor:",
-       "_clearUnneccessaryItems:",
-       "_clearUnprocessedDeletions",
-       "_clearUnprocessedInsertions",
-       "_clearUnprocessedUpdates",
-       "_clearUpdates",
-       "_clearVisitedColumnContentWidths",
-       "_clickedCharIndex",
-       "_clientRedirectCancelled:",
-       "_clientRedirectedTo:delay:fireDate:lockHistory:isJavaScriptFormAction:",
-       "_clientsCreatingIfNecessary:",
-       "_clipIndicator",
-       "_clipIndicatorIsShowing",
-       "_clipViewAncestor",
-       "_clipViewBoundsChanged:",
-       "_clippedItemViewers",
-       "_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:",
-       "_closeListsForParagraphStyle:atIndex:inString:",
-       "_closeOldDataSources",
-       "_closeSheet:andMoveParent:",
-       "_closeWindow",
-       "_cocoaErrorDescription",
-       "_cocoaErrorString:",
-       "_cocoaErrorString:alternate:",
-       "_cocoaTypeNameFromIdentifier:",
-       "_coerceValue:forKey:withDescription:",
-       "_collapseAllAutoExpandedItems",
-       "_collapseAutoExpandedItems:",
-       "_collapseButtonOrigin",
-       "_collapseItem:collapseChildren:clearExpandState:",
-       "_collapseItemEntry:collapseChildren:clearExpandState:recursionLevel:",
-       "_collapsePanel:andMoveParent:toFrame:",
-       "_collapsedOrigin",
-       "_collectApplicableUserInfoFormatters:max:",
-       "_collectElasticRangeSurroundingCharacterAtIndex:minimumCharacterIndex:",
-       "_collectItemViewerFrames:intoRectArray:",
-       "_collectSubentities",
-       "_collection:setHidden:save:",
-       "_collectionImpl",
-       "_collectionWithImpl:",
-       "_collectionWithName:",
-       "_collectionWithName:index:",
-       "_collections",
-       "_collectionsChanged:",
-       "_color",
-       "_colorAsString:",
-       "_colorAtIndex:",
-       "_colorByTranslatingRGBColorDescriptor:toType:inSuite:",
-       "_colorComponentsForIndex:redComponent:greenComponent:blueComponent:",
-       "_colorForMetal:",
-       "_colorForMouseEvent:",
-       "_colorForNode:property:",
-       "_colorList",
-       "_colorListNamed:forDeviceType:",
-       "_colorPickerWithIdentifier:",
-       "_colorPickers",
-       "_colorRect",
-       "_colorSpacesForColorPanelPaneUsingModel:",
-       "_colorSyncProfileClass",
-       "_colorSyncProfileSpace",
-       "_colorWellCommonAwake",
-       "_colorWithGradientImage:",
-       "_colorizedImage:color:",
-       "_columnAtLocation:",
-       "_columnClosestToColumn:whenMoved:",
-       "_columnRangeForDragImage",
-       "_columnResizeChangeFrameOfColumn:toFrame:constrainWidth:resizeInfo:",
-       "_columnWidthAutoSaveNameWithPrefix",
-       "_commandDescriptionsFromPropertyListDeclarations:suiteName:",
-       "_commandFromEvent:",
-       "_commandMethodSelectorsByName",
-       "_commandPopupRect",
-       "_commitEditing",
-       "_commitEditingAndEndUndo",
-       "_commitEditingDiscardEditingCallback:",
-       "_commitEditingOtherCallback:",
-       "_commitIfReady",
-       "_commitIfReady:",
-       "_commitTransaction:",
-       "_commonAwake",
-       "_commonBeginModalSessionForWindow:relativeToWindow:modalDelegate:didEndSelector:contextInfo:",
-       "_commonHandleRootOrCurrentDirectoryChanged",
-       "_commonInit",
-       "_commonInitFrame:styleMask:backing:defer:",
-       "_commonInitIvarBlock",
-       "_commonInitNSColorPickerColorSpacePopUp",
-       "_commonInitNavMatrix",
-       "_commonInitNavNodePopUpButton",
-       "_commonInitSidebarItemView",
-       "_commonInitSplitViewController",
-       "_commonInitState",
-       "_commonInitTokenAttachmentWithStringValue:",
-       "_commonInitializationWithFrameName:groupName:",
-       "_commonNavFilepathInputControllerInit",
-       "_commonNewScroll:",
-       "_commonSecureTextFieldInit:",
-       "_commonSetupTokenFieldCell",
-       "_commonTermination",
-       "_compareForHeaderOrder:",
-       "_compareNode:withDisplayName:toNode:withDisplayName:",
-       "_compareWidthWithSuperview",
-       "_compat_continuousScrollingCapable",
-       "_compatibility_initWithUnkeyedCoder:",
-       "_compatibility_takeValue:forKey:",
-       "_compatibleListShouldUseAlternateSelectedControlColor",
-       "_compatibleWithRulebookVersion:",
-       "_compiledScriptID",
-       "_complete:",
-       "_completeNoRecursion:",
-       "_completePathWithPrefix:intoString:matchesIntoArray:",
-       "_completeProgressForConnectionDelegate:",
-       "_completionsFromDocumentForPartialWordRange:",
-       "_composite:delta:fromRect:toPoint:",
-       "_compositeAndUnlockCachedImage",
-       "_compositeFlipped:atPoint:fromRect:operation:fraction:",
-       "_compositeFlipped:inRect:fromRect:operation:fraction:",
-       "_compositeHiddenViewHighlight",
-       "_compositeImage",
-       "_compositePointInRuler",
-       "_compositedBackground",
-       "_computeAllRevealovers",
-       "_computeAndAlignFirstClosestVisibleColumn",
-       "_computeBounds",
-       "_computeColorScaleIfNecessaryWithSize:",
-       "_computeCommonItemViewers",
-       "_computeCustomItemViewers",
-       "_computeDisplayedLabelForRect:",
-       "_computeDisplayedSizeOfString:",
-       "_computeDragImage",
-       "_computeDragImageFromItemViewer:",
-       "_computeExecutablePath",
-       "_computeFirstCompletelyVisibleColumn",
-       "_computeFirstMostlyVisibleColumn",
-       "_computeFirstVisibleColumnRequireCompletelyVisible:",
-       "_computeInv",
-       "_computeLayoutInfoForIconViewSize:frameSize:iconFrame:labelFrame:",
-       "_computeMaxItemViewHeight",
-       "_computeMenuForClippedItems",
-       "_computeMenuForClippedItemsIfNeeded",
-       "_computeMinHeightForSimpleSavePanel:",
-       "_computeMinWidthForSimpleSavePanel:",
-       "_computeMinimumDisplayedLabelForWidth:",
-       "_computeMinimumDisplayedLabelSize",
-       "_computeNominalDisplayedLabelSize",
-       "_computeOrderedItemViewersOfType:",
-       "_computeOrderedItemViewersOfType:inRange:resizeableOnly:",
-       "_computeOriginForRow:cacheHint:",
-       "_computeParams",
-       "_computePriorFirstResponder",
-       "_computeResizeableCustomItemViewersInRange:",
-       "_computeToolbarItemKeyboardLoop",
-       "_computeToolbarItemKeyboardLoopIfNecessary",
-       "_computeTravelTimeForInsertionOfItemViewer:",
-       "_computeWidthForSpace",
-       "_computedAttributesForElement:",
-       "_computedStringForNode:property:",
-       "_computedStyleForElement:",
-       "_concatenateKeyWithIBCreatorID:",
-       "_concealBinding:",
-       "_concludeDefaultKeyLoopComputation",
-       "_concludeReloadChildrenForNode:",
-       "_concreteInputContextClass",
-       "_conditionallySetsStates",
-       "_configSheetDidEnd:returnCode:contextInfo:",
-       "_configurationAutosaveName",
-       "_configureAccessoryView",
-       "_configureAsMainMenu",
-       "_configureAsSeparatorItem",
-       "_configureBottomControls",
-       "_configureCell:forItemAtIndex:",
-       "_configureDirectoryPopup",
-       "_configureFileListModeControlForMode:",
-       "_configureForDirectory:name:",
-       "_configureForFileListMode:",
-       "_configureForShowingInPanel",
-       "_configureGreyButton:index:",
-       "_configureHistoryControl",
-       "_configureLabelCellStringValue",
-       "_configureMDParts",
-       "_configureMessageView",
-       "_configurePathComponentPicker",
-       "_configureSavePane",
-       "_configureSearching:",
-       "_configureStreamDetails:",
-       "_configureTextViewForWordWrapMode",
-       "_confirmSize:force:",
-       "_conformsToProtocolNamed:",
-       "_connectToCookieStorage",
-       "_connectionWasBroken",
-       "_connectionWasEstablished",
-       "_consistencyCheck:",
-       "_consistencyError:startAtZeroError:cacheError:inconsistentBlockError:",
-       "_constrainAndSetDateValue:sendActionIfChanged:beepIfNoChange:",
-       "_constrainColorIndexToVisibleBounds:dirtyIfNeeded:",
-       "_constrainDateValue:",
-       "_constrainPoint:withEvent:",
-       "_constrainSheetAndDisplay:",
-       "_constructRequestForURL:isHead:",
-       "_containerRelativeFrameOfColumn:",
-       "_containerRelativeFrameOfInsideOfColumn:",
-       "_containerRelativeTitleFrameOfColumn:",
-       "_containerTextViewFrameChanged:",
-       "_containerViewOfColumns",
-       "_containerViewOfTitles",
-       "_contentHasShadow",
-       "_contentRectExcludingToolbar",
-       "_contentRectForTextBlock:glyphRange:",
-       "_contentRectIncludingToolbarAtHome",
-       "_contentToFrameMaxXWidth",
-       "_contentToFrameMaxXWidth:",
-       "_contentToFrameMaxYHeight",
-       "_contentToFrameMaxYHeight:",
-       "_contentToFrameMinXWidth",
-       "_contentToFrameMinXWidth:",
-       "_contentToFrameMinYHeight",
-       "_contentToFrameMinYHeight:",
-       "_contentView",
-       "_contents",
-       "_contentsOfHTMLData:encoding:strippingTagsSeparatedByString:",
-       "_contextAuxiliary",
-       "_contextByfeContext:",
-       "_contextMenuEvent",
-       "_contextMenuImpl",
-       "_contextMenuTarget",
-       "_contextMenuTargetForEvent:",
-       "_continueAfterNavigationPolicy:",
-       "_continueAfterNewWindowPolicy:",
-       "_continueAfterWillSubmitForm:",
-       "_continueFragmentScrollAfterNavigationPolicy:formState:",
-       "_continueLoadRequestAfterNavigationPolicy:formState:",
-       "_continueLoadRequestAfterNewWindowPolicy:frameName:formState:",
-       "_continueModalOperationPastPrintPanel",
-       "_continueModalOperationToTheEnd:",
-       "_continueMovementTracking",
-       "_continueRunWithStartTime:duration:",
-       "_continuousCheckingAllowed",
-       "_controlAppearanceChangesOnKeyStateChange",
-       "_controlColor",
-       "_controlMenuKnownAbsent:",
-       "_controlSizeForScrollers",
-       "_controlTintChanged:",
-       "_controlView:textView:doCommandBySelector:",
-       "_controllerEditor:didCommit:contextInfo:",
-       "_controllerForNode:createControllers:",
-       "_controllerKeys",
-       "_controllerNodeForObjectAtIndexPath:createControllers:error:",
-       "_convert:row:point:cacheHint:",
-       "_convert:toValueClassUsing:",
-       "_convertCharacters:length:toGlyphs:",
-       "_convertPersistentItem:",
-       "_convertPoint:fromAncestor:",
-       "_convertPoint:toAncestor:",
-       "_convertPointFromSuperview:test:",
-       "_convertPointToSuperview:",
-       "_convertRect:fromAncestor:",
-       "_convertRect:toAncestor:",
-       "_convertRectFromSuperview:test:",
-       "_convertRectToSuperview:",
-       "_convertStringToData:",
-       "_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:",
-       "_copyValueOfDescriptorType:toBuffer:ofLength:",
-       "_coreCursorType",
-       "_cornerViewFrame",
-       "_cornerViewHidesWithVerticalScroller",
-       "_count",
-       "_countBindings",
-       "_countDisplayedDescendantsOfItem:",
-       "_countDueToReceiver:",
-       "_countOfValuesInContainer:withKey:",
-       "_counterImpl",
-       "_counterWithImpl:",
-       "_counterpart",
-       "_crackPoint:",
-       "_crackRect:",
-       "_crackSize:",
-       "_crayonMaskImage",
-       "_crayonRowAboveRow:",
-       "_crayonRowBelowRow:",
-       "_crayonWithColor:",
-       "_crayons",
-       "_createATSUTextLayoutForRun:style:",
-       "_createAlert",
-       "_createAndShowProgressPanelIfAppropriate:",
-       "_createArrayWithObjectsAtIndexes:",
-       "_createAttributeDescriptionForNode:",
-       "_createAuxData",
-       "_createBackingStore",
-       "_createCGColorWithAlpha:",
-       "_createCachedImage:",
-       "_createCachesAndOptimizeState",
-       "_createCells",
-       "_createClipIndicatorIfNecessary",
-       "_createColumn:empty:",
-       "_createDefaultCollectionRep",
-       "_createDefaultOrUnflattenPageFormatIfNecessary",
-       "_createDefaultOrUnflattenPrintSettingsIfNecessary",
-       "_createDockMenu:",
-       "_createElementContent:",
-       "_createEllipsisRunWithStringRange:attributes:",
-       "_createFSRefForPath:",
-       "_createFileDatabase",
-       "_createFileIfNecessary",
-       "_createFloatStorage",
-       "_createFontPanelRepFromCollection:removingHidden:",
-       "_createFontPanelSizeRep",
-       "_createFrameNamed:inParent:allowsScrolling:",
-       "_createImage:::",
-       "_createImageForLockFocusUseIfNecessary",
-       "_createItem:",
-       "_createItemFromItemIdentifier:",
-       "_createItemTreeWithTargetFrame:clippedAtTarget:",
-       "_createKeyValueBindingForKey:name:bindingType:",
-       "_createLRUList:",
-       "_createMenuMapLock",
-       "_createMovieController",
-       "_createMungledDictionary:",
-       "_createMutableArrayValueGetterWithContainerClassID:key:",
-       "_createMutableSetValueGetterWithContainerClassID:key:",
-       "_createMutableSetValueWithSelector:",
-       "_createMutationMethodsOnObject:forKey:",
-       "_createNewNodePreviewHelper",
-       "_createNonExecutableFilterWithKernelFile:filterDescription:",
-       "_createNonNilMutableArrayValueWithSelector:",
-       "_createOtherValueGetterWithContainerClassID:key:",
-       "_createOtherValueSetterWithContainerClassID:key:",
-       "_createPDFImageRep",
-       "_createPageCacheForItem:",
-       "_createPattern",
-       "_createPatternFromRect:",
-       "_createPrefix",
-       "_createProfileFor:",
-       "_createRangeWithNode:",
-       "_createRawData",
-       "_createRelationshipDescriptionForNode:",
-       "_createScrollViewAndWindow",
-       "_createSelectedRowEntriesArrayIncludingExpandable:includingUnexpandable:withCurrentExpandState:",
-       "_createStatusItemControlInWindow:",
-       "_createStatusItemWindow",
-       "_createSubfields",
-       "_createSurface",
-       "_createTemporaryFolderOnVolume:orHiddenInFolder:andReturnRef:",
-       "_createTemporaryMOIDsForObjects:",
-       "_createTextView",
-       "_createTimer",
-       "_createTimer:",
-       "_createValueGetterWithContainerClassID:key:",
-       "_createValuePrimitiveGetterWithContainerClassID:key:",
-       "_createValuePrimitiveSetterWithContainerClassID:key:",
-       "_createValueSetterWithContainerClassID:key:",
-       "_createWakeupPort",
-       "_createWindowOpaqueShape",
-       "_createWindowsMenuEntryWithTitle:enabled:",
-       "_createdDate",
-       "_creteCachedImageLockIfNeeded",
-       "_crunchyRawUnbonedPanel",
-       "_ctTypesetter",
-       "_currentAttachmentIndex",
-       "_currentAttachmentRect",
-       "_currentBackForwardListItemToResetTo",
-       "_currentBranchImage",
-       "_currentClient",
-       "_currentDeadKeyChar",
-       "_currentFileModificationDate",
-       "_currentFont",
-       "_currentInputFilepath",
-       "_currentListLevel",
-       "_currentListNumber",
-       "_currentLocalMousePoint",
-       "_currentPath",
-       "_currentPoint",
-       "_currentSuiteName",
-       "_cursorRectCursor",
-       "_cursorRectForColumn:",
-       "_customMetrics",
-       "_customTitleCell",
-       "_customTitleFrame",
-       "_customizationPaletteSheetWindow",
-       "_customizesAlwaysOnClickAndDrag",
-       "_cycleDrawers:",
-       "_cycleDrawersBackwards:",
-       "_cycleDrawersReversed:",
-       "_cycleUtilityWindowsReversed:",
-       "_cycleWindows:",
-       "_cycleWindowsBackwards:",
-       "_cycleWindowsReversed:",
-       "_dListElementImpl",
-       "_darkBlueColor",
-       "_darkGrayRGBColor",
-       "_dashboardBehavior:",
-       "_dataForURLComponentType:",
-       "_dataForkReferenceNumber",
-       "_dataFromBase64String:",
-       "_dataIfDoneBufferingData:",
-       "_dataSource",
-       "_dataSourceChild:ofItem:",
-       "_dataSourceIsItemExpandable:",
-       "_dataSourceNumberOfChildrenOfItem:",
-       "_dataSourceRespondsToSortDescriptorsDidChange",
-       "_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",
-       "_decodeArrayOfObjectsForKey:",
-       "_decodeByte",
-       "_decodeDepth",
-       "_decodeDownloadData:",
-       "_decodeDownloadData:dataForkData:resourceForkData:",
-       "_decodeDownloadHeaderData:dataForkData:resourceForkData:",
-       "_decodePropertyListForKey:",
-       "_decodeWithoutNameWithCoder:newStyle:",
-       "_decrementInUseCounter",
-       "_decrementLine:",
-       "_decrementPage:",
-       "_decrementSelectedSubfield",
-       "_deepCollectEntitiesInArray:entity:",
-       "_defaultButtonPaused",
-       "_defaultDocIcon",
-       "_defaultFacesForFamily:",
-       "_defaultFontSet",
-       "_defaultGlyphForChar:",
-       "_defaultHandler",
-       "_defaultItemIdentifiers",
-       "_defaultKnobColor",
-       "_defaultLineHeight:",
-       "_defaultLineHeightForUILayout",
-       "_defaultMessageAttributes",
-       "_defaultNewFolderName",
-       "_defaultObjectClass",
-       "_defaultObjectClassName",
-       "_defaultProgressIndicatorColor",
-       "_defaultScriptingComponent",
-       "_defaultSecondaryColor",
-       "_defaultSelectedKnobColor",
-       "_defaultSelectionColor",
-       "_defaultSortDescriptorPrototypeKey",
-       "_defaultTitlebarTitleRect",
-       "_defaultType:",
-       "_defaultValueForAttribute:range:",
-       "_defaultWritingDirection",
-       "_deferredAdjustMovie",
-       "_deferredWindowChanged",
-       "_defersCallbacksChanged",
-       "_delayedDeactiveWindowlessWell:",
-       "_delayedEnableRevealoverComputationAfterScrollWheel:",
-       "_delayedFreeRowEntryFreeList",
-       "_delayedUpdateSwatch:",
-       "_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",
-       "_deleteFileAsnyc",
-       "_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:",
-       "_descriptorByTranslatingDate:ofType:inSuite:",
-       "_descriptorByTranslatingDictionary:ofType:inSuite:",
-       "_descriptorByTranslatingNull:ofType:inSuite:",
-       "_descriptorByTranslatingNumber:ofType:inSuite:",
-       "_descriptorByTranslatingString:ofType:inSuite:",
-       "_descriptorByTranslatingTextStorage:ofType:inSuite:",
-       "_descriptorWithNumber:",
-       "_deselectAllAndEndEditingIfNecessary:",
-       "_deselectAllExcept::andDraw:",
-       "_deselectColumn:",
-       "_deselectRowRange:",
-       "_desiredKeyEquivalent",
-       "_desiredKeyEquivalentModifierMask",
-       "_desiredTextAreaSize",
-       "_destinationEntityForToOne:",
-       "_destinationFloatValueForScroller:",
-       "_destroyAllPluginsInPendingPageCaches",
-       "_destroyFloatStorage",
-       "_destroyRealWindow",
-       "_destroyRealWindow:",
-       "_destroyRealWindowForAllDrawers",
-       "_destroyRealWindowIfNeeded",
-       "_destroyStream",
-       "_destroyStreamWithReason:",
-       "_destroyTSMDocument:",
-       "_destroyTimer",
-       "_destroyWakeupPort",
-       "_detachChildren",
-       "_detachFromParent",
-       "_detachFromParentWindow",
-       "_detachSheetWindow",
-       "_detatchNextAndPreviousForAllSubviews",
-       "_detatchNextAndPreviousForView:",
-       "_detectTrackingMenuChangeWithScreenPoint:",
-       "_determineDropCandidateForDragInfo:",
-       "_deviceClosePath",
-       "_deviceCurveToPoint:controlPoint1:controlPoint2:",
-       "_deviceLineToPoint:",
-       "_deviceMoveToPoint:",
-       "_dictionary",
-       "_dictionaryByTranslatingAERecord:toType:inSuite:",
-       "_dictionaryForSavedConfiguration",
-       "_dictionaryForSerialNumber:remove:clear:",
-       "_didAccessValueForKey:",
-       "_didCancelAuthenticationChallenge:",
-       "_didChangeBackForwardKeys",
-       "_didChangeValue:forRelationship:named:withInverse:",
-       "_didChangeValueForKey:",
-       "_didChangeValuesForArrangedKeys:objectKeys:indexPathKeys:",
-       "_didCloseFile:",
-       "_didCommitLoadForFrame:",
-       "_didCreateFile",
-       "_didDeleteFile",
-       "_didEndSheet:returnCode:contextInfo:",
-       "_didFailLoadWithError:forFrame:",
-       "_didFailProvisionalLoadWithError:forFrame:",
-       "_didFailWithError:",
-       "_didFinishLoadForFrame:",
-       "_didFinishLoading",
-       "_didFinishReturnCachedResponse:",
-       "_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",
-       "_directoryListElementImpl",
-       "_dirtyRect",
-       "_dirtyRectUncoveredFromOldDocFrame:byNewDocFrame:",
-       "_dirtyRegion",
-       "_disableAutosavingAndColumnResizingNotificationsAndMark:",
-       "_disableChangeNotifications",
-       "_disableChangeSync",
-       "_disableCompositing",
-       "_disableEnablingKeyEquivalentForDefaultButtonCell",
-       "_disableLayout",
-       "_disableMovedPosting",
-       "_disablePosting",
-       "_disableResizedPosting",
-       "_disableSecurity:",
-       "_disableSelectionPosting",
-       "_disableToolTipCreationAndDisplay",
-       "_disableTrackingRect:",
-       "_disabledTrackingInNeighborhoodOfMouse",
-       "_discardCursorRectsForView:",
-       "_discardEditing",
-       "_discardEditingForAllBinders",
-       "_discardEditingOfView:",
-       "_discardEventsFromSubthread:",
-       "_discardEventsWithMask:eventTime:",
-       "_discardMarkedText",
-       "_discardTrackingRect:",
-       "_discardTrackingRects:count:",
-       "_discardValidateAndCommitValue:",
-       "_diskCacheClear",
-       "_diskCacheCreateDirectory",
-       "_diskCacheCreateLRUList:",
-       "_diskCacheDefaultPath",
-       "_diskCacheExecuteRemoval:",
-       "_diskCacheExecuteWrite:",
-       "_diskCacheGet:",
-       "_diskCacheScheduleRemoval:",
-       "_diskCacheScheduleWrite:",
-       "_diskCacheSetSyncTimer",
-       "_diskCacheSync:",
-       "_diskCacheSyncLoop:",
-       "_diskCacheTruncate:",
-       "_dismissModeless:",
-       "_dismissSheet:",
-       "_dispatchCallBack:flags:error:",
-       "_dispatchCallBackWithError:",
-       "_displayAllDrawersIfNeeded",
-       "_displayChanged",
-       "_displayDelayedMenu",
-       "_displayIfNeeded",
-       "_displayName",
-       "_displayName:",
-       "_displayProfileChanged",
-       "_displayProfileChanged:",
-       "_displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:",
-       "_displaySomeWindowsIfNeeded:",
-       "_displayTemporaryToolTipForView:withDisplayDelegate:displayInfo:",
-       "_displayTemporaryToolTipForView:withString:",
-       "_displayToolTipIfNecessaryIgnoringTime:",
-       "_displayWidth",
-       "_displayedLabel",
-       "_displayedLabelForRect:",
-       "_dispose:",
-       "_disposeBackingStore",
-       "_disposeMovieController",
-       "_disposeObjects:",
-       "_disposeSurface",
-       "_distForGlyphLocation:",
-       "_distanceForVerticalArrowKeyMovement",
-       "_distanceFromBaseToTopOfWindow",
-       "_distanceFromToolbarBaseToTitlebar",
-       "_distanceInDragDirectionBeforeDragAttempt",
-       "_distanceInNonDragDirectionBeforeAbortingDragAttempt",
-       "_distributeAvailableSpaceIfNecessary:toFlexibleSizedItems:lastItemIsRightAligned:",
-       "_divElementImpl",
-       "_doActualViewPrinting",
-       "_doAnimation",
-       "_doAnimationStep",
-       "_doAnimationStepWithProgress:",
-       "_doAttachDrawer",
-       "_doAttachDrawerIgnoreHidden:",
-       "_doAutoscroll:",
-       "_doAutoscrolling",
-       "_doAutoselectEdge",
-       "_doBidiProcessing",
-       "_doCallback",
-       "_doChangeDirectoryForUserDrillIntoNode:",
-       "_doClickAndQueueSendingOfAction:",
-       "_doClickAndQueueSendingOfAction:removeAndAddColumnsIfNecessary:",
-       "_doCloseDrawer",
-       "_doCommandBySelector:forInputManager:",
-       "_doDelayedAutocomplete",
-       "_doDelayedValidateVisibleToolbarItems",
-       "_doDeleteInReceiver:",
-       "_doDetachDrawer",
-       "_doEditOperation:",
-       "_doFinalAnimationStep",
-       "_doFindIndexesOfNodes:inDirectory:visitedNodes:",
-       "_doHide",
-       "_doImageDragUsingRows:event:pasteboard:source:slideBack:",
-       "_doImageDragUsingRowsWithIndexes:event:pasteboard:source:slideBack:",
-       "_doInvokeServiceIn:msg:pb:userData:error:unhide:",
-       "_doLayoutTabs:",
-       "_doLayoutWithFullContainerStartingAtGlyphIndex:nextGlyphIndex:",
-       "_doModalLoop:peek:",
-       "_doModifySelectionWithEvent:onColumn:",
-       "_doNameCheck:",
-       "_doOpenDrawer",
-       "_doOpenFile:ok:tryTemp:",
-       "_doOpenFiles:",
-       "_doOpenUntitled",
-       "_doOptimizedLayoutStartingAtGlyphIndex:forSoftLayoutHole:inTextContainer:lineLimit:nextGlyphIndex:",
-       "_doOrderWindow:relativeTo:findKey:forCounter:force:isModal:",
-       "_doPageArea:finishPage:helpedBy:pageLabel:",
-       "_doPopupSearchString",
-       "_doPositionDrawer",
-       "_doPositionDrawerAndSize:parentFrame:",
-       "_doPositionDrawerAndSize:parentFrame:stashSize:",
-       "_doPostColumnConfigurationDidChangeNotification:",
-       "_doPostedModalLoopMsg:",
-       "_doPreSaveAssignmentsForRequest:",
-       "_doPrintFiles:withSettings:showPrintPanels:",
-       "_doRemoveDrawer",
-       "_doRemoveFromSuperviewWithOutNeedingDisplay:",
-       "_doResetOfCursorRects:revealovers:",
-       "_doResizeDrawerWithDelta:fromFrame:",
-       "_doRotationOnly",
-       "_doRunLoop",
-       "_doScroller:",
-       "_doScroller:hitPart:multiplier:",
-       "_doSelectIndexes:byExtendingSelection:indexType:funnelThroughSingleIndexVersion:",
-       "_doSetAccessoryView:topView:bottomView:oldView:",
-       "_doSetAccessoryView:topView:bottomView:previousKeyView:oldView:",
-       "_doSetParentWindow:",
-       "_doSingleStep:inView:",
-       "_doSlideDrawerWithDelta:",
-       "_doSomeBackgroundLayout",
-       "_doStartDrawer",
-       "_doStopDrawer",
-       "_doSynchronizationOfEditedFieldForColumnWidthChange",
-       "_doTypeSelectNodeInDirectory:withSearchString:visitedNodes:expandedNodesToVisit:recursively:",
-       "_doUnhideWithoutActivation",
-       "_doUpdate:",
-       "_doUpdateFromSnapshot:deltas:",
-       "_doUserComplete",
-       "_doUserExpandOrCollapseOfItem:isExpand:optionKeyWasDown:",
-       "_doUserParagraphStyleLineHeightMultiple:min:max:lineSpacing:paragraphSpacingBefore:after:isFinal:",
-       "_doUserPathWithOp:inContext:",
-       "_doUserRemoveMarkerFormatInRange:",
-       "_doUserSetAttributes:removeAttributes:",
-       "_doUserSetListMarkerFormat:options:",
-       "_doUserSetListMarkerFormat:options:inRange:level:",
-       "_docController:shouldTerminate:",
-       "_dockDied",
-       "_dockRestarted",
-       "_document:didPrint:forScriptCommand:",
-       "_document:didPrint:inContext:",
-       "_document:didSave:contextInfo:",
-       "_document:didSave:forScriptCommand:",
-       "_document:pageLayoutDidReturn:contextInfo:",
-       "_document:shouldClose:contextInfo:",
-       "_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",
-       "_donePoofing",
-       "_dontCountTowardsOriginLoadLimit",
-       "_dosetTitle:andDefeatWrap:",
-       "_doubleClickAtIndex:limitedRangeOK:",
-       "_downloadAssessment",
-       "_downloadAssessmentWithInitialData:",
-       "_downloadEnded",
-       "_downloadFinished",
-       "_downloadStarted",
-       "_downloadURL:",
-       "_downloadURL:toDirectory:",
-       "_downloadWithLoadingConnection:request:response:delegate:proxy:",
-       "_downloadWithRequest:delegate:directory:",
-       "_dragCanBeginFromHorizontalMouseMotion",
-       "_dragCanBeginFromSomeMouseMotion",
-       "_dragCanBeginFromVerticalMouseMotion",
-       "_dragDataItemViewer",
-       "_dragEndedNotification:",
-       "_dragFile:fromRect:slideBack:event:showAsModified:",
-       "_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:inRect:",
-       "_drawBorderInRect:",
-       "_drawCellAt::insideOnly:",
-       "_drawCenteredVerticallyInRect:",
-       "_drawClockAndCalendarWithFrame:inView:",
-       "_drawColumn:",
-       "_drawColumnHeaderRange:",
-       "_drawContents:faceColor:textColor:inView:",
-       "_drawContentsAtRow:column:clipRect:",
-       "_drawContinuousCapacityWithFrame:inView:",
-       "_drawCustomTrackWithTrackRect:inView:",
-       "_drawDelegate",
-       "_drawDiscreteCapacityWithFrame:inView:",
-       "_drawDone:success:",
-       "_drawDropHighlight",
-       "_drawDropHighlightBetweenUpperRow:andLowerRow:atOffset:",
-       "_drawDropHighlightOffScreenIndicatorPointingLeftAtOffset:",
-       "_drawDropHighlightOffScreenIndicatorPointingUp:atOffset:",
-       "_drawDropHighlightOnRow:",
-       "_drawEmptyColumnsForView:inRect:",
-       "_drawEndCapInRect:",
-       "_drawFocusRingWithFrame:",
-       "_drawFooterInRect:",
-       "_drawForTransitionInWindow:usingHalftonePhaseForWindowOfSize:",
-       "_drawFrame",
-       "_drawFrame:",
-       "_drawFrameInterior:clip:",
-       "_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:",
-       "_drawKeyboardFocusRingWithFrame:forCell:",
-       "_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:",
-       "_drawMatrix",
-       "_drawMenuFrame:",
-       "_drawMiniWindow:",
-       "_drawOptimizedRectFills",
-       "_drawOrientedLabel:inRect:",
-       "_drawOutlineCell:withFrame:inView:",
-       "_drawOverflowHeaderInRect:",
-       "_drawProgressArea",
-       "_drawRatingWithFrame:inView:",
-       "_drawRealTitleWithFrame:inView:",
-       "_drawRect:clip:",
-       "_drawRect:liveResizeCacheCoveredArea:",
-       "_drawRect:liveResizeFill::::cacheCoveredArea:",
-       "_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:",
-       "_drawThemeComboBoxButtonWithFrame:inView:",
-       "_drawThemeContents:highlighted:inView:",
-       "_drawThemePopUpBorderWithFrame:inView:bordered:style:",
-       "_drawThemeProgressArea:",
-       "_drawThemeTab:withState:inRect:",
-       "_drawTickMarksWithFrame:inView:",
-       "_drawTitleBar:",
-       "_drawTitleStringIn:withColor:",
-       "_drawTitlebar:",
-       "_drawTitledFrame:",
-       "_drawTitlesForView:inRect:",
-       "_drawToolbarTransitionIfNecessary",
-       "_drawUnifiedToolbar:",
-       "_drawUnifiedToolbarBackgroundInRect:withState:",
-       "_drawView:",
-       "_drawViewBackgroundInRect:",
-       "_drawWindowsGaugeRects:",
-       "_drawWithImageCache",
-       "_drawerTakeFocus",
-       "_drawerVelocity",
-       "_drawerWindow",
-       "_drawingEndSeparator",
-       "_drawingInRevealover",
-       "_drawingRectForPart:",
-       "_drawnByAncestor",
-       "_drawsBackground",
-       "_drawsHorizontalGrid",
-       "_drawsNothing",
-       "_drawsOutsideBBox",
-       "_drawsOwnDescendants",
-       "_drawsVerticalGrid",
-       "_drawsWithTintWhenHidden",
-       "_dropNode:",
-       "_dstDraggingExitedAtPoint:draggingInfo:stillInViewBounds:",
-       "_dumpSetRepresentation:",
-       "_dynamicColorsChanged:",
-       "_dynamicToolTipManager",
-       "_dynamicToolTipManagerClass",
-       "_dynamicToolTipManagerInstances",
-       "_dynamicToolTipsEnabled",
-       "_edge",
-       "_edges",
-       "_editableBinderForTableColumn:",
-       "_editableStateWithMode:",
-       "_editedDocumentCount",
-       "_editingDelegateForwarder",
-       "_editingFirstResponderIfIsASubview",
-       "_editingInView:",
-       "_editor:didChangeEditingState:bindingAdaptor:",
-       "_effect",
-       "_effectiveFocusRingType",
-       "_elementAtWindowPoint:",
-       "_elementAttributeRelationship",
-       "_elementFromTidyDoc:element:",
-       "_elementImpl",
-       "_elementIsBlockLevel:",
-       "_elementWithImpl:",
-       "_embedElementImpl",
-       "_emptyContents",
-       "_emptyStyle",
-       "_enableAutosavingAndColumnResizingNotifications",
-       "_enableChangeNotifications",
-       "_enableChangeSync",
-       "_enableCompositing",
-       "_enableEnablingKeyEquivalentForDefaultButtonCell",
-       "_enableItems",
-       "_enableLayout",
-       "_enableLogging:",
-       "_enableMatrixLiveResizeImageCacheing",
-       "_enableMovedPosting",
-       "_enablePosting",
-       "_enableResizedPosting",
-       "_enableSecurity:",
-       "_enableSelectionPostingAndPost",
-       "_enableToolTipCreationAndDisplay",
-       "_enableTrackingRect:",
-       "_enabledStateWithMode:",
-       "_enablesOnWindowChangedKeyState",
-       "_enclosingBrowser",
-       "_enclosingBrowserView",
-       "_enclosingSidebarItem",
-       "_enclosingSidebarView",
-       "_encodeArrayOfObjects:forKey:",
-       "_encodeByte:",
-       "_encodeDepth:",
-       "_encodeMapTable:forTypes:withCoder:",
-       "_encodePropertyList:forKey:",
-       "_encodeWithoutNameWithCoder:newStyle:",
-       "_encounteredCloseError",
-       "_endChanging",
-       "_endColumnAnimationOptimization",
-       "_endCustomizationMode",
-       "_endCustomizationPalette:",
-       "_endCustomizationPanel",
-       "_endDragging",
-       "_endDrawForDragging",
-       "_endDrawView:",
-       "_endEditingIfEditedCellIsChildOfItemEntry:",
-       "_endEditingIfFirstResponderIsASubview",
-       "_endEditingIfNecessaryWhenDeselectingColumnRange:",
-       "_endEditingIfNecessaryWhenDeselectingRowRange:",
-       "_endEditingIfNecessaryWhenSelectingColumnRange:byExtendingSelection:",
-       "_endEditingIfNecessaryWhenSelectingRowRange:byExtendingSelection:",
-       "_endInsertionOptimization",
-       "_endInsertionOptimizationWithDragSource:force:",
-       "_endListeningForApplicationStatusChanges",
-       "_endListeningForDeviceStatusChanges",
-       "_endListeningForPowerStatusChanges",
-       "_endListeningForSessionStatusChanges",
-       "_endLiveResize",
-       "_endLiveResizeAsTopLevel",
-       "_endLiveResizeForAllDrawers",
-       "_endMyEditing",
-       "_endMyEditingAndRemainFirstResponder",
-       "_endOfParagraphAtIndex:",
-       "_endScrolling",
-       "_endTabWidth",
-       "_endToolbarEditingMode",
-       "_endTopLevelGroupings",
-       "_enqueueEndOfEventNotification",
-       "_ensureAndLockPreferredLanguageLock",
-       "_ensureCapacity:",
-       "_ensureLayoutCompleteToEndOfCharacterRange:",
-       "_ensureLocalizationDictionaryIsLoaded",
-       "_ensureMetadataLoaded",
-       "_ensureMinAndMaxSizesConsistentWithBounds",
-       "_ensureObjectsAreMutable",
-       "_ensureRangeCapacity:",
-       "_ensureSelectionAfterRemoveWithPreferredIndex:sendObserverNotifications:",
-       "_ensureSubviewNextKeyViewsAreSubviews",
-       "_enterElement:tag:display:",
-       "_enterLibXML2ElementNode:tag:",
-       "_entity",
-       "_entityClass",
-       "_entityDescriptionForObjectID:",
-       "_entityForCurrentRow",
-       "_entityForExternalName:inConfigurationNamed:",
-       "_entityForName:",
-       "_entityID",
-       "_entityImpl",
-       "_entryForPath:",
-       "_entryForSpecifier:",
-       "_enumeratedArgumentBindings:",
-       "_enumeratedBindings:storage:number:numberFirstBinding:maxNumber:",
-       "_enumeratedDisplayPatternTitleBindings:",
-       "_enumeratedEditableBindings:",
-       "_enumeratedEnabledBindings:",
-       "_enumeratedHiddenBindings:",
-       "_enumeratedPredicateBindings:",
-       "_enumerationBinding",
-       "_enumeratorDescriptionsFromImplDeclarations:presoDeclarations:",
-       "_equalyResizeColumnsByDelta:resizeInfo:",
-       "_errorAlert:wasPresentedWithResult:inContext:",
-       "_errorWasPresentedWithRecovery:inContext:",
-       "_errorWithCode:",
-       "_escapeCharacters:amount:inString:appendingToString:",
-       "_escapeHTMLAttributeCharacters:withQuote:appendingToString:",
-       "_escapedStringForString:escapeQuotes:",
-       "_evaluateRelativeToObjectInContainer:",
-       "_evaluateToBeginningOrEndOfContainer:",
-       "_evaluationErrorNumber",
-       "_eventImpl",
-       "_eventInTitlebar:",
-       "_eventRecordDelta:",
-       "_eventRef",
-       "_eventRelativeToWindow:",
-       "_eventWithImpl:",
-       "_evilHackToClearlastLeftHitInWindow",
-       "_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:",
-       "_expandRep:",
-       "_expandSelectionToGranularity:",
-       "_expandedNodesForObservedNode:",
-       "_expirationDate",
-       "_expirationForResponse:",
-       "_expiresDate",
-       "_explicitlyCannotAdd",
-       "_explicitlyCannotAddChild",
-       "_explicitlyCannotInsert",
-       "_explicitlyCannotInsertChild",
-       "_explicitlyCannotRemove",
-       "_exposeBinding:valueClass:",
-       "_exposedBindings",
-       "_expressionWithSubstitutionVariables:",
-       "_extendCharacterToGlyphMapToInclude:",
-       "_extendGlyphToWidthMapToInclude:font:",
-       "_extendNextScrollRelativeToCurrentPosition",
-       "_extendUnicodeCharacterToGlyphMapToInclude:",
-       "_extendedCharRangeForInvalidation:editedCharRange:",
-       "_extendedGlyphRangeForRange:maxGlyphIndex:drawingToScreen:",
-       "_extensionsFromTypeInfo:",
-       "_extraWidthForCellHeight:",
-       "_faceForFamily:fontName:",
-       "_familyName",
-       "_fastCStringContents:",
-       "_fastCharacterContents",
-       "_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",
-       "_fileListModeControlCell",
-       "_fileLocator",
-       "_fileModificationDate",
-       "_fileModificationDateForURL:",
-       "_fileNameExtensionsForType:forUseInSavePanel:",
-       "_fileOperation:source:destination:files:",
-       "_fileOperationCompleted:",
-       "_filePathValue",
-       "_fileURLValue",
-       "_fileWrapperForURL:",
-       "_fileWrapperRepresentation",
-       "_filenameForCollection:",
-       "_filenameHasAcceptableFileType:",
-       "_filenameHasNonEmptyAcceptableFileType:",
-       "_fillBackground:withAlternateColor:",
-       "_fillGlyphHoleAtIndex:desiredNumberOfCharacters:",
-       "_fillGrayRect:with:",
-       "_fillInBlock:forElement:backgroundColor:extraMargin:extraPadding:",
-       "_fillLayoutHoleAtIndex:desiredNumberOfLines:",
-       "_fillSpellCheckerPopupButton:",
-       "_fillerRectHeight",
-       "_fillsClipViewHeight",
-       "_fillsClipViewWidth",
-       "_filterList",
-       "_filterNodeList:",
-       "_filterObjects:",
-       "_filterRestrictsInsertion",
-       "_filteredAndSortedChildrenOfNode:",
-       "_finalProgressComplete",
-       "_finalScrollingOffsetFromEdge",
-       "_finalize",
-       "_finalizeStatement",
-       "_findButtonImageForState:",
-       "_findCoercerFromClass:toClass:",
-       "_findColorListNamed:forDeviceType:",
-       "_findCurrentEditor",
-       "_findDictOrBitmapSetNamed:",
-       "_findDragTargetFrom:",
-       "_findFirstItemInArray:withItemIdentifier:",
-       "_findFirstKeyViewInDirection:forKeyLoopGroupingView:",
-       "_findFirstOne::",
-       "_findFirstUserSelectableRowStartingAtRow:stoppingAtRow:byExtendingSelection:",
-       "_findFirstValidKeyViewStartingFrom:inTabViewItem:",
-       "_findFrameInThisWindowNamed:",
-       "_findFrameNamed:",
-       "_findHitItemViewer:",
-       "_findIndexOfFirstDuplicateItemWithItemIdentier:",
-       "_findItemViewerAtPoint:",
-       "_findKeyLoopGroupingViewFollowingKeyLoopGroupingView:direction:",
-       "_findLastViewInKeyViewLoop",
-       "_findLastViewInKeyViewLoopStartingAtView:",
-       "_findMisspelledWordInString:language:learnedDictionaries:wordCount:countOnly:",
-       "_findParentWithLevel:beginingAtItem:childEncountered:",
-       "_findPreviousNextTab:loop:startingAtTabItem:",
-       "_findScrollerToAutoLiveScrollInWindow:",
-       "_findSystemImageNamed:",
-       "_findWindowUsingCache:",
-       "_findWindowUsingRealWindowNumber:",
-       "_finishAutosavingWithSuccess:",
-       "_finishDownloadDecoding",
-       "_finishHitTracking:",
-       "_finishInitialization",
-       "_finishMessagingClients:",
-       "_finishModalOperation",
-       "_finishPrintFilter:filter:",
-       "_finishPrintingDocumentsInContext:success:",
-       "_finishSaveDocumentTo:withType:forSaveOperation:withDelegate:didSaveSelector:contextInfo:",
-       "_finishWritingFileAtPath:byMovingFileAtPath:",
-       "_finishWritingFileNamed:inFolder:byExchangingWithFileInFolder:",
-       "_finishedLoading",
-       "_finishedLoadingResourceFromDataSource:",
-       "_finishedMakingConnections",
-       "_finishedWiringNibConnections",
-       "_fireFirstAndSecondLevelFaultsForObject:withContext:",
-       "_firstHighlightedCell",
-       "_firstMoveableItemIndex",
-       "_firstPassGlyphRangeForBoundingRect:inTextContainer:hintGlyphRange:okToFillHoles:",
-       "_firstPassGlyphRangeForBoundingRect:inTextContainer:okToFillHoles:",
-       "_firstPresentableName",
-       "_firstResponderIsControl",
-       "_firstSelectableRowInMatrix:inColumn:",
-       "_firstTextViewChanged",
-       "_fixCommandAlphaShifts",
-       "_fixGlyphInfo:inRange:",
-       "_fixHeaderAndCornerViews",
-       "_fixJoiningOfSelectedAtoms",
-       "_fixKeyViewForView:",
-       "_fixSelectionAfterChangeInCharacterRange:changeInLength:",
-       "_fixSharedData",
-       "_fixTargetsForMenu:",
-       "_fixedSelectionRangeForRange:affinity:",
-       "_fixedSelectionRangesForRanges:affinity:",
-       "_fixup:numElements:",
-       "_fixupKeyboardLoop",
-       "_fixupSortDescriptorPlaceholdersIfNecessary",
-       "_flattenMenu:",
-       "_flattenMenuItem:",
-       "_floatWidthForRun:style:widths:fonts:glyphs:startPosition:numGlyphs:",
-       "_flushAEDesc",
-       "_flushAllCachedChildren",
-       "_flushCachedCarbonPrintersByName",
-       "_flushCachedChildrenForNode:",
-       "_flushCachedObjects",
-       "_flushNotificationQueue",
-       "_focusDidChange:",
-       "_focusFromView:withContext:",
-       "_focusInto:withClip:",
-       "_focusOnCache:",
-       "_focusRingCGColor",
-       "_focusRingFrameForFrame:cellFrame:",
-       "_focusRingRect",
-       "_focusRingVisibleRect",
-       "_focusedCrayon",
-       "_fondID",
-       "_fontAttributesFromFontPasteboard",
-       "_fontDescriptor",
-       "_fontDescriptorForFontPanel",
-       "_fontElementImpl",
-       "_fontFaceRuleImpl",
-       "_fontFallbackType",
-       "_fontForName:size:",
-       "_fontFromBindingsWithMode:referenceFont:fallbackFont:",
-       "_fontFromDescriptor:",
-       "_fontNameForFamily:face:",
-       "_fontNameForFont:",
-       "_fontSetChanged:",
-       "_fontSetWithName:",
-       "_fontWithNumber:size:bold:italic:",
-       "_footerHeight",
-       "_forKey:getType:andSuite:",
-       "_forSRSpeechObject:objectForProperty:usingDataSize:withRequestedObjectClass:",
-       "_forSRSpeechObject:setObject:forProperty:usingDataSize:",
-       "_forceAppendItem:",
-       "_forceCharIndexesAllocation",
-       "_forceDisplayToBeCorrectForViewsWithUnlaidGlyphs",
-       "_forceFixAttributes",
-       "_forceFlushWindowToScreen",
-       "_forceInsertItem:atIndex:",
-       "_forceMoveItemFromIndex:toIndex:",
-       "_forceOriginalFontBaseline",
-       "_forceRedrawDragInsertionIndicator",
-       "_forceRemoveItemFromIndex:",
-       "_forceReplaceItemAtIndex:withItem:",
-       "_forceResetTexturedWindowDragMargins",
-       "_forceSendAction:notification:firstResponder:",
-       "_forceSendDoubleActionForPreviewCell",
-       "_forceSetColor:",
-       "_forceSetLastEditedStringValue:",
-       "_forceSetView:",
-       "_forceUpdateDimpleLocation",
-       "_forceUpdateFocusRing",
-       "_forgetData:",
-       "_forgetObject:propagateToObjectStore:",
-       "_forgetSpellingFromMenu:",
-       "_forgetWord:inDictionary:",
-       "_formDelegate",
-       "_formElementImpl",
-       "_formElementWithImpl:",
-       "_formatCocoaErrorString:parameters:applicableFormatters:count:",
-       "_formatObjectValue:invalid:",
-       "_fragmentData",
-       "_fragmentImpl",
-       "_frame",
-       "_frameDuration",
-       "_frameDurationAt:",
-       "_frameElementImpl",
-       "_frameForCurrentSelection",
-       "_frameForDataSource:fromFrame:",
-       "_frameForView:",
-       "_frameForView:fromFrame:",
-       "_frameLoadDelegateForwarder",
-       "_frameOfColumns",
-       "_frameOfOutlineCellAtRow:",
-       "_frameOrBoundsChanged",
-       "_frameSetElementImpl",
-       "_frameViewAtWindowPoint:",
-       "_freeCache:",
-       "_freeClients",
-       "_freeImage",
-       "_freeNode:",
-       "_freeNodes",
-       "_freeRepresentation:",
-       "_freeServicesMenu:",
-       "_freeSpeechItems",
-       "_freshnessLifetime",
-       "_fromContainerInfo:andKeyCode:getAdjustedContainerInfo:andKey:",
-       "_fromRecord:getContainerInfo:",
-       "_fromRecord:getContainerInfo:andKey:",
-       "_fromScreenCommonCode:",
-       "_fsRefValue",
-       "_fullDescription:",
-       "_fullLayout",
-       "_fullPathForService:",
-       "_gatherFocusStateInto:upTo:withContext:",
-       "_gaugeImage:",
-       "_gc:",
-       "_generateCompositedBackground",
-       "_generateErrorDetailForKey:withValue:",
-       "_generateErrorWithCode:andMessage:forKey:andValue:additionalDetail:",
-       "_generateFrameName",
-       "_generateHTML",
-       "_generateIDWithSuperEntity:nextID:",
-       "_generateInverseRelationshipsAndMore",
-       "_generateMetalBackground",
-       "_generateModel:",
-       "_generatePSCodeHelpedBy:operation:",
-       "_generateProperties",
-       "_generateScaledBackground",
-       "_generatedMIMETypeForURLScheme:",
-       "_genericDragCursor",
-       "_genericMutableSetValueForKey:",
-       "_genericValueForKey:withIndex:flags:",
-       "_getAETEElementClassDescriptions:exceptThoseWithKeys:andSupers:",
-       "_getATSTypesetterGuts",
-       "_getArguments:withParameters:",
-       "_getAuxData",
-       "_getBlockStart:end:contentsEnd:forRange:stopAtLineSeparators:",
-       "_getBracketedStringFromBuffer:string:",
-       "_getBrowser:browserColumn:",
-       "_getBucketForSeekingToPoint:",
-       "_getBucketForSeekingToRow:",
-       "_getBucketLocationForBucket:",
-       "_getButtonImageParts:::",
-       "_getBytesAsData:maxLength:usedLength:encoding:options:range:remainingRange:",
-       "_getCGCustomColorSpace",
-       "_getCGImageRefCreateIfNecessary",
-       "_getCacheWindow:andRect:forRep:",
-       "_getCharactersAsStringInRange:",
-       "_getColorFromImageAtPoint:",
-       "_getColumn:row:cell:cellFrame:toolTipRect:wantsToolTip:wantsRevealover:atPoint:",
-       "_getCommonTypeFor:",
-       "_getConvertedDataFromPasteboard:",
-       "_getCursorBitmapWidth:andHeight:",
-       "_getData:encoding:",
-       "_getDirtyRects:clippedToRect:count:boundingBox:",
-       "_getDisplayDelay:inQuickMode:forView:",
-       "_getDisplayDelegateFadesOutWhenInactive:",
-       "_getDocInfoForKey:",
-       "_getDocument",
-       "_getDrawingRow:andCol:",
-       "_getExternalData:",
-       "_getFSRefForPath:",
-       "_getFloat:forNode:property:",
-       "_getFocusRingFrame",
-       "_getFullyFormedCellAtColumn:row:",
-       "_getGaugeFrame",
-       "_getGlobalWindowNumber:andRect:forRepresentation:",
-       "_getGlyphIndex:forWindowPoint:pinnedPoint:anchorPoint:useAnchorPoint:preferredTextView:partialFraction:",
-       "_getGlyphIndex:forWindowPoint:pinnedPoint:preferredTextView:partialFraction:",
-       "_getGlyphIndexForLocationInWindow:roundToClosest:fraction:layoutManager:textStorage:",
-       "_getITypeFor:",
-       "_getImageAndHotSpotFromCoreCursor",
-       "_getInsertionGlyphIndexForDrag:",
-       "_getInstanceForIdentifier:",
-       "_getKernelFolderCPath",
-       "_getKeys:forPropertyDescriptionKind:",
-       "_getLocalPoint:",
-       "_getLocalizedLabels:andLocalizedValues:",
-       "_getMatchingRow:forString:inMatrix:startingAtRow:prefixMatch:caseSensitive:",
-       "_getNewTemporaryId",
-       "_getNextResizeEventInvalidatingLiveResizeCacheIfNecessary:",
-       "_getNodeForKey:inTable:",
-       "_getPageHeaderRect:pageFooterRect:forBorderSize:",
-       "_getPartStruct:numberOfParts:withInnerBounds:",
-       "_getPosition:",
-       "_getPositionFromServer",
-       "_getProgressFrame",
-       "_getReceiversSpecifierOrUnnamedArgument:fromEvent:usingDescription:",
-       "_getRemainderFrame",
-       "_getRemainingNominalParagraphRange:andParagraphSeparatorRange:charactarIndex:layoutManager:string:",
-       "_getRidOfCacheAndMarkYourselfAsDirty",
-       "_getRow:andCol:ofCell:atRect:",
-       "_getRow:column:nearPoint:",
-       "_getRowHeaderFixedContentRect:rowHeaderScrollableContentVisibleRect:",
-       "_getSelectorForType:",
-       "_getSymbolForType:",
-       "_getTextAreaFrame:stepperCellFrame:forDatePickerCellFrame:",
-       "_getTextColor:backgroundColor:",
-       "_getTiffImage:ownedBy:",
-       "_getTiffImage:ownedBy:asImageRep:",
-       "_getUUID",
-       "_getUndoManager:",
-       "_getVRefNumForPath:",
-       "_getVisibleRowRange:columnRange:",
-       "_getWindowCache:add:",
-       "_giveUpFirstResponder:",
-       "_globalIDChanged:",
-       "_globalIDForObject:",
-       "_globalIDsForObjects:",
-       "_glyph",
-       "_glyphAdvancementCache:",
-       "_glyphAdvancementCache:renderingMode:",
-       "_glyphForFont:baseString:",
-       "_glyphIndexForCharacterIndex:startOfRange:okToFillHoles:",
-       "_glyphRangeForBoundingRect:inTextContainer:fast:okToFillHoles:",
-       "_glyphRangeForCharacterRange:actualCharacterRange:okToFillHoles:",
-       "_goBack",
-       "_goForward",
-       "_goToHistoryState:",
-       "_goToItem:withLoadType:",
-       "_goneMultiThreaded",
-       "_gradientImage",
-       "_graphiteAlternatingRowColor",
-       "_graphiteControlTintColor",
-       "_graphiteKeyboardFocusColor",
-       "_gray204Color",
-       "_gray221Color",
-       "_grestore",
-       "_growBoxOwner",
-       "_growBoxRect",
-       "_growCachedRectArrayToSize:",
-       "_growContentReshapeContentAndToolbarView:animate:",
-       "_growFrameForDropGapStyle",
-       "_growFrameForDropGapStyleIfNecessary",
-       "_growWindowReshapeContentAndToolbarView:animate:",
-       "_gsave",
-       "_guaranteeStorageInDictionary:addBinding:",
-       "_guess:",
-       "_guessesForMisspelledSelection",
-       "_handleAEOpen:",
-       "_handleAEOpenContentsEvent:replyEvent:",
-       "_handleAEOpenDocuments:",
-       "_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:",
-       "_handleChildChanged:",
-       "_handleChildRemoved:",
-       "_handleChildrenChanged:",
-       "_handleCommand:",
-       "_handleCompletionsForPartialWordRange:indexOfSelectedItem:inTextView:",
-       "_handleContentBoundsChanged",
-       "_handleCoreEvent:withReplyEvent:",
-       "_handleCurrentBrowsingNodePathChanged",
-       "_handleCurrentDirectoryChanged:",
-       "_handleCurrentDirectoryNodeChanged",
-       "_handleCursorUpdate:",
-       "_handleDefaultVoiceChange",
-       "_handleDisabledNodeClicked:",
-       "_handleDocumentFileChanges:",
-       "_handleError:delta:fromRect:toPoint:",
-       "_handleError:withError:",
-       "_handleFauxDisabledNodeClicked:",
-       "_handleFileListConfirmedSelection:",
-       "_handleFileListDidReloadChildrenForNode:",
-       "_handleFileListModeChanged",
-       "_handleFileListModeChanged:",
-       "_handleFileListSelectionChanged:",
-       "_handleFocusToolbarHotKey:",
-       "_handleFrameChangeForSubview:",
-       "_handleGotoFinishedWithResult:",
-       "_handleKeyEquivalent:",
-       "_handleMessage:from:socket:",
-       "_handleMouseUpWithEvent:",
-       "_handleNameFieldContentsChanged",
-       "_handleObservingRefresh",
-       "_handlePhonemeCallbackWithOpcode:",
-       "_handleQueryStateChange:",
-       "_handleRecognitionBeginningWithRecognitionResult:",
-       "_handleRecognitionDoneWithRecognitionResult:",
-       "_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",
-       "_hasActiveControls",
-       "_hasActiveRequest",
-       "_hasAttributedStringValue",
-       "_hasBackgroundColor",
-       "_hasBezelBorder",
-       "_hasCredentials",
-       "_hasCursorRects",
-       "_hasCursorRectsForView:",
-       "_hasCustomVisibilityPriority",
-       "_hasDefaultButtonIndicator",
-       "_hasEditableCell",
-       "_hasExpirationDate",
-       "_hasFocusRing",
-       "_hasFocusRingInView:",
-       "_hasGradientBackground",
-       "_hasHorizontalOrientation",
-       "_hasIconForIconURL:",
-       "_hasImage",
-       "_hasImageCache",
-       "_hasKeyAppearance",
-       "_hasKeyFocus",
-       "_hasKeyboardFocus",
-       "_hasKeyboardFocusInTabItem:",
-       "_hasMainAppearance",
-       "_hasMetalSheetEffect",
-       "_hasNonNominalDescriptor",
-       "_hasObservers",
-       "_hasOverrideForSelector:",
-       "_hasPendingChanges",
-       "_hasQuestionMarkOnlyQueryString",
-       "_hasRetainedStoreResources",
-       "_hasRowHeaderColumn",
-       "_hasScaledBackground",
-       "_hasSeenRightToLeft",
-       "_hasSelection",
-       "_hasSelectionOrInsertionPoint",
-       "_hasSeparateArrows",
-       "_hasSheetFactor:",
-       "_hasTabs",
-       "_hasTitle",
-       "_hasToolbar",
-       "_hasWindowRef",
-       "_hasWindowRefCreatedForCarbonControl",
-       "_hash",
-       "_hashMarkDictionary",
-       "_hashMarkDictionaryForDocView:measurementUnitToBoundsConversionFactor:stepUpCycle:stepDownCycle:minimumHashSpacing:minimumLabelSpacing:",
-       "_hashMarkDictionaryForDocumentView:measurementUnitName:",
-       "_headElementImpl",
-       "_headerCellRectOfColumn:",
-       "_headerCellSizeOfColumn:",
-       "_headerHeight",
-       "_headerSizeOfColumn:",
-       "_headingElementImpl",
-       "_heartBeatBufferWindow",
-       "_heartBeatThread:",
-       "_heedBeginningOfPage:",
-       "_heedBeginningOfPage:outOf:",
-       "_heightIsFlexible",
-       "_helpBundleForObject:",
-       "_helpKeyForObject:",
-       "_helperDeallocatedForView:layoutManager:",
-       "_hiddenExtension",
-       "_hiddenOnLaunch",
-       "_hiddenStateWithMode:",
-       "_hiddenWindows",
-       "_hide",
-       "_hide:",
-       "_hideAllDrawers",
-       "_hideChildren",
-       "_hideLanguagePopUp",
-       "_hideMDPartsIfNecessary",
-       "_hideMenu:",
-       "_hideQueryProgress",
-       "_hideSheet:",
-       "_hideToolbar:animate:",
-       "_hideToolbarWithAnimation:",
-       "_hideWithoutResizingWindowHint",
-       "_highlightCell:atRow:column:andDraw:",
-       "_highlightColor",
-       "_highlightColorDependsOnWindowState",
-       "_highlightColorForCell:",
-       "_highlightColumn:clipRect:",
-       "_highlightOutlineCell:highlight:withFrame:inView:",
-       "_highlightRow:clipRect:",
-       "_highlightTextColor",
-       "_highlightedNodes",
-       "_hiliteWindow:fromWindow:",
-       "_hintedGetBucketIndex:bucketFirstRowIndex:containingRowIndex:",
-       "_historyControlCell",
-       "_hitTest:dragTypes:",
-       "_hitTestCellContentAtColumn:row:point:",
-       "_hitTestContentAtPoint:inRect:ofView:",
-       "_horizontalKeyboardScrollDistance",
-       "_horizontalPageScrollDistance",
-       "_horizontalScroller",
-       "_horizontalScrollerClass",
-       "_horizontalScrollerSeparationHeight",
-       "_hostData",
-       "_hostString",
-       "_hoverAreaIsSameAsLast:",
-       "_htmlDocumentClass",
-       "_htmlFromTidyNode:tidyDoc:appendingToString:",
-       "_iconForCarbonIcon:size:",
-       "_iconForFileURL:withSize:",
-       "_iconForOSType:",
-       "_iconForOSType:creator:",
-       "_iconFromDictionary:forSize:cache:",
-       "_iconLoaderReceivedPageIcon:",
-       "_iconRef",
-       "_iconsBySplittingRepresentationsOfIcon:",
-       "_iconsForIconURLString:",
-       "_idleMovies",
-       "_ignoreForKeyViewLoop",
-       "_ignoreSpellingFromMenu:",
-       "_ignoringChangeNotifications",
-       "_ignoringScrolling",
-       "_image",
-       "_imageElementImpl",
-       "_imageElementWithImageResource:",
-       "_imageExistsAtPaths:",
-       "_imageForColorPicker:",
-       "_imageForDrawingInRectOfSize:fromImage:",
-       "_imageForMenu",
-       "_imageFromItemTitle:",
-       "_imageFromNewResourceLocation:",
-       "_imageNamed:",
-       "_imageNumber",
-       "_imageRectWithRect:",
-       "_imageRepClassForFileNameExtension:andHFSFileType:",
-       "_imageRepWithData:hfsFileType:extension:",
-       "_imageRepsWithData:fileType:hfsType:",
-       "_imageRepsWithData:hfsFileType:extension:",
-       "_imageSizeWithSize:",
-       "_imagesFromIcon:inApp:zone:",
-       "_imagesFromURL:forImage:fileType:extension:",
-       "_imagesHaveAlpha",
-       "_imagesWithData:hfsFileType:extension:zone:",
-       "_imagesWithData:zone:",
-       "_immediateChildFrameNamed:",
-       "_immediateScrollToPoint:",
-       "_imp",
-       "_impactsWindowMoving",
-       "_impl",
-       "_implicitObservationInfo",
-       "_implicitObservationInfoForEntity:forResultingClass:",
-       "_importRuleImpl",
-       "_inAutoCompleteTyping",
-       "_inFavMode",
-       "_inHideCollectionsMode",
-       "_inHideFaceMode",
-       "_inLiveResize",
-       "_inMiniMode",
-       "_inPreview",
-       "_inQuickDisplayModeForWindow:",
-       "_inResize:",
-       "_inTSMPreProcess",
-       "_inTexturedWindow",
-       "_includeObject:intoPropertyWithKey:",
-       "_incrementBy:startingAtIndex:",
-       "_incrementInUseCounter",
-       "_incrementLine:",
-       "_incrementPage:",
-       "_incrementProgressForConnectionDelegate:data:",
-       "_incrementProgressForConnectionDelegate:response:",
-       "_incrementSelectedSubfield",
-       "_incrementUndoTransactionID",
-       "_indexAtIndex:",
-       "_indexClosestToIndex:equalAllowed:following:",
-       "_indexForRed:green:blue:",
-       "_indexOfColonInName",
-       "_indexOfColonInString:",
-       "_indexOfFirstGlyphInTextContainer:okToFillHoles:",
-       "_indexOfItemWithPartialTitle:",
-       "_indexOfKey:",
-       "_indexOfNode:inOrderedNodes:",
-       "_indexOfPopupItemForLanguage:",
-       "_indexOfRangeAfterOrContainingIndex:",
-       "_indexOfRangeBeforeOrContainingIndex:",
-       "_indexOfRangeContainingIndex:",
-       "_indexOfSubfieldAtPoint:inFrame:",
-       "_indexPath",
-       "_indicatorImage",
-       "_indicatorImageForCellHeight:",
-       "_infoForOSAError:",
-       "_infoForPage:",
-       "_informationForFont:glyphTable:positionTable:",
-       "_init",
-       "_init:",
-       "_init::::",
-       "_initContent:styleMask:backing:defer:contentView:",
-       "_initContent:styleMask:backing:defer:counterpart:",
-       "_initContentView",
-       "_initData",
-       "_initDefaultNamespaces",
-       "_initEmptyHTMLNames",
-       "_initFlippableViewCacheLock",
-       "_initFromAbsolutePositionRecord:",
-       "_initFromGlobalWindow:inRect:styleMask:",
-       "_initFromRangeRecord:",
-       "_initFromRecord:",
-       "_initFromTestRecord:",
-       "_initInStatusBar:withLength:withPriority:",
-       "_initInfoDictionary",
-       "_initJobVars",
-       "_initLocks",
-       "_initPanelCommon",
-       "_initRemoteWithSignature:",
-       "_initSaveMode",
-       "_initServicesMenu:",
-       "_initSidebarAndPopups",
-       "_initSingleAttributes",
-       "_initUI",
-       "_initValueTransformers",
-       "_initWithAbstractViewImpl:",
-       "_initWithAddressInfo:",
-       "_initWithArray:",
-       "_initWithAttributesNoCopy:pageFormatNoCopy:orFlattenedData:printSettingsNoCopy:orFlattenedData:",
-       "_initWithBitmapImageRep:",
-       "_initWithBytesOfUnknownEncoding:length:copy:usedEncoding:",
-       "_initWithCGColorSpaceNoCache:",
-       "_initWithCGSEvent:",
-       "_initWithCGSEvent:eventRef:",
-       "_initWithCIImage:",
-       "_initWithCSSStyleSheetImpl:",
-       "_initWithCachedResponse:originalURL:",
-       "_initWithClassDescription:synonymDescription:",
-       "_initWithCollectionImpl:",
-       "_initWithContentSize:preferredEdge:",
-       "_initWithContentsOfFile:error:",
-       "_initWithCounterImpl:",
-       "_initWithDOMImplementationImpl:",
-       "_initWithDOMRange:",
-       "_initWithDOMStyleSheetImpl:",
-       "_initWithData:bytesPerRow:size:format:params:",
-       "_initWithData:error:",
-       "_initWithData:fileType:hfsType:",
-       "_initWithData:tiff:imageNumber:",
-       "_initWithDataOfUnknownEncoding:",
-       "_initWithDictionary:",
-       "_initWithEntities:",
-       "_initWithEntity:withID:withHandler:withContext:",
-       "_initWithEventImpl:",
-       "_initWithFileSpecifierOrStandardizedPath:",
-       "_initWithGraph:mutable:",
-       "_initWithGraphicsPort:flipped:",
-       "_initWithIconRef:includeThumbnail:",
-       "_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:property:options:context:",
-       "_initWithOptionsCollectionImpl:",
-       "_initWithOutput:",
-       "_initWithParagraphStyle:",
-       "_initWithParentObjectStore:",
-       "_initWithPath:bundle:",
-       "_initWithPickers:",
-       "_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:",
-       "_initWithTreeWalkerImpl:filter:",
-       "_initWithValueImpl:",
-       "_initWithWindow:",
-       "_initWithWindowNumber:",
-       "_initWithWindowNumber:scaleFactor:",
-       "_initWithfeImage:",
-       "_initWithfeKernel:",
-       "_initWithfeSampler:",
-       "_initialize:::",
-       "_initializeATSUStyle",
-       "_initializeArchiverMappings",
-       "_initializeButtonCell",
-       "_initializeFromKeychain",
-       "_initializePredefinedEntities",
-       "_initializeRegisteredDefaults",
-       "_initializeResumeInformation:",
-       "_initializeScriptDOMNodeImp",
-       "_initializeWithObjectImp:root:",
-       "_inputClientChangedStatus:inputClient:",
-       "_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:",
-       "_insertObjectWithGlobalID:globalID:",
-       "_insertRange:inArrayAtIndex:",
-       "_insertStatusItemWindow:withPriority:",
-       "_insertText:forInputManager:",
-       "_insertText:selectInsertedText:",
-       "_insertablePasteboardTypes",
-       "_insertionGapForItemViewer:forDraggingSource:",
-       "_insertionGlyphIndexForDrag:",
-       "_insertionIndexPathAppendChildIndex:",
-       "_insertionOrder",
-       "_insertionPointDisabled",
-       "_insetRect:",
-       "_insideAnotherHTMLView",
-       "_installActionButtonIfNecessary",
-       "_installAutoreleasePoolsOnCurrentThreadIfNecessary",
-       "_installCarbonAppDockHandlers",
-       "_installCarbonWindowEventHandlers",
-       "_installHeartBeat:",
-       "_installLabel",
-       "_installOpenRecentMenuOpeningEventHandler:",
-       "_installOpenRecentsMenu",
-       "_installRulerAccViewForParagraphStyle:ruler:enabled:",
-       "_installWindowDepthHandler",
-       "_intValue",
-       "_integerValueForKey:",
-       "_interceptEditingKeyEvent:",
-       "_internalChildFrames",
-       "_internalIndicesOfObjectsByEvaluatingWithContainer:count:",
-       "_internalInit",
-       "_internalLoadDelegate",
-       "_internalNetService",
-       "_internalXMLStringWithOptions:appendingToString:",
-       "_invalidLabelSize",
-       "_invalidNavNodePopUpLabelAction",
-       "_invalidate",
-       "_invalidateAllRevealovers",
-       "_invalidateAllRevealoversForView:",
-       "_invalidateBlinkTimer:",
-       "_invalidateCachedRect",
-       "_invalidateCompositedBackground",
-       "_invalidateConnectionsAsNecessary:",
-       "_invalidateCursorRectsForView:force:",
-       "_invalidateDictionary:newTime:",
-       "_invalidateDisplayForChangeOfSelectionFromRange:toRange:",
-       "_invalidateDisplayForMarkedOrSelectedRange",
-       "_invalidateDisplayIfNeeded",
-       "_invalidateFocus",
-       "_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",
-       "_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:mode:raisesForNotApplicableKeys:",
-       "_invokeSelector:withArguments:onKeyPath:ofObjectAtIndex:",
-       "_invokeSelector:withArguments:onKeyPath:ofObjectAtIndexPath:",
-       "_invokeSingleSelector:withArguments:onKeyPath:",
-       "_isAXConnector",
-       "_isAbsolute",
-       "_isAcceptableDragSource:types:dragInfo:",
-       "_isActivated",
-       "_isAllowedFileType:",
-       "_isAncestorOfViewIdenticalTo:",
-       "_isAnimating",
-       "_isAnimatingDefaultCell",
-       "_isAnimatingScroll",
-       "_isAnyBindingInMaskBound:",
-       "_isAnyFontBindingBoundToController:",
-       "_isAutoCreated",
-       "_isAutoPlay",
-       "_isBeingEdited",
-       "_isBindingEstablished:",
-       "_isBooleanBinding:",
-       "_isBooleanTransformer",
-       "_isButtonBordered",
-       "_isCString",
-       "_isCached",
-       "_isCachedSeparately",
-       "_isCaseInsensitiveEqualToCString:",
-       "_isCaseSensitivePredicate:",
-       "_isClientRedirect",
-       "_isClosable",
-       "_isContinuousSpellCheckingEnabledForNewTextAreas",
-       "_isCtrlAltForHelpDesired",
-       "_isCurrentlyGapStyleDropTarget",
-       "_isDaylightSavingTimeForAbsoluteTime:",
-       "_isDeactPending",
-       "_isDeadkey",
-       "_isDefaultFace",
-       "_isDefaultFixedPitch",
-       "_isDeleted",
-       "_isDescendantOfFrame:",
-       "_isDingbats",
-       "_isDisplayingWebArchive",
-       "_isDocModal",
-       "_isDocWindow",
-       "_isDocumentHTML",
-       "_isDoingHide",
-       "_isDoingOpenFile",
-       "_isDoingUnhide",
-       "_isDraggable",
-       "_isDrawingForDragImage",
-       "_isDrawingMultiClippedContentAtIndex:",
-       "_isDrawingMultiClippedContentColumn:",
-       "_isDroppedConnectionException:",
-       "_isDying",
-       "_isEditable",
-       "_isEditing",
-       "_isEditingTextView:",
-       "_isEmptyMovie",
-       "_isEnabled",
-       "_isEqualToSortDescriptor:",
-       "_isEventProcessingDisabled",
-       "_isExpired",
-       "_isExplicitlyNonEditable",
-       "_isFSObjectExchangingAllowed",
-       "_isFSObjectExchangingAllowedOn:",
-       "_isFSObjectExchangingDesired",
-       "_isFakeFixedPitch",
-       "_isFault",
-       "_isFauxFilePackageNode:",
-       "_isFileClosed",
-       "_isFixedPitch",
-       "_isForPrivateBrowsing",
-       "_isFromSDEF",
-       "_isGapStyleDropTargetForRow:operation:mask:",
-       "_isGenericProfile",
-       "_isGrabber",
-       "_isHidden",
-       "_isHiragino",
-       "_isHiraginoFont",
-       "_isImageCache",
-       "_isInCustomizationMode",
-       "_isInUILayoutMode",
-       "_isIndexElementImpl",
-       "_isInheritedPropertyNamed:",
-       "_isInitialized",
-       "_isInserted",
-       "_isInternalFontName:",
-       "_isItemViewerMoveable:",
-       "_isKVOA",
-       "_isKeyPathBound:",
-       "_isKeyWindow",
-       "_isKeyWindowIgnoringFocus",
-       "_isLeafObject:",
-       "_isLoading",
-       "_isLoadingSDEFFiles",
-       "_isLocatedByURL:withCache:",
-       "_isLucidaGrande",
-       "_isMaintainingInverse",
-       "_isManagedController",
-       "_isManagedObjectOrEntityDescriptionContainerClassID:key:",
-       "_isMiniaturizable",
-       "_isModal",
-       "_isMoveDrag",
-       "_isMoving",
-       "_isNSColorDrag:",
-       "_isNSDocumentBased",
-       "_isNodeFileTypeEnabled:",
-       "_isNonactivatingPanel",
-       "_isNullExpression:",
-       "_isOnePieceTitleAndToolbar",
-       "_isOrdered",
-       "_isPaged",
-       "_isPaletteView",
-       "_isPendingDeletion",
-       "_isPendingInsertion",
-       "_isPendingUpdate",
-       "_isPerformingProgrammaticFocus",
-       "_isPoint:inDragZoneOfRow:",
-       "_isPostOrRedirectAfterPost:redirectResponse:",
-       "_isProfileBased",
-       "_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",
-       "_isTabEnabled",
-       "_isTableColumn:boundWithKeyPath:",
-       "_isTextured",
-       "_isThreadedAnimationLooping",
-       "_isTitleHidden",
-       "_isToolTipCreationAndDisplayEnabled",
-       "_isUnmarking",
-       "_isUpdated",
-       "_isUsedByCell",
-       "_isUsedForLocking",
-       "_isUserRemovable",
-       "_isUsingManagedProxy",
-       "_isUtility",
-       "_isUtilityWindow",
-       "_isValid",
-       "_isVertical",
-       "_isViewValidOriginalNextKeyView:",
-       "_item",
-       "_itemAdded:",
-       "_itemAtIndex:",
-       "_itemAtPosition:",
-       "_itemChanged",
-       "_itemChanged:",
-       "_itemChangedLabelOrPaletteLabel",
-       "_itemChangedToolTip",
-       "_itemEnabledStateChanged",
-       "_itemForRestoringDocState",
-       "_itemForSavingDocState",
-       "_itemIdentifierForModule:",
-       "_itemIdentifiersForColorPickers:",
-       "_itemInStatusBar:withLength:withPriority:",
-       "_itemLayoutChanged",
-       "_itemRemoved:",
-       "_itemType",
-       "_itemViewer",
-       "_itemViewerForDraggingInfo:draggingSource:",
-       "_itemVisibilityPriority",
-       "_items",
-       "_itemsFromItemViewers:",
-       "_itemsFromRowsWithIndexes:",
-       "_jobDispositionInPrintSession:printSettings:",
-       "_jobSavePathInPrintSession:printSettings:",
-       "_justOrderOut",
-       "_keepCacheWindow",
-       "_key",
-       "_key:inClass:indicatesMultipleValues:",
-       "_keyBindingManager",
-       "_keyCodeFromRecord:",
-       "_keyEquivalentForNode:",
-       "_keyEquivalentGlyphWidth",
-       "_keyEquivalentModifierMaskMatchesModifierFlags:",
-       "_keyEquivalentSizeWithFont:",
-       "_keyEquivalentsAreActive",
-       "_keyListForKeyNode:",
-       "_keyPathExpressionForString:",
-       "_keyRowOrSelectedRowOfMatrix:inColumn:",
-       "_keySegment",
-       "_keyValueBindingAccessPoints",
-       "_keyViewFollowingAccessoryView",
-       "_keyViewFollowingModalButtons",
-       "_keyViewFollowingOpacityViews",
-       "_keyViewFollowingPickerViews",
-       "_keyViewPrecedingAccesoryView",
-       "_keyViewPrecedingModalButtons",
-       "_keyViewPrecedingPickerViews",
-       "_keyViewRedirectionDisabled",
-       "_keyWindow",
-       "_keyWindowForHeartBeat",
-       "_keyboardDelayForPartialSearchString:",
-       "_keyboardIsOldNeXT",
-       "_keyboardLoopNeedsUpdating",
-       "_keyboardModifyRow:column:withEvent:",
-       "_keyboardNavigateDoSelectOfFocusItem:",
-       "_keyboardNavigateToTabAtIndex:",
-       "_keyboardNavigateToTabByDelta:",
-       "_keyboardUIActionForEvent:",
-       "_keychainItem",
-       "_keysForPropertyDescriptionKind:",
-       "_keysForValuesAffectingValueForKey:",
-       "_kitBundle",
-       "_kitNewObjectSetVersion:",
-       "_kitOldObjectSetVersion:",
-       "_kludgeScrollBarForColumn:",
-       "_knownEntityKeyForObject:",
-       "_knownEntityKeyForObjectID:",
-       "_knownPrimaryKeyForObject:",
-       "_knownPrimaryKeyForObjectID:",
-       "_knowsPagesFirst:last:",
-       "_labelCell",
-       "_labelCellWillDismissNotification:",
-       "_labelCellWillPopUpNotification:",
-       "_labelColor",
-       "_labelColorIndex",
-       "_labelElementImpl",
-       "_labelForColorPicker:",
-       "_labelOnlyShowsAsPopupMenu",
-       "_labelPatternColorForLabelIndex:",
-       "_labelRectForTabRect:forItem:",
-       "_labelType",
-       "_largestIconFromDictionary:",
-       "_lastCheckedRequest",
-       "_lastChild",
-       "_lastDragDestinationOperation",
-       "_lastDraggedEventFollowing:",
-       "_lastDraggedOrUpEventFollowing:",
-       "_lastDraggedOrUpEventFollowing:canceled:",
-       "_lastEventRecordTime",
-       "_lastItemIsNonSeparator",
-       "_lastKeyView",
-       "_lastLeftHit",
-       "_lastModifiedDate",
-       "_lastOnScreenContext",
-       "_lastRightHit",
-       "_lastSnapshot",
-       "_lastVisitedDate",
-       "_latin1MappingTable:",
-       "_latin1MappingTableWithPlatformFont:hasKernPair:",
-       "_launchService:andWait:",
-       "_launchSpellChecker:",
-       "_layoutDirtyItemViewersAndTileToolbar",
-       "_layoutEnabled",
-       "_layoutForData",
-       "_layoutGlyphsInLayoutManager:startingAtGlyphIndex:maxNumberOfLineFragments:currentTextContainer:proposedRect:nextGlyphIndex:",
-       "_layoutIsSameAsCachedLayoutWithFrame:",
-       "_layoutItemViewForWithItemHeight:allSidebarItemViews:",
-       "_layoutLineFragmentStartingWithGlyphAtIndex:characterIndex:atPoint:renderingContext:",
-       "_layoutOrderInsertionIndexForPoint:previousIndex:",
-       "_layoutRowStartingAtIndex:withFirstItemPosition:gridWidth:",
-       "_layoutTabs",
-       "_layoutViews:startingInsetFromXOrigin:insetFromTop:withSpacing:sizeToFit:horizontal:",
-       "_layoutViewsVerticallyAndResize",
-       "_lazyLoadQueryDictionariesFromSavedQuery",
-       "_leading",
-       "_learnOrForgetOrInvalidate:word:dictionary:language:ephemeral:",
-       "_learnSpellingFromMenu:",
-       "_learnWord:inDictionary:",
-       "_leftGroupRect",
-       "_leftmostInsertionIndexForNode:inOrderedNodes:",
-       "_leftmostInsertionIndexForNode:inOrderedNodes:withSortDescriptors:",
-       "_legalNameCheck:",
-       "_legendElementImpl",
-       "_lengthForSize:",
-       "_liElementImpl",
-       "_libxml2TreeRepresentation",
-       "_libxml2TreeRepresentationWithNamespaces:",
-       "_lightGrayRGBColor",
-       "_lightWeightRecursiveDisplayInRect:",
-       "_lightYellowColor",
-       "_lightweightHandleChildChanged:parents:property:",
-       "_lineBorderColor",
-       "_lineBreakMode",
-       "_lineColor",
-       "_lineFragmentRectForProposedRectArgs",
-       "_lineGlyphRange:type:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:isStrikethrough:",
-       "_linkDragCursor",
-       "_linkElementImpl",
-       "_listDefinitions",
-       "_listenForProxySettingChanges",
-       "_liveResizeCacheableBounds",
-       "_liveResizeCachedBounds",
-       "_liveResizeCachedImage",
-       "_liveResizeCachedImageIsValid",
-       "_liveResizeHighlightSelectionInClipRect:",
-       "_liveResizeImageCacheingEnabled",
-       "_liveResizeLOptimizationEnabled",
-       "_load",
-       "_loadAllPlaceholderItems",
-       "_loadAndRestoreCurrentBrowsingNodePath:selectedNodes:",
-       "_loadBundle",
-       "_loadColors",
-       "_loadData",
-       "_loadData:MIMEType:textEncodingName:baseURL:unreachableURL:",
-       "_loadDataSource:withLoadType:formState:",
-       "_loadDeadKeyData",
-       "_loadDefaultSetImageRep",
-       "_loadFontFiles",
-       "_loadFromDOMRange",
-       "_loadFromUDIfNecessary",
-       "_loadHTMLString:baseURL:unreachableURL:",
-       "_loadHistoryGuts:URL:error:",
-       "_loadIcon",
-       "_loadIconDictionaries",
-       "_loadIconlessMenuContentsIfNecessary",
-       "_loadImageFromTIFF:imageNumber:",
-       "_loadImageInfoFromTIFF:",
-       "_loadImageWithName:",
-       "_loadImagesForActionType",
-       "_loadInitialItemIdentifiers:requireImmediateLoad:",
-       "_loadItem:withLoadType:",
-       "_loadItemViewsForChildrenOfContainerNodes:existingViewsToKeepTable:",
-       "_loadKeyboardBindings",
-       "_loadMenuItemIconsIfNecessary",
-       "_loadNibDataFromPath:",
-       "_loadNibFile:nameTable:withZone:ownerBundle:",
-       "_loadOrSetMetadata",
-       "_loadPickerBundlesIn:expectLibraryLayout:",
-       "_loadRecentSearchList",
-       "_loadRequest:inFrameNamed:",
-       "_loadRequest:subresources:subframeArchives:",
-       "_loadRequest:triggeringAction:loadType:formState:",
-       "_loadScriptSuites",
-       "_loadServicesMenuData",
-       "_loadSuiteDescription:",
-       "_loadSuitesForAlreadyLoadedBundles",
-       "_loadSuitesForJustLoadedBundle:",
-       "_loadSuitesFromSDEFData:bundle:",
-       "_loadSystemScreenColorList",
-       "_loadType",
-       "_loadUIIfNecessary",
-       "_loadURL:intoChild:",
-       "_loadURL:referrer:loadType:target:triggeringEvent:form:formValues:",
-       "_loadUsingHTMLDisplay",
-       "_loadUsingLibXML2",
-       "_loadUsingWebKit",
-       "_loadViewIfNecessary",
-       "_loadWebKit",
-       "_loadXSLT",
-       "_loadedCellAtRow:column:inMatrix:",
-       "_loadingDragOperationForDraggingInfo:",
-       "_loadingFromPageCache",
-       "_localObjectForGlobalID:",
-       "_localizationPolicy",
-       "_localizedColorListCopyrightString",
-       "_localizedColorListName",
-       "_localizedErrorDescriptionForCode:",
-       "_localizedKeyFromBundleStringFileForKey:",
-       "_localizedNameForColorWithName:",
-       "_localizedPropertyNameForProperty:entity:",
-       "_localizedStringForKey:value:",
-       "_locationFromUnitsValue:",
-       "_locationOfColumn:",
-       "_locationOfOriginPoint:",
-       "_locationOfPoint:",
-       "_locationOfRow:",
-       "_locationTemporary",
-       "_locationsForApplications",
-       "_lockCachedImage",
-       "_lockFirstResponder",
-       "_lockFocusOnRep:",
-       "_lockForReading",
-       "_lockForWriting",
-       "_lockQuickDrawPort",
-       "_lockUnlockCachedImage:",
-       "_lockViewHierarchyForDrawing",
-       "_lockViewHierarchyForDrawingWithExceptionHandler:",
-       "_lockViewHierarchyForModification",
-       "_lockfeContext",
-       "_logColumnWidths:",
-       "_logError:fallbackMessage:relatedToBinding:",
-       "_logObservingInfo",
-       "_logicalTestFromDescriptor:",
-       "_longLongValue",
-       "_looksLikeDomainSegment",
-       "_loopHit:row:col:",
-       "_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",
-       "_makeDocumentViewForDataSource:",
-       "_makeDownCellKey",
-       "_makeEditable::::",
-       "_makeFirstResponderForKeyboardHotKeyEvent",
-       "_makeHODWindowsPerform:",
-       "_makeHistory",
-       "_makeKeyNode:inKeyNode:",
-       "_makeLeftCellKey",
-       "_makeLinkFromMenu:",
-       "_makeModalWindowsPerform:",
-       "_makeNewListFrom:",
-       "_makeNextCellKey",
-       "_makeNextCellOrViewKey",
-       "_makePreviousCellKey",
-       "_makePreviousCellOrViewKey",
-       "_makeRememberedOrNewEditingSubviewBecomeFirstResponder",
-       "_makeRepresentation",
-       "_makeRequestCanonicalByMakingRequestURLCanonical:",
-       "_makeRightCellKey",
-       "_makeRootNode",
-       "_makeSelfMutable",
-       "_makeSureFirstResponderIsNotInInvisibleItemViewer",
-       "_makeSureItemViewersInArray:areSubviews:from:to:",
-       "_makeTable:inNode:",
-       "_makeUpCellKey",
-       "_makingFirstResponderForMouseDown",
-       "_managedAttributeKeys",
-       "_managedObjectContext",
-       "_managedObjectsChangedInContext:",
-       "_managedProxy",
-       "_managesWindowRef",
-       "_mapElementImpl",
-       "_mapNode:toEntityInModel:",
-       "_mappedFile",
-       "_mappingForConfigurationNamed:",
-       "_marginHeight",
-       "_marginWidth",
-       "_markAutoCreated:",
-       "_markCursorRectsForRemovedView:",
-       "_markForPrivateBrowsing",
-       "_markHasLoadedData:",
-       "_markLiveResizeColumnLayoutInfo",
-       "_markMovementTrackingInfo",
-       "_markRememberedEditingFirstResponderIfIsASubview",
-       "_markSelectionIsChanging",
-       "_markSelfAsDirtyForBackgroundLayout:",
-       "_markUsedByCell",
-       "_markWidth",
-       "_markedWidthDiffersFromCurrentWidth",
-       "_markerAreaRect",
-       "_markerForItemNumber:isNumbered:",
-       "_markerHitTest:",
-       "_markerLevelForRange:",
-       "_markerTypeButton",
-       "_matchesCharacter:",
-       "_matrix",
-       "_matrixWillResignFirstResponder:",
-       "_maxAge",
-       "_maxRuleAreaRect",
-       "_maxTitlebarTitleRect",
-       "_maxWidth",
-       "_maxXBorderRect",
-       "_maxXResizeRect",
-       "_maxXTitlebarBorderThickness",
-       "_maxXTitlebarButtonsWidth",
-       "_maxXTitlebarDecorationMinWidth",
-       "_maxXTitlebarWidgetInset",
-       "_maxXTitlebarWidgetInset:",
-       "_maxXWindowBorderWidth",
-       "_maxXWindowBorderWidth:",
-       "_maxXmaxYResizeRect",
-       "_maxXminYResizeRect",
-       "_maxYBorderRect",
-       "_maxYTitlebarDragHeight",
-       "_maxYWindowBorderHeight",
-       "_maxYmaxXResizeRect",
-       "_maxYminXResizeRect",
-       "_maximumItemViewerHeight",
-       "_mayStartDragAtEventLocation:",
-       "_maybeScrollMenu",
-       "_maybeSubstitutePopUpButton",
-       "_mdAttributes",
-       "_mdAttributesInLastRunSavePanel",
-       "_mdAttributesToWriteToFile:ofType:saveOperation:",
-       "_mediaListImpl",
-       "_mediaListWithImpl:",
-       "_mediaRuleImpl",
-       "_memoryCacheAppendNodeToLRUList:",
-       "_memoryCacheClear",
-       "_memoryCacheGet:",
-       "_memoryCachePut:",
-       "_memoryCacheRemove:",
-       "_memoryCacheRemoveNodeFromLRUList:",
-       "_memoryCacheTouchNode:",
-       "_memoryCacheTruncate:",
-       "_menuBarShouldSpanScreen",
-       "_menuCellInitWithCoder:",
-       "_menuChanged",
-       "_menuDidSendAction:",
-       "_menuForElement:",
-       "_menuFormRepresentationChanged",
-       "_menuImpl",
-       "_menuItemDictionaries",
-       "_menuListElementImpl",
-       "_menuName",
-       "_menuPanelInitWithCoder:",
-       "_menuScrollAmount",
-       "_menuScrollingOffset",
-       "_menuWillSendAction:",
-       "_menusWithName:",
-       "_mergeAutoCompleteHints:",
-       "_mergeGlyphHoles",
-       "_mergeLayoutHoles",
-       "_mergeObjectWithChanges:array:",
-       "_mergeValueForKey:object:string:",
-       "_metaElementImpl",
-       "_methodNameForCommand:",
-       "_metrics",
-       "_middleViewFrameChanged:",
-       "_mightHaveSpellingAttributes",
-       "_migrateAllObjectsInStore:toStore:",
-       "_migrateMappedStore:toNewSameTypeStoreAtURL:",
-       "_migrateMetadataFromStore:toStore:",
-       "_migrateSQLStore:toSQLStoreAtURL:",
-       "_minContentRectSize",
-       "_minContentSizeForDrawers",
-       "_minExpandedFrameSize",
-       "_minLinesWidthWithSpace",
-       "_minNonExpandedFrameSize",
-       "_minParentWindowContentSize",
-       "_minSizeForDrawers",
-       "_minXBorderRect",
-       "_minXLocOfOutlineColumn",
-       "_minXResizeRect",
-       "_minXTitleOffset",
-       "_minXTitlebarBorderThickness",
-       "_minXTitlebarButtonsWidth",
-       "_minXTitlebarDecorationMinWidth",
-       "_minXTitlebarDecorationMinWidth:",
-       "_minXTitlebarWidgetInset",
-       "_minXTitlebarWidgetInset:",
-       "_minXWindowBorderWidth",
-       "_minXWindowBorderWidth:",
-       "_minXmaxYResizeRect",
-       "_minXminYResizeRect",
-       "_minYBorderRect",
-       "_minYResizeRect",
-       "_minYTitlebarButtonsOffset",
-       "_minYWindowBorderHeight",
-       "_minYWindowBorderHeight:",
-       "_minYmaxXResizeRect",
-       "_minYminXResizeRect",
-       "_miniaturizedOrCanBecomeMain",
-       "_minimizeAll",
-       "_minimizeOnDoubleClickChanged",
-       "_minimizeSucceeded:",
-       "_minimizeToDock",
-       "_minimumSizeNeedForTabItemLabel:",
-       "_modElementImpl",
-       "_modalSession:sendEvent:",
-       "_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::::::",
-       "_mouseUp:",
-       "_moveAndResizeEditedCellWithOldFrame:",
-       "_moveDown:",
-       "_moveDownAndModifySelection:",
-       "_moveDownWithEvent:",
-       "_moveGapAndMergeWithBlockRange:",
-       "_moveGapToBlockIndex:",
-       "_moveInDirection:",
-       "_moveItemFromIndex:toIndex:notifyDelegate:notifyView:notifyFamilyAndUpdateDefaults:",
-       "_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",
-       "_mutationEventImpl",
-       "_nameFieldContentsAsPosixName",
-       "_nameForCollection:",
-       "_nameIsEqualToNameOfNode:",
-       "_nameOfDictionaryForDocumentTag:",
-       "_nameWithLooseRequiredExtensionCheck:",
-       "_nameWithRequiredExtensionCheck:",
-       "_nameWithStrictRequiredExtensionCheck:",
-       "_namedNodeMapImpl",
-       "_namedNodeMapWithImpl:",
-       "_namespaceForURI:",
-       "_namespaces",
-       "_naughtDelegate",
-       "_navView",
-       "_nearestCrayonUnderViewPoint:",
-       "_nearestCrayonUnderViewPoint:inRow:",
-       "_needRedrawOnWindowChangedKeyState",
-       "_needToFlushGlyph",
-       "_needsDisplayfromColumn:",
-       "_needsDisplayfromRow:",
-       "_needsHighlightedTextHint",
-       "_needsLiveResizeCacheInSyncWithSiblingView",
-       "_needsLiveUpdates",
-       "_needsModalCompatibilityMode",
-       "_needsModeConfiguration",
-       "_needsOutline",
-       "_needsPopulate",
-       "_needsRecalc",
-       "_needsRedisplayWhenBeginningToolbarEditing",
-       "_needsRedrawBeforeFirstLiveResizeCache",
-       "_needsRedrawForMovement",
-       "_needsRedrawOnMouseInsideChange",
-       "_needsRevealoverWithFrame:trackingRect:inView:",
-       "_needsToRemoveFieldEditor",
-       "_needsToResetDragMargins",
-       "_needsToUseHeartBeatWindow",
-       "_needsViewerLayout",
-       "_nestListAtIndex:",
-       "_newAdapterForModel:",
-       "_newCustomizeToolbarItem",
-       "_newEntryWithUnavoidableSpecifier:path:url:isSymbolicLink:",
-       "_newFirstResponderAfterResigning",
-       "_newIconlessMenuItemForNavNode:",
-       "_newImageName:",
-       "_newItemFromDelegateWithItemIdentifier:willBeInsertedIntoToolbar:",
-       "_newItemFromInitPListWithItemIdentifier:",
-       "_newItemFromItemIdentifier:requireImmediateLoad:willBeInsertedIntoToolbar:",
-       "_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:",
-       "_newSubstringWithRange:zone:",
-       "_newUncommittedChangesForObject:",
-       "_newUncommittedChangesForObject:dictionary:",
-       "_newValueForColumnOfSQLType:atIndex:inStatement:",
-       "_newWildSubStringForGlob:wildStart:wildEnd:",
-       "_newWithName:fromPath:forDeviceType:",
-       "_new_implicitlyObservedKeys",
-       "_nextAttributeForString:type:location:range:",
-       "_nextDisplayMode",
-       "_nextFrame:",
-       "_nextFrameWithWrap:",
-       "_nextInputManagerInScript:",
-       "_nextSibling",
-       "_nibName",
-       "_noVerticalAutosizing",
-       "_nodeFilterImpl",
-       "_nodeFilterWithImpl:",
-       "_nodeFromLibXML2Node:",
-       "_nodeFromObject:objectIDMap:",
-       "_nodeImpl",
-       "_nodeIteratorImpl",
-       "_nodeIteratorWithImpl:filter:",
-       "_nodeListImpl",
-       "_nodeListWithImpl:",
-       "_nodeWithImpl:",
-       "_nodesToDisplayForNodeInfo:",
-       "_nominalCharacterCoverage",
-       "_nominalSizeNeedForTabItemLabel:",
-       "_nonAutomaticObservingKeys",
-       "_nonNilArrayValueWithSelector:",
-       "_nonNilMutableArrayValueWithSelector:",
-       "_nonNilSetValueWithSelector:",
-       "_nonPredicateValidateValue:forKey:inObject:error:",
-       "_noop:",
-       "_normalListmodeDown::::",
-       "_notationImpl",
-       "_noteAutosavedContentsOfDocument:",
-       "_noteDefaultMenuAttributeChanged",
-       "_noteFontCollectionsChanged",
-       "_noteItemUserVisibilityPriorityChanged:",
-       "_noteLengthAndSelectedRange:",
-       "_noteNote1:",
-       "_noteNote2:",
-       "_noteNote3:",
-       "_noteNote4:",
-       "_notePendingRecentDocumentURLs",
-       "_noteToolbarDisplayModeChanged",
-       "_noteToolbarDisplayModeChangedAndPostSyncSEL",
-       "_noteToolbarLayoutChanged",
-       "_noteToolbarModeChangedAndUpdateItemViewers:",
-       "_noteToolbarShowsBaselinePropertyChanged",
-       "_noteToolbarSizeModeChanged",
-       "_noteToolbarSizeModeChangedAndPostSyncSEL",
-       "_noticeEditablePeerBinder:",
-       "_noticeTextColorPeerBinder:",
-       "_notifyCookiesSynced",
-       "_notifyDelegate_DidRemoveItem:",
-       "_notifyDelegate_DidRemoveItems:",
-       "_notifyDelegate_WillAddItem:",
-       "_notifyEdited:range:changeInLength:invalidatedRange:",
-       "_notifyEditor:stateChanged:",
-       "_notifyFamily_DidRemoveItemAtIndex:",
-       "_notifyFamily_DidSetAllCurrentItems:",
-       "_notifyFamily_InsertedNewItem:atIndex:",
-       "_notifyFamily_MovedFromIndex:toIndex:",
-       "_notifyLocalCookiesChanged:",
-       "_notifyObserversForKeyPath:change:",
-       "_notifyObserversOfAddedStores:",
-       "_notifyObserversOfRemovedStores:",
-       "_notifyOfAnyContentChange",
-       "_notifyView_DidRemoveItemAtIndex:",
-       "_notifyView_DidSetAllCurrentItems:",
-       "_notifyView_InsertedNewItem:atIndex:",
-       "_notifyView_MovedFromIndex:toIndex:",
-       "_numPendingOrLoadingRequests:",
-       "_numberByTranslatingNumericDescriptor:toType:inSuite:",
-       "_numberEnumerator",
-       "_numberOfGlyphs",
-       "_numberOfItems",
-       "_numericIndicatorCell",
-       "_nxeventTime",
-       "_oListElementImpl",
-       "_obeysHiddenBit",
-       "_objcClassName",
-       "_objectCacheSize",
-       "_objectClassName",
-       "_objectDidTriggerAction:bindingAdaptor:",
-       "_objectElementImpl",
-       "_objectForAttributeKey:",
-       "_objectForProperty:usingDataSize:withRequestedObjectClass:",
-       "_objectID",
-       "_objectIDClass",
-       "_objectIDFactory",
-       "_objectIsMatch:",
-       "_objectSpecifierFromDescriptor:",
-       "_objectSpecifierTypeDescription",
-       "_objectTypeDescriptionForClassAppleEventCode:isValid:",
-       "_objectValue:forString:",
-       "_objectValue:forString:errorDescription:",
-       "_objectWithName:",
-       "_objectsChangedInStore:",
-       "_observeKeyPathForBindingInfo:registerOrUnregister:",
-       "_observeKeyPathForRelatedBinder:registerOrUnregister:",
-       "_observePathOfEntry:",
-       "_observeSpecifierOfEntry:",
-       "_observeValueForKeyPath:ofObject:context:",
-       "_observesModelObjects",
-       "_obtainKeyFocus",
-       "_obtainOpenChannel",
-       "_offset",
-       "_offsetFromStartRect",
-       "_okForOpenMode",
-       "_okForSaveMode",
-       "_okToStartTextEndEditing",
-       "_oldBoundsDuringLiveResize",
-       "_oldFirstResponderBeforeBecoming",
-       "_oldFontSetNames",
-       "_oldFontSetWithName:",
-       "_oldPlaceWindow:",
-       "_oldValueForKey:",
-       "_oldValueForKeyPath:",
-       "_old_encodeWithCoder_NSBrowser:",
-       "_old_encodeWithCoder_NSComboBoxCell:",
-       "_old_encodeWithCoder_NSTabView:",
-       "_old_encodeWithCoder_NSTabViewItem:",
-       "_old_encodeWithCoder_NSTableColumn:",
-       "_old_encodeWithCoder_NSTableHeaderView:",
-       "_old_encodeWithCoder_NSTableView:",
-       "_old_initWithCoder_NSBrowser:",
-       "_old_initWithCoder_NSColorWell:",
-       "_old_initWithCoder_NSComboBoxCell:",
-       "_old_initWithCoder_NSTabView:",
-       "_old_initWithCoder_NSTabViewItem:",
-       "_old_initWithCoder_NSTableColumn:",
-       "_old_initWithCoder_NSTableHeaderView:",
-       "_old_initWithCoder_NSTableView:",
-       "_old_readColorsFromGlobalPreferences",
-       "_old_writeColorsToGlobalPreferences",
-       "_opString",
-       "_opacity",
-       "_opacityAtPoint:inBitmapImageRep:",
-       "_opaqueRect",
-       "_opaqueState",
-       "_open:",
-       "_open:fromImage:withName:",
-       "_openBlocksForParagraphStyle:atIndex:inString:",
-       "_openChannel",
-       "_openCollections",
-       "_openDocumentFileAt:display:",
-       "_openDrawers",
-       "_openExtrasPopup:",
-       "_openFile:",
-       "_openFile:withApplication:asService:andWait:andDeactivate:",
-       "_openLinkFromMenu:",
-       "_openListsForParagraphStyle:atIndex:inString:",
-       "_openNewWindowWithRequest:",
-       "_openOldCollections",
-       "_openOldFavorites",
-       "_openRecentDocument:",
-       "_openRegularCollections",
-       "_openStrikeMenu:",
-       "_openUnderlineMenu:",
-       "_openUntitled",
-       "_openableFileExtensions",
-       "_opened",
-       "_operationInfo",
-       "_operatorForType:",
-       "_optGroupElementImpl",
-       "_optimizedRectFill:gray:",
-       "_optionElementImpl",
-       "_optionsCollectionImpl",
-       "_optionsCollectionWithImpl:",
-       "_optionsForBinding:specifyOnlyIfDifferentFromDefault:",
-       "_orderFrontHelpWindow",
-       "_orderFrontModalColorPanel",
-       "_orderFrontModalWindow:relativeToWindow:",
-       "_orderFrontRelativeToWindow:",
-       "_orderOutAllToolTipsImmediately:",
-       "_orderOutAndCalcKeyWithCounter:",
-       "_orderOutHelpWindow",
-       "_orderOutHelpWindowAfterEventMask:",
-       "_orderOutRelativeToWindow:",
-       "_orderedDrawerAndWindowKeyLoopGroupingViews",
-       "_orderedSidebarItemViews",
-       "_orderedWindowsWithPanels:",
-       "_orientationInPageFormat:",
-       "_originPointInRuler",
-       "_originalData",
-       "_originalFontA",
-       "_originalFontB",
-       "_originalNextKeyView",
-       "_originalRequest",
-       "_originalRowForUpdate:",
-       "_originalSnapshot",
-       "_outlineAction:",
-       "_outlineDelegate",
-       "_outlineDoubleAction:",
-       "_outlineIsOn",
-       "_outlineView",
-       "_overflowHeaderCellPrototype",
-       "_overrideEncoding",
-       "_overwriteExistingFileCheck:",
-       "_ownedByPopUp",
-       "_ownerElement",
-       "_owningPopUp",
-       "_ownsDestinationObjectsForRelationshipKey:",
-       "_ownsWindowGrowBox",
-       "_packedGlyphs:range:length:",
-       "_pageCacheSize",
-       "_pageCount",
-       "_pageDownWithEvent:",
-       "_pageForIndex:",
-       "_pageFormat",
-       "_pageFormatAttributeKeys",
-       "_pageFormatForGetting",
-       "_pageFormatForSetting",
-       "_pageHeaderAndFooterTextAttributes",
-       "_pageHorizontally:",
-       "_pageLayout:wasPresentedWithResult:inContext:",
-       "_pageRuleImpl",
-       "_pageUpWithEvent:",
-       "_pageVertically:",
-       "_panelInitWithCoder:",
-       "_panelSizeExcludingToolbar",
-       "_paperNameForSize:",
-       "_paperNameInPrintSession:pageFormat:",
-       "_paperSizeInPageFormat:",
-       "_paragraphClassforParagraphStyle:range:isEmpty:headerString:alignmentString:",
-       "_paragraphElementImpl",
-       "_paramElementImpl",
-       "_parametersForReading",
-       "_parametersForWriting",
-       "_parentWindow",
-       "_parse",
-       "_parseArchivedList:",
-       "_parseCacheControl",
-       "_parseCharacterAttributes",
-       "_parseCharacterAttributes1",
-       "_parseCharacterAttributes2",
-       "_parseCharacterAttributesFromElement:namespaceURI:qualifiedName:attributes:",
-       "_parseContentsDictionary",
-       "_parseDocumentAttributes",
-       "_parseDocumentAttributes1",
-       "_parseDocumentAttributes2",
-       "_parseFonts",
-       "_parseFonts1",
-       "_parseFonts2",
-       "_parseGlobals",
-       "_parseLibXML2Node:",
-       "_parseMenuString:menuName:itemName:",
-       "_parseNode:",
-       "_parsePantoneLikeList:fileName:",
-       "_parseParagraphAttributes",
-       "_parseParagraphAttributes1",
-       "_parseParagraphAttributes2",
-       "_parseParagraphAttributesFromElement:namespaceURI:qualifiedName:attributes:",
-       "_parsePredefinedAttributes",
-       "_parsePredefinedAttributes1",
-       "_parsePredefinedAttributes2",
-       "_parseReleaseTwoList:",
-       "_parseSummaryInfo:",
-       "_parseText",
-       "_parseText1",
-       "_parseText1Fast",
-       "_parseText1Full",
-       "_parseText2",
-       "_parserableCollectionDescription:",
-       "_parserableDateDescription:",
-       "_parserableStringDescription:",
-       "_passwordData",
-       "_pasteWithPasteboard:allowPlainText:",
-       "_pasteboardWithName:",
-       "_pathData",
-       "_pathForFSRef:",
-       "_pathToFileNamed:inFolder:",
-       "_patternForBinding:",
-       "_pauseUIHeartBeatingInView:",
-       "_pendingActCount",
-       "_perThreadHandlingStack:",
-       "_performActionWithCommitEditing",
-       "_performActionWithCommitEditing:didCommit:contextInfo:",
-       "_performActivationClickWithShiftDown:",
-       "_performArrayBinderOperation:singleObject:multipleObjects:singleIndex:multipleIndexes:selectionMode:",
-       "_performBatchWindowOrdering:",
-       "_performCancel",
-       "_performChangesWithAdapterOps:",
-       "_performConnectionEstablishedRefresh",
-       "_performContinueWithoutCredential",
-       "_performDragFromMouseDown:",
-       "_performKeyEquivalentOnAllCells:",
-       "_performKeyEquivalentWithDelegate:",
-       "_performLoad",
-       "_performMenuFormRepresentationClick",
-       "_performMutatorOperation:object:index:",
-       "_performOriginLoad",
-       "_performRemoveFileAtPath:",
-       "_performResponderOperation:with:",
-       "_performTimeOut",
-       "_performToggleToolbarShown:",
-       "_performUseCredential",
-       "_periodicEvent:",
-       "_persistentStoreCoordinator",
-       "_persistentStoreForIdentifier:",
-       "_persistsWidthCacheToUserDefaults",
-       "_physicalSizeCompare:",
-       "_pickUpMissingStuffFromNode:forEntity:",
-       "_pidString",
-       "_pinDocRect",
-       "_pinViews:resizeFlagsToLeaveAlone:",
-       "_pixelBufferAuxiliary",
-       "_pixelFormatAuxiliary",
-       "_pixelRectInPoints:",
-       "_pk",
-       "_placeHelpWindowNear:",
-       "_placePopupWindow:",
-       "_placeSuggestionsInDictionary:acceptableControllers:boundBinders:binder:binding:",
-       "_placeholderAttributedString",
-       "_placeholderString",
-       "_plainFontNameForFont:",
-       "_platformFont",
-       "_plugInPath",
-       "_plugIns",
-       "_plugin",
-       "_pluginCancelledConnectionError",
-       "_pluginClassWithObject:",
-       "_pluginController",
-       "_pluginProtocol",
-       "_pointFromColor:",
-       "_pointInPicker:",
-       "_pointRectInPixels:",
-       "_policyDelegateForwarder",
-       "_popCompoundStack",
-       "_popIfTopHandling:",
-       "_popPerformingProgrammaticFocus",
-       "_popState",
-       "_popSubframeArchiveWithName:",
-       "_popUpButton",
-       "_popUpButtonCellInstances",
-       "_popUpContextMenu:withEvent:forView:",
-       "_popUpContextMenu:withEvent:forView:withFont:",
-       "_popUpItemAction:",
-       "_popUpMenuWithEvent:forView:",
-       "_poppedTopHandling",
-       "_populate:",
-       "_populateEntityDescription:fromNode:",
-       "_populateMiniMode",
-       "_populateOpenRecentMenu:",
-       "_populatePopup:withTableView:",
-       "_populateReplyAppleEventWithResult:",
-       "_populateRowForOp:withObject:",
-       "_portData",
-       "_portInvalidated:",
-       "_position",
-       "_positionAllDrawers",
-       "_positionAndResizeSearchParts",
-       "_positionForPoint:",
-       "_positionLabels",
-       "_positionSheetAndDisplay:",
-       "_positionSheetConstrained:andDisplay:",
-       "_positionSheetRect:onRect:andDisplay:",
-       "_positionWindow",
-       "_positionalSpecifierFromDescriptor:",
-       "_posixPathComponentsWithPath:",
-       "_postAtStart:",
-       "_postBoundsChangeNotification",
-       "_postCallback:",
-       "_postCarbonWindowActivateEvent:makeKeyWindow:",
-       "_postCheckpointNotification",
-       "_postColumnConfigurationDidChangeNotification",
-       "_postColumnDidMoveNotificationFromColumn:toColumn:",
-       "_postColumnDidResizeNotificationWithOldWidth:",
-       "_postDidFailCallback",
-       "_postDidFinishLoadingCallback",
-       "_postDidFinishNotification",
-       "_postDidReceiveDataCallback",
-       "_postDidReceiveResponseCallback",
-       "_postDidScrollNotification",
-       "_postEventNotification:",
-       "_postEventNotification:fromCell:",
-       "_postFocusChangedNotification",
-       "_postFrameChangeNotification",
-       "_postFromSubthread:",
-       "_postInitWithCoder:signature:valid:wireSignature:target:selector:argCount:",
-       "_postInitialization",
-       "_postInvalidCursorRects",
-       "_postItemDidCollapseNotification:",
-       "_postItemDidExpandNotification:",
-       "_postItemWillCollapseNotification:",
-       "_postItemWillExpandNotification:",
-       "_postNotificationForEvent:notificationName:parent:",
-       "_postNotificationForEvent:notificationName:parent:child:",
-       "_postNotificationForEvent:notificationName:parent:child:fbeProperty:",
-       "_postPreferencesChangesNotification",
-       "_postQueryFinishedNotification",
-       "_postQueryStartedNotification",
-       "_postSelectionDidChangeNotification",
-       "_postSelectionIsChangingAndMark:",
-       "_postSessionNotificationIfNeeded",
-       "_postURL:target:len:buf:file:notifyData:sendNotification:allowHeaders:",
-       "_postWillCacheResponseCallback",
-       "_postWillScrollNotification",
-       "_postWillSendRequestCallback",
-       "_postWindowNeedsDisplay",
-       "_postWithURL:referrer:target:data:contentType:triggeringEvent:form:formValues:",
-       "_postingDisabled",
-       "_postscriptName",
-       "_potentialMaxSize",
-       "_potentialMinSize",
-       "_preElementImpl",
-       "_preEvaluate",
-       "_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",
-       "_prepareForPushChanges:",
-       "_prepareForReloadChildrenForNode:",
-       "_prepareHelpWindow:locationHint:",
-       "_prepareIndirectKeyValueCodingCallWithPartialControllerKey:controller:",
-       "_preparePrintStream",
-       "_prepareString:expressionPath:caseSensitive:wildStart:wildEnd:",
-       "_prepareSubstringWith:wildStart:wildEnd:",
-       "_prepareSynchronizationOfEditedFieldForColumnWidthChange",
-       "_prepareToMessageClients",
-       "_prepareToMinimize",
-       "_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",
-       "_previousDisplayMode",
-       "_previousFrameWithWrap:",
-       "_previousNextTab:loop:",
-       "_previousNibBindingConnector",
-       "_previousSibling",
-       "_primitiveInvalidateDisplayForGlyphRange:",
-       "_primitiveSetDefaultNextKeyView:",
-       "_primitiveSetNextKeyView:",
-       "_primitiveSetPreviousKeyView:",
-       "_primitiveValueForKey:",
-       "_primitiveValueImpl",
-       "_printAndPaginateWithOperation:helpedBy:",
-       "_printDocumentsWithContentsOfURLs:settings:showPrintPanels:delegate:didPrintSelector:contextInfo:",
-       "_printOperation:wasRunWithSuccess:inContext:",
-       "_printPagesWithOperation:helpedBy:",
-       "_printPanel:didEndAndReturn:contextInfo:",
-       "_printSession",
-       "_printSessionAttributeKeys",
-       "_printSessionForGetting",
-       "_printSessionForSetting",
-       "_printSettings",
-       "_printSettingsAttributeKeys",
-       "_printSettingsForGetting",
-       "_printSettingsForSetting",
-       "_printSettingsValue",
-       "_printVerboseDebuggingInformation:",
-       "_printer",
-       "_printerForPrinter:",
-       "_printerInPrintSession:",
-       "_proceedGivenDBInfo:",
-       "_processDBInfoNode:",
-       "_processDeletedObjects",
-       "_processDocument",
-       "_processElement:tag:display:",
-       "_processEndOfEventNotification:",
-       "_processGlobalIDChanges:",
-       "_processHeadElement:",
-       "_processHeaders:",
-       "_processInstanceNode:",
-       "_processKeyboardUIKey:",
-       "_processLibXML2ElementNode:tag:",
-       "_processLibXML2HeadElementNode:",
-       "_processLibXML2MetaNode:",
-       "_processLibXML2TextNode:content:",
-       "_processLibXML2TitleNode:",
-       "_processMetaElementWithName:content:",
-       "_processMetadataNode:",
-       "_processNotificationQueue",
-       "_processNotifications:",
-       "_processObjectStoreChanges:",
-       "_processOwnedObjects:set:boolean:",
-       "_processRecentChanges",
-       "_processReferenceQueue",
-       "_processRequest:",
-       "_processRequest:named:usingPasteboard:",
-       "_processText:",
-       "_processingInstructionImpl",
-       "_progress",
-       "_progressCompleted:",
-       "_progressPanel:didEndAndReturn:contextInfo:",
-       "_progressPanelWasCancelled:contextInfo:",
-       "_progressStarted:",
-       "_promoteGlyphStoreToFormat:",
-       "_propagateDelete",
-       "_propagateDeletesUsingTable:",
-       "_propagateDirtyRectsToOpaqueAncestors",
-       "_properties",
-       "_propertiesOfType:",
-       "_propertyAccessFromElement:",
-       "_propertyContainerClassDescriptionFromDictionaryType:inSuite:",
-       "_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:",
-       "_rangeOfPrefixOfString:fittingWidth:withFont:",
-       "_rangeOfSuffixFittingWidth:withAttributes:",
-       "_rangeOfTextTableRow:atIndex:",
-       "_rangeWithImpl:",
-       "_ranges",
-       "_rangesForUserBaseWritingDirectionChange",
-       "_rawAddColor:key:",
-       "_rawKeyEquivalent",
-       "_rawKeyEquivalentModifierMask",
-       "_rawSetSelectedIndex:",
-       "_reactToDisplayChanged",
-       "_reactToFontSetChange",
-       "_reactToMatchingInsertions:deletions:",
-       "_readAcceptCookiesPreference",
-       "_readBBox",
-       "_readColorIntoRange:fromPasteboard:",
-       "_readColorsFromLibrary",
-       "_readFilenameStringsIntoRange:fromPasteboard:",
-       "_readFilenamesIntoRange:fromPasteboard:",
-       "_readFontIntoRange:fromPasteboard:",
-       "_readHTMLIntoRange:fromPasteboard:",
-       "_readImageInfoWithImageSource:imageNumber:properties:",
-       "_readImageIntoRange:fromPasteboard:",
-       "_readMovieIntoRange:fromPasteboard:",
-       "_readPersistentBrowserColumns",
-       "_readPersistentExpandItems",
-       "_readPersistentTableColumns",
-       "_readRTFDIntoRange:fromPasteboard:",
-       "_readRTFIntoRange:fromPasteboard:",
-       "_readRecentDocumentDefaultsIfNecessary",
-       "_readRulerIntoRange:fromPasteboard:",
-       "_readSelectionFromPasteboard:types:",
-       "_readStringIntoRange:fromPasteboard:",
-       "_readURLIntoRange:fromPasteboard:",
-       "_readURLStringIntoRange:fromPasteboard:",
-       "_readURLStringsWithNamesIntoRange:fromPasteboard:",
-       "_readVersion0:",
-       "_readWidthsFromDefaults",
-       "_readablePasteboardTypesForRichText:importsGraphics:usesFontPanel:usesRuler:allowsFiltering:",
-       "_realControlTint",
-       "_realControlTintForView:",
-       "_realCopyPSCodeInside:helpedBy:",
-       "_realCreateContext",
-       "_realDestroyContext",
-       "_realDoModalLoop:peek:",
-       "_realDoModalLoopForCarbonWindow:peek:",
-       "_realHeartBeatThreadContext",
-       "_realMaximumRecents",
-       "_realPrintPSCode:helpedBy:",
-       "_realStoreTypeForStoreWithType:URL:error:",
-       "_realWindowNumber",
-       "_reallocColors:",
-       "_reallocData:",
-       "_reallyChooseGuess:",
-       "_reallyControlView",
-       "_reallyDoOrderWindow:relativeTo:findKey:forCounter:force:isModal:",
-       "_reallyInitWithIncrementalImageReader:",
-       "_reallyNeedsDisplayForBounds",
-       "_reallyProcessNotifications:",
-       "_realmForURL:",
-       "_rebuildOrUpdateServicesMenu:",
-       "_recacheAll",
-       "_recacheButtonColors",
-       "_recacheString",
-       "_recalcRectsForCell:",
-       "_recalculateUsageForTextContainerAtIndex:",
-       "_receiveHandlerRef",
-       "_receivedData:",
-       "_receivedError:fromDataSource:",
-       "_receivedMainResourceError:",
-       "_receivedMainResourceError:complete:",
-       "_recentMenuItemTitlesFromLocationComponentChains:",
-       "_recentPlacesNode",
-       "_recomputeBucketIndex:bucketFirstRowIndex:",
-       "_recomputeLabelHeight",
-       "_reconcileDisplayNameAndTrackingInfoToFileName",
-       "_reconcilePageFormatAttributes",
-       "_reconcilePrintSessionAttributes",
-       "_reconcilePrintSettingsAttributes",
-       "_reconcileToSuiteRegistry:",
-       "_reconfigureAnimationState:",
-       "_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",
-       "_recursiveCheckLoadComplete",
-       "_recursiveDisableTrackingRectsForHiddenViews",
-       "_recursiveDisplayAllDirtyWithLockFocus:visRect:",
-       "_recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:",
-       "_recursiveEnableTrackingRectsForNonHiddenViews",
-       "_recursiveEnsureSubviewNextKeyViewsAreSubviewsOf:",
-       "_recursiveFindDefaultButtonCell",
-       "_recursiveGainedHiddenAncestor",
-       "_recursiveGatherAllKeyViewCandidatesInArray:",
-       "_recursiveGoToItem:fromItem:withLoadType:",
-       "_recursiveLostHiddenAncestor",
-       "_recursiveOrderFrontSurfacesForNonHiddenViews",
-       "_recursiveOrderOutSurfacesForHiddenViews",
-       "_recursiveRecomputeToolTips",
-       "_recursiveSetDefaultKeyViewLoop",
-       "_recursiveStopLoading",
-       "_recursiveWindowDidEnableToolTipCreationAndDisplay",
-       "_recursivelyAddItemsInMenu:toTable:",
-       "_recursivelyRemoveItemsInMenu:fromTable:",
-       "_redisplayAndResizeFromRow:",
-       "_redisplayTableContentWithRowIndexes:columnIndexes:",
-       "_refaultLocalObjectWithGlobalID:",
-       "_refaultObject:globalID:editingContext:boolean:",
-       "_refaultObjectWithGlobalID:globalID:",
-       "_referenceArray",
-       "_referenceBinderForTableColumn:",
-       "_referenceBinding",
-       "_referenceBindingValue",
-       "_referenceBindingValueAtIndex:",
-       "_referenceBindingValueAtIndexPath:",
-       "_referenceData",
-       "_referenceData64",
-       "_referenceDataPtr",
-       "_reflectDocumentViewBoundsChange",
-       "_reflectFont",
-       "_reflectSelection",
-       "_reflectSelection:",
-       "_reformListAtIndex:",
-       "_reformTableRow",
-       "_refreshDetailContentInBackground:",
-       "_refreshesAllModelKeys",
-       "_refreshesAllModelObjects",
-       "_regenerateFormatter",
-       "_region:",
-       "_regionForOpaqueDescendants:forMove:",
-       "_registerAllDrawersForDraggedTypesIfNeeded",
-       "_registerBuiltInFormatters",
-       "_registerClearStateWithUndoManager",
-       "_registerDefaultPlaceholders",
-       "_registerDefaultStoreClassesAndTypes",
-       "_registerDragTypes:",
-       "_registerDragTypesIfNeeded",
-       "_registerDragTypesLater",
-       "_registerDraggedTypes",
-       "_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:",
-       "_registerStoreClass:forStoreType:",
-       "_registerSuiteDescriptions:",
-       "_registerTableColumnBinder:toTableColumn:autoCreateReferenceController:",
-       "_registerToolbarInstance:",
-       "_registerUndoForModifiedObject:",
-       "_registerUndoObject:",
-       "_registerUnitWithName:abbreviation:unitToPointsConversionFactor:stepUpCycle:stepDownCycle:",
-       "_registerWebKitErrors",
-       "_registerWithDock",
-       "_registerWithDockIfNeeded",
-       "_registeredForChildNotifications",
-       "_registeredObjects",
-       "_registeredStoreTypes",
-       "_registrationDictionaryForUnitNamed:",
-       "_relatedNodes",
-       "_relationshipNamed:",
-       "_relationshipNamesByType:",
-       "_releaseAllPendingPageCaches",
-       "_releaseAllPreWillChangeExpandedNodes",
-       "_releaseBindingAdaptor",
-       "_releaseDelegate",
-       "_releaseEffect",
-       "_releaseEvents",
-       "_releaseFutureIconForURL:",
-       "_releaseIconForIconURLString:",
-       "_releaseInput",
-       "_releaseKVCMaps",
-       "_releaseLiveResizeCachedImage",
-       "_releaseNodePreviewHelper",
-       "_releaseOneLevelPreWillChangeExpandedNodes",
-       "_releaseOriginalIconsOnDisk",
-       "_releasePageCache:",
-       "_releaseProtocolClientReference",
-       "_releaseRowHeightStorageIfNecessary",
-       "_releaseUndoManager",
-       "_releaseWireCount:",
-       "_reloadAllowingStaleDataWithOverrideEncoding:",
-       "_reloadChildrenForNode:",
-       "_reloadForPluginChanges",
-       "_reloadSidebarNodes",
-       "_remainingString",
-       "_remove:",
-       "_remove:andAddMultipleToTypingAttributes:",
-       "_removeAllCellMouseTracking",
-       "_removeAllDrawersImmediately:",
-       "_removeAllRevealovers",
-       "_removeAllTrackingRects",
-       "_removeAndDecrementBy:startingAtIndex:",
-       "_removeBinding:",
-       "_removeBinding:byReplacingWithRemainingBindingsInArray:",
-       "_removeBottom",
-       "_removeButtons",
-       "_removeChild:",
-       "_removeClipIndicatorFromSuperview",
-       "_removeCursorRect:cursor:forView:",
-       "_removeEntities:fromConfiguration:",
-       "_removeEntity:",
-       "_removeEntityNamed:",
-       "_removeFileAtPath:handler:shouldDeleteFork:",
-       "_removeFontDescriptor:fromCollection:save:",
-       "_removeFontDescriptorFromDrag:point:",
-       "_removeFrameUsingName:domain:",
-       "_removeFromGroups:",
-       "_removeFromKeyViewLoop",
-       "_removeHeartBeartClientView:",
-       "_removeHelpKeyForObject:",
-       "_removeHiddenWindow:",
-       "_removeItem:fromTable:",
-       "_removeItemAtIndex:notifyDelegate:notifyView:notifyFamilyAndUpdateDefaults:",
-       "_removeMouseMovedListener:",
-       "_removeNextPointersToMe",
-       "_removeNumberOfIndexes:fromSelectionIndexesAtIndex:sendObserverNotifications:",
-       "_removeObject:objectIDMap:",
-       "_removeObjectAtArrangedObjectIndex:objectHandler:",
-       "_removeObjectForAttributeKey:",
-       "_removeObjects:objectHandler:",
-       "_removeObjectsAtArrangedObjectIndexPaths:objectHandler:",
-       "_removeObjectsAtArrangedObjectIndexes:contentIndexes:objectHandler:",
-       "_removeObserver:forProperty:",
-       "_removeObserver:notificationNamesAndSelectorNames:object:",
-       "_removeOrRename:",
-       "_removePasswordForRealm:URL:",
-       "_removePlugInStreamClient:",
-       "_removePopUpWithTag:",
-       "_removePreviousPointersToMe",
-       "_removeProperty:",
-       "_removePropertyNamed:",
-       "_removeProxyPasswordForURL:",
-       "_removeRangeInArrayAtIndex:",
-       "_removeReferenceForIdentifier:",
-       "_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:",
-       "_replaceAllItemsAndSetNewWithItemIdentifiers:",
-       "_replaceCString:withCString:",
-       "_replaceFontDescriptor:withDescriptor:inCollection:",
-       "_replaceObject:withObject:",
-       "_replaceRangeInArrayAtIndex:withRange:",
-       "_replaceSelectionWithArchive:selectReplacement:",
-       "_replaceSubview:with:rememberAndResetEditingFirstResponder:abortEditingIfNecessary:",
-       "_replicatePath:atPath:operation:fileMap:handler:",
-       "_representationClassForMIMEType:",
-       "_representationExistsForURLScheme:",
-       "_representedObjectForString:",
-       "_representedObjectForString:allowNULL:",
-       "_requestAnyEditableState",
-       "_requestAnyEnabledState",
-       "_requestAnyHiddenState",
-       "_requestEditableState:",
-       "_requestEnabledState:",
-       "_requestHiddenState:",
-       "_requestNotification",
-       "_requestTextColor:",
-       "_requestTypeForOperationKey:",
-       "_requiredCarbonCatalogInfoMask",
-       "_requiredMinSize",
-       "_requiresCacheWithAlpha:",
-       "_reset",
-       "_resetAllChanges",
-       "_resetAllChanges:",
-       "_resetAllDrawersDisableCounts",
-       "_resetAllDrawersPostingCounts",
-       "_resetAlternateICUValues",
-       "_resetCachedValidationState",
-       "_resetCursorRects",
-       "_resetDictionaryRepresentation",
-       "_resetDisableCounts",
-       "_resetDiscardMask",
-       "_resetDragMargins",
-       "_resetDrawerFirstResponder",
-       "_resetFirstResponder",
-       "_resetIncrementalSearchBuffer",
-       "_resetMeasuredCell",
-       "_resetModificationDate",
-       "_resetMoveAndRenameSensing",
-       "_resetOpacity:andForceSetColor:",
-       "_resetPostingCounts",
-       "_resetProgress",
-       "_resetScreens",
-       "_resetTitleBarButtons",
-       "_resetTitleFont",
-       "_resetTitleWidths",
-       "_resetToolTipIfNecessary",
-       "_reshapeContentAndToolbarView:resizeWindow:animate:",
-       "_resignKeyFocus",
-       "_resize:",
-       "_resizeAccordingToTextView:",
-       "_resizeAllCaches",
-       "_resizeCache:cachedSeparately:bps:numColors:hasAlpha:",
-       "_resizeColumn:withEvent:",
-       "_resizeColumnByDelta:resizeInfo:",
-       "_resizeContentsOfMainBox",
-       "_resizeContentsOfMiniMode",
-       "_resizeContentsOfPreviewBox",
-       "_resizeCursorForTableColumn:",
-       "_resizeDeltaFromPoint:toEvent:",
-       "_resizeFromEdge",
-       "_resizeHeight:",
-       "_resizeImage",
-       "_resizeKeepingPanelOnScreen:expand:",
-       "_resizeOutlineColumn",
-       "_resizeSelectedTabViewItem",
-       "_resizeTable:level:range:column:widthDelta:",
-       "_resizeTable:level:range:row:heightDelta:",
-       "_resizeTextFieldToFit:",
-       "_resizeTextViewForTextContainer:",
-       "_resizeToolbarImageRepViewToFit:",
-       "_resizeToolbarViewToFit:",
-       "_resizeViewToFit:",
-       "_resizeViewsForOffset:coordinate:",
-       "_resizeWeight",
-       "_resizeWeightSharedWithDuplicateItems",
-       "_resizeWeighting",
-       "_resizeWindow:toFrame:display:",
-       "_resizeWindowWithMaxHeight:",
-       "_resizeWithDelta:fromFrame:beginOperation:endOperation:",
-       "_resizedImage:",
-       "_resolveHelpKeyForObject:",
-       "_resolveMarkerToPlaceholder:forBindingInfo:allowPluginOverride:",
-       "_resolveName",
-       "_resolveNamespaceForPrefix:",
-       "_resolvePositionalStakeGlyphsForLineFragment:lineFragmentRect:minPosition:maxPosition:maxLineFragmentWidth:breakHint:",
-       "_resolveTypeAlias:",
-       "_resourceLoadDelegateForwarder",
-       "_resourceLoadDelegateImplementations",
-       "_resourceLoadLoop:",
-       "_resourcesFromPropertyLists:",
-       "_responderInitWithCoder:",
-       "_response",
-       "_responses",
-       "_responsibleDelegateForSelector:",
-       "_restartEditingWithTextView:",
-       "_restartMovementTracking",
-       "_restoreCursor",
-       "_restoreDefaultSettingsCommon",
-       "_restoreDefaultSettingsForOpenMode",
-       "_restoreDefaultSettingsForSaveMode",
-       "_restoreInitialMenuPosition",
-       "_restoreMiniaturizedWindow",
-       "_restoreModalWindowLevel",
-       "_restoreMode",
-       "_restoreMovieEditState:",
-       "_restoreScrollPosition",
-       "_restoreSplitPositionFromDefaults",
-       "_restoreSubviews",
-       "_restoreTornOffMenus",
-       "_resultTypeDescription",
-       "_resumeExecutionWithResult:",
-       "_resumeIfNotTopHandling:withScriptCommandResult:",
-       "_resumeInformation",
-       "_resumeLoading",
-       "_resumeUIHeartBeatingInView:",
-       "_retainFutureIconForURL:",
-       "_retainIconForIconURLString:",
-       "_retainIconInDatabase:",
-       "_retainOriginalIconsOnDisk",
-       "_retainedObjectWithID:optionalHandler:",
-       "_retainedPrimaryKeyNumberForObject:",
-       "_retainedPrimaryKeyNumberForObjectID:",
-       "_retrieveKeyboardUIModeFromPreferences:",
-       "_returnFirstResponderToWindowFromKeyboardHotKeyEvent",
-       "_returnValue",
-       "_revealoverInfoForCell:cellRect:",
-       "_revertAlertSheet:wasPresentedWithResult:inContext:",
-       "_revertDisplayValueBackToOriginalValue:",
-       "_revertToOldRowSelection:fromRow:toRow:",
-       "_rightGroupRect",
-       "_rightMouseUpOrDown:",
-       "_rightToLeftAtIndex:",
-       "_rightmostAutoresizingColumn",
-       "_rollbackTransaction:",
-       "_rootEntity",
-       "_rootNode",
-       "_rotateCoordsForDrawLabelInRect:",
-       "_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:",
-       "_rulerAccViewCenterTabWell",
-       "_rulerAccViewDecimalTabWell",
-       "_rulerAccViewLeftTabWell",
-       "_rulerAccViewRightTabWell",
-       "_rulerAccViewSetUpLists",
-       "_rulerAccViewUpdateStyles:",
-       "_rulerAccessoryViewAreaRect",
-       "_rulerOrigin",
-       "_runAlertPanelForDocumentMoved:orDocumentRenamed:orDocumentInTrash:orDocumentUnavailable:thenSaveDocumentWithDelegate:didSaveSelector:contextInfo:",
-       "_runArrayHoldingAttributes",
-       "_runBlocking",
-       "_runCustomizationPanel",
-       "_runInNewThread",
-       "_runInitBook:",
-       "_runModalWithColor:",
-       "_runModalWithPrintInfo:",
-       "_runningDocModal",
-       "_sanityCheckPListDatabase:",
-       "_saveConfigurationUsingName:domain:",
-       "_saveCookies",
-       "_saveCookiesIfScheduled",
-       "_saveCredential:forProtectionSpace:isDefault:",
-       "_saveCurrentPanelState:",
-       "_saveDocumentAndScrollState",
-       "_saveDocuments:",
-       "_saveFrameUsingName:domain:",
-       "_saveHistoryGuts:URL:error:",
-       "_saveInitialMenuPosition",
-       "_saveMode",
-       "_saveObjects:toStore:usingContext:",
-       "_savePanelAccessoryViewForWritableTypes:defaultType:",
-       "_savePanelWasPresented:withResult:inContext:",
-       "_saveRequestForStore:originalRequest:",
-       "_saveScrollPositionToItem:",
-       "_saveSplitPositionToDefaults",
-       "_saveTornOffMenus",
-       "_saveVisibleFrame",
-       "_saveWidthsToDefaults",
-       "_savedMode",
-       "_savedVisibleFrame",
-       "_scaleFactor",
-       "_scaleFactorForPrintOperation:",
-       "_scaleFactorForStyleMask:",
-       "_scaleIcon:toSize:",
-       "_scaledBackground",
-       "_scaledIntegralRect:",
-       "_scalesBackgroundHorizontally",
-       "_scalesBackgroundVertically",
-       "_scanDecimal:into:",
-       "_scanForPlugIns:",
-       "_scanImages",
-       "_scheduleAutoExpandTimerForItem:",
-       "_scheduleCallbacks",
-       "_scheduleChangeNotification",
-       "_scheduleDelayedAutocomplete",
-       "_scheduleDelayedShowOpenHandCursorIfNecessary",
-       "_scheduleInDefaultRunLoopForMode:",
-       "_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",
-       "_scrollColumnToVisible:private:",
-       "_scrollColumnToVisible:requireCompletelyVisible:",
-       "_scrollColumnsForScrollerIncrementOrDecrementUsingPart:",
-       "_scrollColumnsRightBy:",
-       "_scrollDown:",
-       "_scrollFieldEditorToVisible:",
-       "_scrollHorizontallyBy:",
-       "_scrollInProgress",
-       "_scrollLastColumnMaxXEdgeToVisible",
-       "_scrollLineHorizontally:",
-       "_scrollLineVertically:",
-       "_scrollPageInDirection:",
-       "_scrollPoint:fromView:",
-       "_scrollRangeToVisible:forceCenter:",
-       "_scrollRectToVisible:fromView:",
-       "_scrollRowToCenter:",
-       "_scrollSelectionToVisible",
-       "_scrollTo:",
-       "_scrollTo:animate:",
-       "_scrollToFinalPosition",
-       "_scrollToMatchContentView",
-       "_scrollToPosition:",
-       "_scrollUp:",
-       "_scrollVerticallyBy:",
-       "_scrollView",
-       "_scrollViewForColumnsDidTrackHorizontalScroller:",
-       "_scrollViewForColumnsDocumentViewFrameDidChange:",
-       "_scrollViewForColumnsDocumentViewVisibilityChange:",
-       "_scrollViewForColumnsWillTrackHorizontalScroller:",
-       "_scrollWheelMultiplier",
-       "_scrollingDirectionAndDeltas:",
-       "_scrollingMenusAreEnabled",
-       "_searchChanged:",
-       "_searchFavoriteStyleCollection",
-       "_searchFieldAction:",
-       "_searchFieldCancel:",
-       "_searchFieldClearRecents:",
-       "_searchFieldDoRecent:",
-       "_searchFieldSearch:",
-       "_searchForImageNamed:",
-       "_searchForSoundNamed:",
-       "_searchForSystemImageNamed:",
-       "_searchMenuForProxy",
-       "_searchMenuTemplate",
-       "_searchMenuTracking",
-       "_searchRegularCollection",
-       "_secProtocolForProtectionSpace:",
-       "_secondsFromGMTForAbsoluteTime:",
-       "_seemsToBeVertical",
-       "_segmentIndexForElementIndex:",
-       "_selectAllContent:inDetailcontroller:",
-       "_selectAllForMatrix:sender:",
-       "_selectAllNoRecurse:",
-       "_selectAnyValidResponderOverride",
-       "_selectCell:inColumn:",
-       "_selectCellIfRequired",
-       "_selectCrayon:updateSelection:",
-       "_selectElementImpl",
-       "_selectFirstEnabledCell",
-       "_selectFirstKeyView",
-       "_selectHighlightedSegment",
-       "_selectInTabView:itemAtIndex:",
-       "_selectInTabView:itemWithIdentifier:",
-       "_selectInTabView:itemWithLabel:",
-       "_selectKeyCellAtRow:column:",
-       "_selectMarkedText",
-       "_selectModuleOwner:",
-       "_selectNameFieldContentsExcludingExtension",
-       "_selectNextCellKeyStartingAtRow:column:",
-       "_selectNextItem",
-       "_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::",
-       "_selectRowIndexes:inColumn:",
-       "_selectRowRange::",
-       "_selectTabWithDraggingInfo:",
-       "_selectTextOfCell:",
-       "_selectWindow:",
-       "_selectedArchive",
-       "_selectedCellsInColumn:",
-       "_selectedCollectionDescriptors",
-       "_selectedCollectionName",
-       "_selectedCollectionStyle",
-       "_selectedCrayon",
-       "_selectedFaceName",
-       "_selectedFamilyArray",
-       "_selectedFamilyName",
-       "_selectedFontName",
-       "_selectedRange",
-       "_selectedRanges",
-       "_selectedRangesByTogglingRanges:withRanges:initialCharacterIndex:granularity:",
-       "_selectedSize",
-       "_selectionChanged",
-       "_selectionIndexesCount",
-       "_selectionIsInsideMarkedText",
-       "_selectionPasteboardTypes",
-       "_selectionStartFontAttributesAsRTF",
-       "_selectorName",
-       "_selectorToGetValueWithNameForKey:",
-       "_selectorToGetValueWithUniqueIDForKey:",
-       "_selfBoundsChanged",
-       "_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",
-       "_sendDidFailToDispatchNotification",
-       "_sendDidFinishLoadingCallback",
-       "_sendDidReceiveAuthenticationCallback",
-       "_sendDidReceiveDataCallback",
-       "_sendDidReceiveResponseCallback",
-       "_sendDirectoryDidChange",
-       "_sendDoubleActionToCellAt:",
-       "_sendFileSystemChangedNotificationForSavePanelInfo:",
-       "_sendFinderAppleEvent:class:file:",
-       "_sendFinishLaunchingNotification",
-       "_sendNotification:entries:",
-       "_sendNotificationForURL:",
-       "_sendOrEnqueueNotification:selector:",
-       "_sendPartialString",
-       "_sendPortMessageWithComponent:msgID:timeout:",
-       "_sendQueuedAction",
-       "_sendSelectionDidChange",
-       "_sendToReceiversWithIndex:andFillInResults:",
-       "_sendToolTipMouseEntered",
-       "_sendToolTipMouseExited",
-       "_sendWillCacheResponseCallback",
-       "_sendWillSendRequestCallback",
-       "_senderIsInvalid:",
-       "_sendingSocketForPort:",
-       "_sendingTableViewRowAction",
-       "_separatorFinishInit",
-       "_serverDied:",
-       "_servicesMenuHasBeenBuilt",
-       "_setActivationState:",
-       "_setActsAsPalette:forToolbar:",
-       "_setAdditionalThingsFromEvent:",
-       "_setAllItemsTransparentBackground:",
-       "_setAllPossibleLabelsToFit:",
-       "_setAllowsMultipleRows:",
-       "_setAllowsNonVisibleCellsToBecomeFirstResponder:",
-       "_setAllowsTearOffs:",
-       "_setAltContents:",
-       "_setAlwaysUseATSU:",
-       "_setAnimateColumnScrollingForAnyEvent:",
-       "_setAnimates:",
-       "_setAppleEventHandling:",
-       "_setApplicationIconImage:setDockImage:",
-       "_setArgFrame:",
-       "_setAsideSubviews",
-       "_setAttributeValueClassName:",
-       "_setAttributes:isMultiple:",
-       "_setAttributes:newValues:range:",
-       "_setAutoAppendsMDAttributesToSavedFile:",
-       "_setAutoGeneratedInitialFirstResponder:",
-       "_setAutoPositionMask:",
-       "_setAutoscrollDate:",
-       "_setAutovalidatesItems:",
-       "_setAvoidsActivation:",
-       "_setBackgroundColor:",
-       "_setBaselineRenderingMode:",
-       "_setBatchingParams",
-       "_setBindingAdaptor:",
-       "_setBindingCreationDelegate:",
-       "_setBlockCapacity:",
-       "_setBool:ifNoAttributeForKey:",
-       "_setBoolValue:forKey:",
-       "_setBorderType:",
-       "_setBox:enabled:",
-       "_setBrowserOptimizationsEnabled:",
-       "_setBulletCharacter:",
-       "_setBundle:forClassPresentInAppKit:",
-       "_setBundleForHelpSearch:",
-       "_setButtonImageSource:",
-       "_setButtonToolTip:",
-       "_setButtonType:adjustingImage:",
-       "_setCGImageRef:",
-       "_setCacheWindowNum:forWindow:",
-       "_setCalculatedExpiration:",
-       "_setCallbackHandler:",
-       "_setCanUseReorderResizeImageCache:",
-       "_setCaseConversionFlags",
-       "_setCellFrame:",
-       "_setChangedFlags:",
-       "_setChangedObjectIDs:",
-       "_setClipIndicatorItemsFromItemViewers:",
-       "_setColorList:",
-       "_setColorPanelColor:force:",
-       "_setColorToChange:",
-       "_setColumnName:",
-       "_setConfigurationFromDictionary:notifyFamilyAndUpdateDefaults:",
-       "_setConfigurationUsingName:domain:",
-       "_setContainerObservesTextViewFrameChanges:",
-       "_setContentInBackground:",
-       "_setContentKindAndEncoding",
-       "_setContentRect:",
-       "_setContentToContentFromIndexSet:",
-       "_setContents:",
-       "_setContentsDirty:",
-       "_setContentsDirtyForNodeWithIdentifier:",
-       "_setContextMenuEvent:",
-       "_setContextMenuTarget:",
-       "_setContinuousSpellCheckingEnabledForNewTextAreas:",
-       "_setControl:",
-       "_setControlTextDelegateFromOld:toNew:",
-       "_setControlView:",
-       "_setConversionFromData:type:inPasteboard:generation:item:",
-       "_setConvertedData:pboard:generation:inItem:",
-       "_setCookies:forURL:policyBaseURL:",
-       "_setCookiesWithoutSaving:whilePrivateBrowsing:",
-       "_setCorrelationTableName:",
-       "_setCtrlAltForHelpDesired:",
-       "_setCurrImageName:",
-       "_setCurrentAttachmentRect:index:",
-       "_setCurrentBrowsingNodePath:makeHistory:notify:",
-       "_setCurrentClient:",
-       "_setCurrentCollectionRep:",
-       "_setCurrentDirectoryNode:",
-       "_setCurrentDirectoryNode:makeHistory:notify:",
-       "_setCurrentDirectoryNode:pathToNode:",
-       "_setCurrentEvent:",
-       "_setCurrentInputFilepath:",
-       "_setCurrentItemsToItemIdentifiers:notifyDelegate:notifyView:notifyFamilyAndUpdateDefaults:",
-       "_setCurrentListLevel:",
-       "_setCurrentListNumber:",
-       "_setCurrentlyEditing:",
-       "_setDTDString:",
-       "_setData:",
-       "_setData:encoding:",
-       "_setDataForkReferenceNumber:",
-       "_setDataSource:",
-       "_setDefaultButtonCell:",
-       "_setDefaultButtonIndicatorNeedsDisplay",
-       "_setDefaultButtonPaused:",
-       "_setDefaultKeyViewLoop",
-       "_setDefaultKeyViewLoopAndInitialFirstResponder",
-       "_setDefaultRedColor:",
-       "_setDefaultUserInfoFromURL:",
-       "_setDefaultWindowKeyViewLoop",
-       "_setDefaults:",
-       "_setDelegate:",
-       "_setDelegate:forPanel:",
-       "_setDescriptorNoCopy:",
-       "_setDeselectsWhenMouseLeavesDuringDrag:",
-       "_setDirectoryPath:",
-       "_setDisableLiveResizeImageCaching:",
-       "_setDisplayContents:usingSimpleCommandDefaults:",
-       "_setDisplayName:",
-       "_setDisplayValue:object:triggerRedisplay:",
-       "_setDistanceForVerticalArrowKeyMovement:",
-       "_setDocViewFromRead:",
-       "_setDocumentDictionaryName:",
-       "_setDocumentEdited:",
-       "_setDocumentView:",
-       "_setDocumentWindow:",
-       "_setDontWarnMessage:",
-       "_setDragAndDropCharRange:",
-       "_setDragAndDropCharRanges:",
-       "_setDragGlyphRange:",
-       "_setDragRef:",
-       "_setDraggingDocumentView:",
-       "_setDraggingMarker:",
-       "_setDrawBackground:",
-       "_setDrawDelegate:",
-       "_setDrawerEdge:",
-       "_setDrawingBackground:",
-       "_setDrawingInRevealover:",
-       "_setDrawingToHeartBeatWindow:",
-       "_setDrawsBaseline:",
-       "_setDrawsOwnDescendants:",
-       "_setDynamicToolTipsEnabled:",
-       "_setEditingTextView:",
-       "_setEnableDelegateNotifications:",
-       "_setEnableFlippedImageFix:",
-       "_setEnabled:",
-       "_setEnabledFileTypes:",
-       "_setEncounteredCloseError:",
-       "_setEndSubelementFromDescriptor:",
-       "_setEndsTopLevelGroupingsAfterRunLoopIterations:",
-       "_setEntity:",
-       "_setEntityTag:",
-       "_setError:",
-       "_setEventMask:",
-       "_setEventRef:",
-       "_setExcludedFromVisibleWindowList:",
-       "_setExpectedContentLength:",
-       "_setExplicitlyCannotAdd:insert:remove:",
-       "_setExplicitlyCannotAdd:remove:",
-       "_setFault:",
-       "_setFaultHandler:",
-       "_setFetchIndex:",
-       "_setFileSpecifier:",
-       "_setFileURL:",
-       "_setFinalSlideLocation:",
-       "_setFirstColumnTitle:",
-       "_setFloat:ifNoAttributeForKey:",
-       "_setFocusForCell:forView:withFrame:withFocusRingFrame:withInset:",
-       "_setFocusRingNeedsDisplay",
-       "_setFocusRingNeedsDisplayIfNecessary",
-       "_setFont:",
-       "_setFont:forCell:",
-       "_setFontPanel:",
-       "_setForceActiveControls:",
-       "_setForceFixAttributes:",
-       "_setForceItemsToBeMinSize:",
-       "_setForceNotKeyWindowForInputContext:",
-       "_setForceOriginalFontBaseline:",
-       "_setFormInfoFromRequest:",
-       "_setFrame:",
-       "_setFrameAfterMove:",
-       "_setFrameAutosaveName:changeFrame:",
-       "_setFrameCommon:display:stashSize:",
-       "_setFrameFromString:force:",
-       "_setFrameNeedsDisplay:",
-       "_setFrameSavedUsingTitle:",
-       "_setFrameSize:",
-       "_setFrameSize:forceScroll:",
-       "_setFrameUsingName:domain:force:",
-       "_setGenericValue:forKey:withIndex:flags:",
-       "_setGroupIdentifier:",
-       "_setHasBorder:",
-       "_setHasCustomSettings:",
-       "_setHasHorizontalScroller:",
-       "_setHasObservers:",
-       "_setHasRetainedStoreResources:",
-       "_setHasSeenRightToLeft:",
-       "_setHaveNoIconForIconURL:",
-       "_setHelpCursor:",
-       "_setHelpKey:forObject:",
-       "_setHidden:",
-       "_setHiddenExtension:",
-       "_setHideWithoutResizingWindowHint:",
-       "_setHidesOnDeactivateInCache:forWindow:",
-       "_setHighlighted:displayNow:",
-       "_setHighlightedRowsFromNodes:maintainFirstVisibleRow:",
-       "_setHorizontalScrollerHidden:",
-       "_setIcon:forIconURL:",
-       "_setIconRef:",
-       "_setIconURL:",
-       "_setIconURL:forURL:",
-       "_setIconURL:withType:",
-       "_setIgnoreForKeyViewLoop:",
-       "_setIgnoringScrolling:",
-       "_setImage:",
-       "_setImage:fromWindow:",
-       "_setImageAndNotifyTarget:",
-       "_setImageForState",
-       "_setImageNumber:",
-       "_setImpactsWindowMoving:",
-       "_setInScaledWindow:",
-       "_setIndex:",
-       "_setIndicatorImage:",
-       "_setInitialColumnContentSizeOfColumn:",
-       "_setInitialFirstResponder:autoGenerated:",
-       "_setInitialNameFieldContentsFromPosixName:",
-       "_setInitialized:",
-       "_setInitiatedDrag:",
-       "_setInputs:",
-       "_setInsertionPointDisabled:",
-       "_setInstance:forIdentifier:",
-       "_setInt:ifNoAttributeForKey:",
-       "_setIntegerValue:forKey:",
-       "_setInteriorNextKeyView:",
-       "_setInternalLoadDelegate:",
-       "_setInverseManyToMany:",
-       "_setInverseRelationship:",
-       "_setIsActive:",
-       "_setIsClientRedirect:",
-       "_setIsEditable:",
-       "_setIsExpanded:",
-       "_setIsGrabber:",
-       "_setIsSmallCapsRenderer:",
-       "_setIsWhite:",
-       "_setItemViewer:",
-       "_setJavaClassesLoaded",
-       "_setJobDisposition:savePath:inPrintSession:printSettings:",
-       "_setJustOpenedForTargetedLink:",
-       "_setKeepCacheWindow:",
-       "_setKeyCellAtRow:column:",
-       "_setKeyCellFromBottom",
-       "_setKeyCellFromTop",
-       "_setKeyCellNeedsDisplay",
-       "_setKeySegment:",
-       "_setKeyViewGroupBoundaryNeedsRecalc:",
-       "_setKeyViewLoopNeedsRecalc:",
-       "_setKeyViewRedirectionDisabled:",
-       "_setKeyViewSelectionDirection:",
-       "_setKeyWindow:",
-       "_setKeyboardFocusRingNeedsDisplay",
-       "_setKeyboardFocusRingNeedsDisplayDuringLiveResize",
-       "_setKeyboardFocusRingNeedsDisplayForTabViewItem:",
-       "_setKeyboardLoopNeedsUpdating:",
-       "_setKind:",
-       "_setKnobThickness:usingInsetRect:",
-       "_setLabel:",
-       "_setLang:",
-       "_setLastCheckedRequest:",
-       "_setLastDragDestinationOperation:",
-       "_setLastGuess:",
-       "_setLastSnapshot:",
-       "_setLastVisitedTimeInterval:",
-       "_setLazyDestinationEntityName:",
-       "_setLength:ofStatusItemWindow:",
-       "_setLevel",
-       "_setLevelForAllDrawers",
-       "_setLineBorderColor:",
-       "_setLineBreakMode:",
-       "_setLineColor:",
-       "_setLiveResize:",
-       "_setLiveResizeImageCacheingEnabled:",
-       "_setLoadType:",
-       "_setLoadedCookiesWithoutSaving:",
-       "_setLoading:",
-       "_setLocalName:",
-       "_setLocalizationPolicy:",
-       "_setLocationTemporary:",
-       "_setMIMEType:",
-       "_setMainDocumentError:",
-       "_setMainWindow:",
-       "_setMaintainingInverse:",
-       "_setManagedObjectContext:",
-       "_setManagedObjectModel:",
-       "_setMap:",
-       "_setMarginHeight:",
-       "_setMarginWidth:",
-       "_setMarkedText:selectedRange:forInputManager:",
-       "_setMarkedWidth:",
-       "_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:",
-       "_setMultipleValue:forKey:atIndex:",
-       "_setMultipleValue:forKey:atIndexPath:",
-       "_setMultipleValue:forKeyPath:atIndex:",
-       "_setMultipleValue:forKeyPath:atIndexPath:",
-       "_setName:",
-       "_setNameFieldContentsFromPosixName:",
-       "_setNeedToFlushGlyph:",
-       "_setNeedsDisplay:",
-       "_setNeedsDisplayBeginingAtColumn:",
-       "_setNeedsDisplayForColumn:draggedDelta:",
-       "_setNeedsDisplayForDropCandidateItem:childIndex:mask:",
-       "_setNeedsDisplayForDropCandidateRow:operation:mask:",
-       "_setNeedsDisplayForFirstResponderChange",
-       "_setNeedsDisplayForItemIdentifierSelection:",
-       "_setNeedsDisplayForItemViewerSelection:",
-       "_setNeedsDisplayForItemViewers:movingFromFrames:toFrames:",
-       "_setNeedsDisplayForSelectedCells",
-       "_setNeedsDisplayForSortingChangeInColumn:",
-       "_setNeedsDisplayForTabViewItem:",
-       "_setNeedsDisplayIfTopLeftChanged",
-       "_setNeedsDisplayInColumn:",
-       "_setNeedsDisplayInColumn:includeHeader:",
-       "_setNeedsDisplayInColumn:row:",
-       "_setNeedsDisplayInColumnRange:includeHeader:",
-       "_setNeedsDisplayInPrimarySortColumns",
-       "_setNeedsDisplayInPrimarySortColumnsIfNecessary",
-       "_setNeedsDisplayInRectForLiveResize:",
-       "_setNeedsDisplayInRow:",
-       "_setNeedsDisplayInRow:column:",
-       "_setNeedsHighlightedTextHint:",
-       "_setNeedsModeConfiguration:",
-       "_setNeedsModeConfiguration:itemViewers:",
-       "_setNeedsRecalc",
-       "_setNeedsRedrawBeforeFirstLiveResizeCache:",
-       "_setNeedsStateUpdate:",
-       "_setNeedsTiling",
-       "_setNeedsToRemoveFieldEditor:",
-       "_setNeedsToResetDragMargins:",
-       "_setNeedsToUseHeartBeatWindow:",
-       "_setNeedsViewerLayout:",
-       "_setNeedsViewerLayout:itemViewers:",
-       "_setNeedsZoom:",
-       "_setNewPreferedColumnWidth:",
-       "_setNextKeyBindingManager:",
-       "_setNextKeyViewFor:toNextKeyView:",
-       "_setNextSizeAndDisplayMode",
-       "_setNextToolbarSizeAndDisplayMode:",
-       "_setNoVerticalAutosizing:",
-       "_setNonactivatingPanel:",
-       "_setNumVisibleColumns:",
-       "_setNumVisibleSwatchRows:",
-       "_setNumberOfRowsCacheIsValid:",
-       "_setObject:",
-       "_setObject:forAttributeKey:",
-       "_setObject:forBothSidesOfRelationshipWithKey:",
-       "_setObject:forProperty:usingDataSize:",
-       "_setObject:ifNoAttributeForKey:",
-       "_setObject:inReceiver:",
-       "_setObjectHandler:",
-       "_setObjectID:",
-       "_setObjects:",
-       "_setOneShotIsDelayed:",
-       "_setOpenRecentMenu:",
-       "_setOptions:forBinding:",
-       "_setOptions:withBindingInfo:",
-       "_setOrderDependency:",
-       "_setOrientation:inPageFormat:",
-       "_setOriginalFileInfoFromFileAttributes:",
-       "_setOriginalSnapshot:",
-       "_setOriginalString:range:",
-       "_setOverflowHeaderCellPrototype:",
-       "_setOverrideEncoding:",
-       "_setOwnedByPopUp:",
-       "_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:",
-       "_setPreviousNibBindingConnector:",
-       "_setPreviousSizeAndDisplayMode",
-       "_setPreviousToolbarSizeAndDisplayMode:",
-       "_setPrimaryLoadComplete:",
-       "_setPrimitiveValue:forKey:",
-       "_setPrintEventRetrofitInfo:",
-       "_setPrintSettings:",
-       "_setPrinter:inPrintSession:",
-       "_setPrinting:minimumPageWidth:maximumPageWidth:adjustViewSize:",
-       "_setProperty:forKey:",
-       "_setProvisionalDataSource:",
-       "_setRTFDFileWrapper:",
-       "_setReadOnly:",
-       "_setRealDelegate:",
-       "_setRealTitle:",
-       "_setRealm:forURL:",
-       "_setReceiveHandlerRef:",
-       "_setRecents:",
-       "_setRegisteredForChildNotifications:",
-       "_setRegistryAttributes:",
-       "_setRelativeOrdering:",
-       "_setReorderResizeImageCache:",
-       "_setRepresentation:",
-       "_setRepresentationListCache:",
-       "_setRepresentedFilename:",
-       "_setRequest:",
-       "_setResizeControlNeedsDisplay",
-       "_setResizeWeighting:",
-       "_setResourceForkReferenceNumber:",
-       "_setResponse:",
-       "_setRevealoversDirty:",
-       "_setRootNode:makeHistory:notify:",
-       "_setRotatedFromBase:",
-       "_setRotatedOrScaledFromBase:",
-       "_setRowHeaderTableColumn:",
-       "_setRowHeaderTableColumn:repositionTableColumnIfNecessary:",
-       "_setSQLType:",
-       "_setScaleFactor:",
-       "_setScriptErrorExpectedType:",
-       "_setScriptErrorFromKVCException:",
-       "_setScriptErrorOffendingObjectDescriptor:",
-       "_setScroller:",
-       "_setSelectedCell:",
-       "_setSelectedCell:atRow:column:",
-       "_setSelectedNodes:",
-       "_setSelectedScopeLocationNodes:",
-       "_setSelectionRange::",
-       "_setSelectorName:",
-       "_setServerModificationDateString:",
-       "_setShadowParameters",
-       "_setShadowStyle:",
-       "_setSharedIdentifier:",
-       "_setSheet:",
-       "_setShouldPostEventNotifications:",
-       "_setShowAlpha:andForce:",
-       "_setShowOpaqueGrowBox:",
-       "_setShowOpaqueGrowBoxForOwner:",
-       "_setShowingModalFrame:",
-       "_setShowsAllDrawing:",
-       "_setSidebarVolumesNode:favoritesNode:",
-       "_setSidebarWidth:maintainSnap:constrain:",
-       "_setSingleChild:",
-       "_setSingleValue:forKey:",
-       "_setSingleValue:forKeyPath:",
-       "_setSlotIfDefault:",
-       "_setSortable:showSortIndicator:ascending:priority:highlightForSort:",
-       "_setSpotlightedAttachment:",
-       "_setStartSubelementFromDescriptor:",
-       "_setState:",
-       "_setStatesImmediatelyInObject:mode:triggerRedisplay:",
-       "_setStoredInPageCache:",
-       "_setStringValue:forKey:",
-       "_setSubmenu:",
-       "_setSuperentity:",
-       "_setSuperview:",
-       "_setSurface:",
-       "_setTabRect:",
-       "_setTabState:",
-       "_setTabView:",
-       "_setTarget:",
-       "_setTargetProcess:",
-       "_setTextAttributeParaStyleNeedsRecalc",
-       "_setTextColorInObject:mode:compareDirectly:toTextColor:",
-       "_setTextContainer:",
-       "_setTextFieldStringValue:",
-       "_setTexturedBackground:",
-       "_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:useTrackingNum:",
-       "_setTrackingRect:inside:owner:userData:useTrackingNum:install:",
-       "_setTrackingRects",
-       "_setTrackingRects:insideList:owner:userDataList:trackingNums:count:",
-       "_setTriggeringAction:",
-       "_setUIConstraints:",
-       "_setURI:",
-       "_setURL:",
-       "_setUndoRedoInProgress:",
-       "_setUnicodeInputEventReceived:",
-       "_setUpAppKitCoercions",
-       "_setUpAppKitTranslations",
-       "_setUpDefaultTopLevelObject",
-       "_setUpFoundationCoercions",
-       "_setUpFoundationTranslations",
-       "_setUpOperation:helpedBy:",
-       "_setUpTextField:",
-       "_setUseCellFieldEditorUndo:",
-       "_setUseModalAppearance:",
-       "_setUsesQuickdraw:",
-       "_setUtilityWindow:",
-       "_setValidatedPosixName:",
-       "_setValue:forBinding:errorFallbackMessage:",
-       "_setValue:forKey:",
-       "_setValue:forKeyPath:ofObject:mode:validateImmediately:raisesForNotApplicableKeys:error:",
-       "_setValue:forKeyPath:ofObjectAtIndex:",
-       "_setValue:forKeyPath:ofObjectAtIndexPath:",
-       "_setValue:type:forParameter:",
-       "_setValueWithSelector:",
-       "_setVerticalScrollerHidden:",
-       "_setVisible:",
-       "_setVisibleInCache:forWindow:",
-       "_setVisibleRectOfColumns:",
-       "_setWaitingForCallback:",
-       "_setWantsHideOnDeactivate:",
-       "_setWantsKeyboardLoop:",
-       "_setWantsRevealovers:",
-       "_setWantsToActivate:",
-       "_setWantsToBeOnMainScreen:",
-       "_setWantsToDestroyRealWindow:",
-       "_setWantsToolbarContextMenu:",
-       "_setWebFrame:",
-       "_setWebView:",
-       "_setWidth:",
-       "_setWindow:",
-       "_setWindowContextForCurrentThread:",
-       "_setWindowDepth:",
-       "_setWindowFrameForPopUpAttachingToRect:onScreen:preferredEdge:popUpSelectedItem:",
-       "_setWindowNumber:",
-       "_setWindowTag",
-       "_setWindowsNeedUpdateForSecondaryThread:",
-       "_setWithOffset:",
-       "_setWords:inDictionary:",
-       "_setWritesCancelled:",
-       "_settings",
-       "_setup",
-       "_setupAnimationInfo",
-       "_setupBoundsForLineFragment:",
-       "_setupButtonImageAndToolTips",
-       "_setupCallbacksSavingToFile:",
-       "_setupFileListModeControl",
-       "_setupFont",
-       "_setupForWindow:",
-       "_setupHistoryControl",
-       "_setupIdle",
-       "_setupOpenPanel",
-       "_setupProfileUI",
-       "_setupRootForPrinting:",
-       "_setupRunLoopTimer",
-       "_setupSearchParts",
-       "_setupSegmentSwitchForControl:firstImage:secondImage:action:",
-       "_setupSurfaceAndStartSpinning:",
-       "_setupToolbar",
-       "_setupUI",
-       "_setupWindow",
-       "_shadowAsString:",
-       "_shadowFlags",
-       "_shadowType",
-       "_shapeMenuPanel",
-       "_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:",
-       "_shouldDeleteRange:",
-       "_shouldDispatch:invocation:sequence:coder:",
-       "_shouldDrawBorder",
-       "_shouldDrawFocus",
-       "_shouldDrawFocusIfInKeyWindow",
-       "_shouldDrawRightSeparatorInView:",
-       "_shouldDrawSelectionIndicator",
-       "_shouldDrawSelectionIndicatorForItem:",
-       "_shouldDrawTwoBitGray",
-       "_shouldEndEditingInDOMRange:",
-       "_shouldExecuteDelayedAutocomplete",
-       "_shouldForceShiftModifierWithKeyEquivalent:",
-       "_shouldHandleAsGotoForTypedString:",
-       "_shouldHaveBlinkTimer",
-       "_shouldHaveResizeCursorAtPoint:",
-       "_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:",
-       "_showBorder",
-       "_showDragError:forFilename:",
-       "_showDrawRect:",
-       "_showEffects",
-       "_showHideToolbar:resizeWindow:animate:",
-       "_showKeyboardUILoop",
-       "_showLanguagePopUp",
-       "_showOpaqueGrowBox",
-       "_showOpenHandCursor:",
-       "_showQueryProgress",
-       "_showTextColorImmediatelyInObject:mode:",
-       "_showToolTip",
-       "_showToolTip:",
-       "_showToolbar:animate:",
-       "_showToolbarWithAnimation:",
-       "_showingFocusRingAroundEnclosingScrollView:",
-       "_showsAllDrawing",
-       "_showsDontWarnAgain",
-       "_showsNode:",
-       "_sideTitlebarWidth",
-       "_sideTitlebarWidth:",
-       "_sidebarView",
-       "_signatureValid",
-       "_simpleCompletePathWithPrefix:intoString:caseSensitive:matchesIntoArray:filterTypes:",
-       "_simpleDeleteGlyphsInRange:",
-       "_simpleDescription",
-       "_simpleInsertGlyph:atGlyphIndex:characterIndex:elastic:",
-       "_simpleOverflowMenuItemClicked:",
-       "_singleFilePathValue",
-       "_singleMutableArrayValueForKey:",
-       "_singleMutableArrayValueForKeyPath:",
-       "_singleValueForKey:",
-       "_singleValueForKeyPath:",
-       "_singleValueForKeyPath:operationType:",
-       "_size",
-       "_sizeAllDrawersWithRect:",
-       "_sizeChanged",
-       "_sizeDocumentViewToColumnsAndAlignIfNecessary:",
-       "_sizeDownIfPossible",
-       "_sizeHeightBucket:withSize:toFitSize:",
-       "_sizeHorizontallyToFit",
-       "_sizeListChanged:",
-       "_sizeMatrixOfColumnToFit:",
-       "_sizeModeIsValidForCurrentDisplayMode:",
-       "_sizeOfTitlebarFileButton",
-       "_sizeRowHeaderToFitIfNecessary",
-       "_sizeTableColumnsToFitForAutoresizingWithStyle:",
-       "_sizeTableColumnsToFitForColumnResizeWithStyle:",
-       "_sizeTableColumnsToFitWithStyle:",
-       "_sizeTableColumnsToFitWithStyle:forceExactFitIfPossible:",
-       "_sizeToFit:",
-       "_sizeToFitColumn:withEvent:",
-       "_sizeToFitColumn:withSizeToFitType:",
-       "_sizeToFitColumnMenuAction:",
-       "_sizeToFitForUserColumnResize",
-       "_sizeVerticalyToFit",
-       "_sizeWindowForPicker:",
-       "_sizeWithRect:",
-       "_sizeWithSize:",
-       "_sizeWithSize:attributedString:",
-       "_smallCapsFont",
-       "_smallCapsRenderer",
-       "_smallEncodingGlyphIndexForCharacterIndex:startOfRange:okToFillHoles:",
-       "_snapPositionConstrainedResizeSplitView:",
-       "_snapSplitPosition:forItem:snapIndex:",
-       "_sniffForContentType",
-       "_sortCollections",
-       "_sortDescriptors",
-       "_sortNodes:",
-       "_sortObjects:",
-       "_sortOrderAutoSaveNameWithPrefix",
-       "_sortedAETEElementClassDescriptions:",
-       "_sortedAETEPropertyDescriptions:",
-       "_sortedEdges",
-       "_spanClassForAttributes:inParagraphClass:spanClass:flags:",
-       "_speakingString",
-       "_specialServicesMenuUpdate",
-       "_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",
-       "_startHitTracking:",
-       "_startInsertionOptimization",
-       "_startInsertionOptimizationWithDragSource:",
-       "_startLiveResize",
-       "_startLiveResizeAsTopLevel",
-       "_startLiveResizeCacheOK:",
-       "_startLiveResizeForAllDrawers",
-       "_startLoadWithRequest:delegate:",
-       "_startLoading",
-       "_startLoading:",
-       "_startMove",
-       "_startObservingModelObject:",
-       "_startObservingSelectionIfNecessary",
-       "_startObservingUndoManagerNotifications",
-       "_startOrContinueAnimationIfNecessary",
-       "_startRunMethod",
-       "_startRunWithDuration:firingInterval:",
-       "_startRunningNonBlocking",
-       "_startSQL:",
-       "_startSheet",
-       "_startSound",
-       "_startTable",
-       "_startTableCell",
-       "_startTearingOffWithScreenPoint:",
-       "_startTimer:",
-       "_startingWindowForSendAction:",
-       "_startingWithDocument:continueSavingAndClosingAll:contextInfo:",
-       "_stashCollapsedOrigin:",
-       "_stashOrigin:",
-       "_stashedOrigin",
-       "_state",
-       "_stateMarkerForValue:",
-       "_statusItemWithLength:withPriority:",
-       "_stepInUpDirection:",
-       "_stepperCell",
-       "_stepperCellValueChanged:",
-       "_stopAnimation",
-       "_stopAnimation:",
-       "_stopAnimationWithWait:",
-       "_stopAutoExpandingItemFlash",
-       "_stopAutoscrollTimer",
-       "_stopDraggingUpdates",
-       "_stopGotoWithCode:",
-       "_stopLoading",
-       "_stopLoadingInternal",
-       "_stopLoadingWithError:",
-       "_stopModal:",
-       "_stopObservingModelObject:",
-       "_stopObservingSelectionIfNecessary",
-       "_stopObservingUndoManagerNotifications",
-       "_stopPeriodicEventsForSource:",
-       "_stopRun",
-       "_stopSearchTimer",
-       "_stopTearingOff",
-       "_stopTimerIfRunningForToolTip:",
-       "_stopsValidationAfterFirstError:",
-       "_storeClassForStoreType:",
-       "_storeCurrentDirectory",
-       "_storeExpandedFrameSize",
-       "_storeExpandedState",
-       "_storeFileListMode",
-       "_storeMetadataForSaving",
-       "_storeNewColorInColorWell:",
-       "_storeOrderedByFileProperty:orderedAscending:",
-       "_storeRootDirectory",
-       "_storeTypeForStore:",
-       "_storeUserSetHideExtensionButtonState",
-       "_storeZone",
-       "_stretchWindowIfNecessaryToFitResizedColumnWithInfo:resizeColumnDelta:",
-       "_string:objectValueTokenRangeForIndex:",
-       "_string:tokenRangeForIndex:",
-       "_string:tokenizeIndex:inTextStorage:",
-       "_stringByReplacingChar:withChar:inString:",
-       "_stringByResolvingSymlinksInPathUsingCache:",
-       "_stringByStandardizingPathUsingCache:",
-       "_stringByTranslatingAliasDescriptor:toType:inSuite:",
-       "_stringByTranslatingFSSpecDescriptor:toType:inSuite:",
-       "_stringByTranslatingTextDescriptor:toType:inSuite:",
-       "_stringByTrimmingLeadingDot",
-       "_stringForDatePickerElement:",
-       "_stringForEditing",
-       "_stringForNode:property:",
-       "_stringRepresentation",
-       "_stringSearchParametersForListingViews",
-       "_stringToWrite",
-       "_stringValueForKey:",
-       "_stringWithData:",
-       "_stringWithDocumentTypeStringAndMarkupString:",
-       "_stringWithSavedFrame",
-       "_stripAttachmentCharactersFromAttributedString:",
-       "_stripAttachmentCharactersFromString:",
-       "_styleDeclarationImpl",
-       "_styleDeclarationWithImpl:",
-       "_styleElementImpl",
-       "_styleForAttributeChange:",
-       "_styleFromColorPanelWithSelector:",
-       "_styleFromFontAttributes:",
-       "_styleFromFontManagerOperation",
-       "_styleRuleImpl",
-       "_styleSheetListImpl",
-       "_styleSheetListWithImpl:",
-       "_subImageFocus",
-       "_subclassDescriptionsForDescription:",
-       "_subclassManagesData",
-       "_subentitiesIncludes:",
-       "_subentityNamed:",
-       "_subpredicateDescription:",
-       "_subresourceURLs",
-       "_subsetDescription",
-       "_substituteEntityAndProperty:inString:",
-       "_substituteFontForCharacters:length:families:",
-       "_substituteFontForString:families:",
-       "_subtextStorageFromRange:",
-       "_subtractColor:",
-       "_subtreeDescriptionWithDepth:",
-       "_subviews",
-       "_subviewsExcludingHiddenViews",
-       "_suggestCompletionsForPartialWordRange:inString:language:",
-       "_suggestGuessesForWord:inLanguage:",
-       "_suggestedControllerKeyForController:binding:",
-       "_suiteDescriptions",
-       "_suiteDescriptionsByName",
-       "_sumForKeyPath:",
-       "_superviewClipViewFrameChanged:",
-       "_supportedMIMETypes",
-       "_supportsGetValueWithNameForKey:perhapsByOverridingClass:",
-       "_supportsGetValueWithUniqueIDForKey:perhapsByOverridingClass:",
-       "_supportsMinAndMax",
-       "_supportsVariableHeightRows",
-       "_supposedNumberOfItems",
-       "_suppressNotification",
-       "_suppressNotification:",
-       "_surface",
-       "_surfaceBounds",
-       "_surfaceDidComeBack:",
-       "_surfaceNeedsUpdate:",
-       "_surfaceWillGoAway:",
-       "_suspendIfTopHandling:",
-       "_suspendLoading",
-       "_swapFileListKeyViewFrom:to:",
-       "_sweeperInterval",
-       "_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",
-       "_synchronizeExpandedNodesWithOutlineExpandedItems",
-       "_synchronizeTextView:",
-       "_synchronizeTitlesAndColumnsViewVisibleRect",
-       "_synchronizeTitlesAndColumnsViewWidth",
-       "_synchronizeWindowTitles",
-       "_synchronizeWithPeerBindersInArray:",
-       "_systemColorChanged:",
-       "_systemColorsChanged:",
-       "_tabHeight",
-       "_tabOrientation",
-       "_tabRect",
-       "_tabRectAdjustedForOverlap:",
-       "_tabRectForTabViewItem:",
-       "_tabViewWillRemoveFromSuperview",
-       "_tableBinderForTableView:",
-       "_tableBinderForTableViewSupportsSorting:",
-       "_tableCaptionElementImpl",
-       "_tableCaptionElementWithImpl:",
-       "_tableCellElementImpl",
-       "_tableCellElementWithImpl:",
-       "_tableColElementImpl",
-       "_tableElementImpl",
-       "_tableElementWithImpl:",
-       "_tableRowElementImpl",
-       "_tableSectionElementImpl",
-       "_tableSectionElementWithImpl:",
-       "_tableView:willAddTableColumn:",
-       "_tableView:willRemoveTableColumn:",
-       "_takeApplicationMenuIfNeeded:",
-       "_takeColorFrom:andSendAction:",
-       "_takeColorFromAndSendActionIfContinuous:",
-       "_takeColorFromDoAction:",
-       "_takeFocus",
-       "_takeValuesFromTextBlock:",
-       "_target",
-       "_targetAndArgumentsAcceptableForMode:",
-       "_targetBinding",
-       "_targetBindingBound",
-       "_taskNowMultiThreaded:",
-       "_tempHide:relWin:",
-       "_tempHideHODWindow",
-       "_tempUnhideHODWindow",
-       "_temporaryAttribute:atCharacterIndex:effectiveRange:",
-       "_temporaryAttribute:atCharacterIndex:longestEffectiveRange:inRange:",
-       "_temporaryAttributesAtCharacterIndex:longestEffectiveRange:inRange:",
-       "_temporaryFilename:",
-       "_termOneShotWindow",
-       "_termWindowIfOwner",
-       "_termedDescriptionWithTabCount:propertyKindName:",
-       "_terminate",
-       "_terminate:",
-       "_terminateSendShould:",
-       "_testPartUsingDestinationFloatValue:",
-       "_testWithComparisonOperator:object1:object2:",
-       "_textAreaElementImpl",
-       "_textAttributes",
-       "_textColorWithMode:",
-       "_textDidEndEditing:",
-       "_textDimColor",
-       "_textFieldWithStepperCellSize",
-       "_textFieldWithStepperKeyDown:inRect:ofView:",
-       "_textFieldWithStepperTrackMouse:inRect:ofView:untilMouseUp:",
-       "_textHighlightColor",
-       "_textImpl",
-       "_textSizeMultiplierChanged",
-       "_textSizeMultiplierFromWebView",
-       "_textTransform",
-       "_textViewOwnsTextStorage",
-       "_textureImage",
-       "_texturePattern",
-       "_theMap",
-       "_themeContentRect",
-       "_themeTabAndBarArea",
-       "_threadContext",
-       "_throwIfNotEditable",
-       "_tidyWithData:error:isXML:",
-       "_tile",
-       "_tile:",
-       "_tileAndRedisplayAll",
-       "_tileContinuousScrollingBrowser",
-       "_tileNonContinuousScrollingBrowser",
-       "_tileTitlebarAndRedisplay:",
-       "_timeOfLastCompletedLoad",
-       "_timedAdjustTextControl:",
-       "_timestamp",
-       "_title",
-       "_titleCellHeight",
-       "_titleCellHeight:",
-       "_titleCellOfColumn:",
-       "_titleCellSize",
-       "_titleCellSizeForTitle:styleMask:",
-       "_titleElementImpl",
-       "_titleRectForCellFrame:",
-       "_titleRectForTabViewItem:",
-       "_titleSizeWithSize:",
-       "_titlebarHeight",
-       "_titlebarHeight:",
-       "_titlebarTitleRect",
-       "_toManyInformation",
-       "_toOneRange",
-       "_toggleBold",
-       "_toggleCollapsedSplitView",
-       "_toggleFrameAutosaveEnabled:",
-       "_toggleItalic",
-       "_toggleLogging",
-       "_toggleOrderedFrontMost:",
-       "_toggleOrderedFrontMostWillOrderOut",
-       "_toggleSelectAnyValidResponderOverride",
-       "_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",
-       "_toolbarFrameSizeChanged:oldSize:",
-       "_toolbarIsHidden",
-       "_toolbarIsInTransition",
-       "_toolbarIsShown",
-       "_toolbarItemCommonInit",
-       "_toolbarPatternPhase",
-       "_toolbarPillButtonClicked:",
-       "_toolbarRegisterForNotifications",
-       "_toolbarUnregisterForNotifications",
-       "_toolbarView",
-       "_toolbarViewCommonInit",
-       "_tooltipForColorPicker:",
-       "_tooltipStringForCell:column:row:point:trackingRect:",
-       "_topContainerView",
-       "_topCornerSize",
-       "_topHandling",
-       "_topLeftResizeCursor",
-       "_topMenuView",
-       "_topRightResizeCursor",
-       "_topmostChild",
-       "_totalAdvancementForNativeGlyphs:count:",
-       "_totalHeightOfTableView",
-       "_totalMinimumTabsLengthWithOverlap:",
-       "_totalNominalTabsLengthWithOverlap:",
-       "_totalTabsLength:overlap:",
-       "_trackAndModifySelectionWithEvent:onColumn:stopOnReorderGesture:",
-       "_trackAttachmentClick:characterIndex:glyphIndex:attachmentCell:",
-       "_trackButton:forEvent:inRect:ofView:",
-       "_trackMouse:",
-       "_trackSelectedItemMenu",
-       "_trackingHandlerRef",
-       "_trackingSegment",
-       "_transferCache:",
-       "_transferWindowOwnership",
-       "_transform",
-       "_transformDstRect:clipRect:",
-       "_transformerRegistry",
-       "_transitionToCommitted:",
-       "_transitionToLayoutAcceptable",
-       "_transparency",
-       "_transparentBackground",
-       "_trapezoidForRun:style:atPoint:",
-       "_trashContainsOrIs:",
-       "_traverseLibXML2Node:depth:",
-       "_traverseNode:depth:",
-       "_traverseToSubmenu",
-       "_traverseToSupermenu",
-       "_treeHasDragTypes",
-       "_treeWalkerImpl",
-       "_treeWalkerWithImpl:filter:",
-       "_triggeringAction",
-       "_trimRecentSearchList",
-       "_trimWithCharacterSet:",
-       "_truncateToSizeLimit:",
-       "_tryChallenge:",
-       "_tryCookieLookup:path:secure:result:",
-       "_tryDrop:dropItem:dropChildIndex:",
-       "_tryDrop:dropRow:dropOperation:",
-       "_tryToSendDoubleAction",
-       "_tryUserDrillIntoHighlightedNode",
-       "_tryUserMoveToParentNode",
-       "_type",
-       "_typeDescription",
-       "_typeDescriptionForName:",
-       "_typeDescriptionForName:suiteName:isValid:",
-       "_typeDescriptionsFromEnumerationImplDeclarations:presoDeclarations:valueTypeDeclarations:",
-       "_typeDictForType:",
-       "_typeIdentifierFromCarbonCode:",
-       "_typeIdentifierFromCocoaName:",
-       "_types",
-       "_typesForDocumentClass:includeEditors:includeViewers:includeExportable:",
-       "_typesIncludingConversionsFromTypes:",
-       "_typesetterBehavior",
-       "_typographicLeading",
-       "_typographyPanel",
-       "_uListElementImpl",
-       "_umask",
-       "_unbind:existingNibConnectors:connectorsToRemove:connectorsToAdd:",
-       "_uncachedRectHeightOfRow:",
-       "_uncachedSize",
-       "_under",
-       "_underlineIsOn",
-       "_underlineStyleForArgument:",
-       "_undoDelete:",
-       "_undoManagerCheckpoint:",
-       "_undoManagerForFieldEditor:defaultUndoManager:",
-       "_undoRedoAttributedSubstringFromRange:",
-       "_undoRedoTextOperation:",
-       "_undoStack",
-       "_undoUpdate:",
-       "_unformattedAttributedStringValue:",
-       "_ungrowFrameForDropGapStyle",
-       "_unhide",
-       "_unhideAllDrawers",
-       "_unhideChildren",
-       "_unhideSheet",
-       "_uninstallActionButtonIfNecessary",
-       "_unionOfArraysForKeyPath:",
-       "_unionOfObjectsForKeyPath:",
-       "_uniqueNameForNewSubdocument:",
-       "_uniquer",
-       "_unitsForClientLocation:",
-       "_unitsForRulerLocation:",
-       "_unlock",
-       "_unlockFirstResponder",
-       "_unlockQuickDrawPort",
-       "_unlockViewHierarchyForDrawing",
-       "_unlockViewHierarchyForModification",
-       "_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:",
-       "_unregisterViewClassAndRepresentationClassForMIMEType:",
-       "_unresolveTypeAlias:",
-       "_unsetFinalSlide",
-       "_unsetInputs",
-       "_unshowOpenHandCursor:",
-       "_untitledDocumentNumber",
-       "_untitledNumberForDocument:",
-       "_update",
-       "_updateAllViews",
-       "_updateAntialiasingThreshold",
-       "_updateAppleMenu:",
-       "_updateAttributes",
-       "_updateAutosavedRecents:",
-       "_updateAutoscrollingStateWithTrackingViewPoint:event:",
-       "_updateButtonState",
-       "_updateButtons",
-       "_updateCell",
-       "_updateCellIfNotEditing",
-       "_updateCellImage:",
-       "_updateCommandDisplayWithRecognizer",
-       "_updateContent",
-       "_updateContentsIfNecessary",
-       "_updateCrayonsFromColorList",
-       "_updateCreatedTime:",
-       "_updateDataCellControlView",
-       "_updateDateColumnDetailLevelWidths",
-       "_updateDateColumnDetailLevels",
-       "_updateDefaultState:forCredential:protectionSpace:",
-       "_updateDependenciesWithPeerBinders:",
-       "_updateDocumentMetadata",
-       "_updateDragInsertion:",
-       "_updateDragInsertionIndicatorWith:",
-       "_updateDraggingInfo:dragInside:",
-       "_updateDrawer:withVisibilityState:",
-       "_updateDrawsBackground",
-       "_updateEnabled",
-       "_updateExpansionButtonEnabledState",
-       "_updateExpirationTimer:",
-       "_updateFileDatabase",
-       "_updateFileNamesForChildren",
-       "_updateFilterPredicate:",
-       "_updateFirstItemIfNecessary",
-       "_updateFocusRing",
-       "_updateFontPanel",
-       "_updateForEditedMovie:",
-       "_updateForLiveResizeWithOldSize:",
-       "_updateForVersion:",
-       "_updateFrameWidgets",
-       "_updateFromDeltas:",
-       "_updateFromPath:checkOnly:exists:",
-       "_updateFromSnapshot:",
-       "_updateGlyphEntryForCharacter:glyphID:font:",
-       "_updateHeaderCellControlView",
-       "_updateHideExtensionButtonStateFromNameFieldContents",
-       "_updateHighlightedItemWithTrackingViewPoint:event:",
-       "_updateIconDatabaseWithURL:",
-       "_updateInputManagerState",
-       "_updateInvalidatedObjectValue:",
-       "_updateKeychainItem:",
-       "_updateKnownNotVisibleAppleMenu:",
-       "_updateLabel",
-       "_updateLastEditingAndFocusRingFrame",
-       "_updateLastUncollapsedSidebarWidth",
-       "_updateLengthAndSelectedRange:",
-       "_updateLoading",
-       "_updateMenuForClippedItems",
-       "_updateMenuItemIcon:",
-       "_updateMouseTracking",
-       "_updateMouseoverWithEvent:",
-       "_updateMouseoverWithFakeEvent",
-       "_updateNameFieldContentsFromHideExtensionButtonState",
-       "_updateNewFolderButtonEnabledState",
-       "_updateNodeList:byAddingNode:",
-       "_updateNodeList:byRemovingNode:sendPrepareMessageWithParentNode:",
-       "_updateNodeList:forChangedProperty:ofNode:",
-       "_updateNumberOfTitleCellsIfNecessary",
-       "_updateNumberOfTitleCellsIfNecessary:",
-       "_updateObject:observedController:observedKeyPath:context:",
-       "_updateObservingRegistration:",
-       "_updateOkButtonEnabledState",
-       "_updateOkButtonEnabledStateAndErrorMessage",
-       "_updateParagraphStyleCache:",
-       "_updatePlaceholdersForBindingInfo:",
-       "_updateProxySettings",
-       "_updateRulerlineForRuler:oldPosition:newPosition:vertical:",
-       "_updateSearchMenu",
-       "_updateSeekingSubmenuWithScreenPoint:viewPoint:event:",
-       "_updateSelectionForInputManager",
-       "_updateSelectionIndexPaths:",
-       "_updateSelectionIndexes:",
-       "_updateSizeAndLocation",
-       "_updateSortDescriptors:",
-       "_updateSubfieldStringsForDateChange",
-       "_updateSubmenuKnownStale:",
-       "_updateTable",
-       "_updateTableColumn",
-       "_updateTableColumn:withWidth:",
-       "_updateTableRow",
-       "_updateTearOffPositionWithScreenPoint:",
-       "_updateTextSizeMultiplier",
-       "_updateTextViewWidth",
-       "_updateToNewPrefs:",
-       "_updateUIToMatchCachedValues",
-       "_updateUnprocessedOwnDestinations:",
-       "_updateUsageForTextContainer:addingUsedRect:",
-       "_updateWebCoreSettingsFromPreferences:",
-       "_updateWidgets",
-       "_updateWindow:withVisibilityState:",
-       "_updateWindow:withWidth:height:",
-       "_updateWindowsUsingCache",
-       "_updatedItemViewsForChildrenOfContainerNodes:",
-       "_useErrorPresenter:",
-       "_useFSRefsEvenOnPathBasedFileSystems",
-       "_useIconNamed:from:",
-       "_usePolicy:",
-       "_useSharedKitWindow:rect:",
-       "_useSimpleTrackingMode",
-       "_useSquareToolbarSelectionHighlight",
-       "_userCanChangeSelection",
-       "_userCanEditTableColumn:row:",
-       "_userCanMoveColumn:toColumn:",
-       "_userCanSelectAndEditTableColumn:row:",
-       "_userCanSelectColumn:byExtendingSelection:",
-       "_userCanSelectRow:byExtendingSelection:",
-       "_userChangeSelection:fromAnchorRow:toRow:lastExtensionRow:selecting:",
-       "_userClickOrKeyInColumnShouldMaintainColumnPosition",
-       "_userData",
-       "_userDeselectColumn:",
-       "_userDeselectRow:",
-       "_userInsertItemWithItemIdentifier:atIndex:",
-       "_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:",
-       "_usesCorrectContentSize",
-       "_usesCustomTrackImage",
-       "_usesFastJavaBundleSetup",
-       "_usesPageCache",
-       "_usesProgrammingLanguageBreaks",
-       "_usesScreenFonts",
-       "_usesToolTipsWhenTruncated",
-       "_usingAlternateHighlightColorWithFrame:inView:",
-       "_usingToolbarShowHideWeightingOptimization",
-       "_validDestinationForDragsWeInitiate",
-       "_validFrameForResizeFrame:fromResizeEdge:",
-       "_validIndexes:indexType:",
-       "_validItemViewerBounds",
-       "_validItemViewerBoundsAssumingClipIndicatorNotShown",
-       "_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:",
-       "_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",
-       "_valueBuffer",
-       "_valueByTranslatingOSAErrorRangeDescriptor:toType:inSuite:",
-       "_valueClass",
-       "_valueClass:",
-       "_valueClassIsSortableWithBinding:",
-       "_valueForBindingWithResolve:mode:",
-       "_valueForBindingWithoutResolve:mode:",
-       "_valueForKey:",
-       "_valueForKey:withInputs:",
-       "_valueForKeyPath:ofObject:mode:raisesForNotApplicableKeys:",
-       "_valueForKeyPath:ofObjectAtIndex:",
-       "_valueForKeyPath:ofObjectAtIndexPath:",
-       "_valueForOptionalCocoaAttributeKey:fromElement:",
-       "_valueForParameter:",
-       "_valueForRequiredCocoaAttributeKey:fromElement:",
-       "_valueImpl",
-       "_valueListImpl",
-       "_valueOfType:",
-       "_valueTransformerNameForBinding:",
-       "_valueTypeForParameter:",
-       "_valueWithImpl:",
-       "_valueWithOperatorKeyPath:",
-       "_variableValueInBindings:",
-       "_verifyDataIsPICT:",
-       "_verifyDefaultButtonCell:",
-       "_verifyNoChangesToReadonlyEntity:",
-       "_verifySelectionIsOK",
-       "_verticalDistanceForLineScroll",
-       "_verticalDistanceForPageScroll",
-       "_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:",
-       "_waitForLoadThreadSetup",
-       "_wakeup",
-       "_wantsDeviceDependentEventModifierFlags",
-       "_wantsFiles:",
-       "_wantsHeartBeat",
-       "_wantsHideOnDeactivate",
-       "_wantsKeyboardLoop",
-       "_wantsLiveResizeToUseCachedImage",
-       "_wantsRevealoverAtColumn:row:",
-       "_wantsRevealovers",
-       "_wantsToActivate",
-       "_wantsToDestroyRealWindow",
-       "_wantsToolTipAtColumn:row:",
-       "_wantsToolbarContextMenu",
-       "_wasFirstResponderAtMouseDownTime:",
-       "_wasRedirectedToRequest:redirectResponse:",
-       "_webArchiveClass",
-       "_webDataRequestBaseURL",
-       "_webDataRequestData",
-       "_webDataRequestEncoding",
-       "_webDataRequestExternalRequest",
-       "_webDataRequestExternalURL",
-       "_webDataRequestForData:MIMEType:textEncodingName:baseURL:unreachableURL:",
-       "_webDataRequestMIMEType",
-       "_webDataRequestParametersForReading",
-       "_webDataRequestParametersForWriting",
-       "_webDataRequestSetBaseURL:",
-       "_webDataRequestSetData:",
-       "_webDataRequestSetEncoding:",
-       "_webDataRequestSetMIMEType:",
-       "_webDataRequestSetUnreachableURL:",
-       "_webDataRequestUnreachableURL",
-       "_webIsDataProtocolURL:",
-       "_webKitBundle",
-       "_webKitErrorWithDomain:code:URL:",
-       "_webPreferences",
-       "_webResourceClass",
-       "_webView",
-       "_webViewClass",
-       "_web_HTTPStyleLanguageCode",
-       "_web_HTTPStyleLanguageCodeWithoutRegion",
-       "_web_RFC1123DateString",
-       "_web_RFC1123DateStringWithTimeInterval:",
-       "_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_background",
-       "_web_backgroundRemoveFileAtPath:",
-       "_web_backgroundRemoveLeftoverFiles:",
-       "_web_bestURL",
-       "_web_boolForKey:",
-       "_web_buildAcceptLanguageHeaderFromPreferredLanguages:",
-       "_web_canonicalize",
-       "_web_capitalizeRFC822HeaderFieldName",
-       "_web_carbonPathForPath:",
-       "_web_changeFileAttributes:atPath:",
-       "_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_dataForKey:",
-       "_web_dataForURLComponentType:",
-       "_web_dateFromHTTPDateString:",
-       "_web_declareAndWriteDragImage:URL:title:archive:source:",
-       "_web_decodeHostNameWithRange:",
-       "_web_defaultsDidChange",
-       "_web_dissolveToFraction:",
-       "_web_doesEveryElementSatisfyPredicate:",
-       "_web_domainFromHost",
-       "_web_domainMatches:",
-       "_web_dragImage:rect:event:pasteboard:source:offset:",
-       "_web_dragOperationForDraggingInfo:",
-       "_web_dragShouldBeginFromMouseDown:withExpiration:xHysteresis:yHysteresis:",
-       "_web_dragTypesForURL",
-       "_web_drawAtPoint:font:textColor:",
-       "_web_drawDoubledAtPoint:withTopColor:bottomColor:font:",
-       "_web_encodeHostNameWithRange:",
-       "_web_encodeWWWFormURLData",
-       "_web_encodeWWWFormURLData:",
-       "_web_encodingForResource:",
-       "_web_errorWithDomain:code:URL:",
-       "_web_errorWithDomain:code:URL:userInfoObjectsAndKeys:",
-       "_web_fileExistsAtPath:isDirectory:traverseLink:",
-       "_web_fileNameFromContentDispositionHeader",
-       "_web_filenameByFixingIllegalCharacters",
-       "_web_firstOccurrenceOfCharacter:",
-       "_web_firstResponderCausesFocusDisplay",
-       "_web_firstResponderIsSelfOrDescendantView",
-       "_web_fixedCarbonPOSIXPath",
-       "_web_guessedMIMEType",
-       "_web_guessedMIMETypeForExtension:originalType:",
-       "_web_guessedMIMETypeForXML",
-       "_web_hasCaseInsensitivePrefix:",
-       "_web_hasCaseInsensitiveSubstring:",
-       "_web_hasCaseInsensitiveSuffix:",
-       "_web_hasCountryCodeTLD",
-       "_web_hasQuestionMarkOnlyQueryString",
-       "_web_hostData",
-       "_web_hostNameNeedsDecodingWithRange:",
-       "_web_hostNameNeedsEncodingWithRange:",
-       "_web_initWithDomain:code:URL:",
-       "_web_initWithDomain:code:failingURL:",
-       "_web_intForKey:",
-       "_web_isCaseInsensitiveEqualToCString:",
-       "_web_isCaseInsensitiveEqualToString:",
-       "_web_isEmpty",
-       "_web_isFTPDirectoryURL",
-       "_web_isFileURL",
-       "_web_isJavaScriptURL",
-       "_web_isKeyEvent:",
-       "_web_isTabKeyEvent",
-       "_web_lastOccurrenceOfCharacter:",
-       "_web_layoutIfNeededRecursive:testDirtyRect:",
-       "_web_locationAfterFirstBlankLine",
-       "_web_looksLikeAbsoluteURL",
-       "_web_looksLikeDomainName",
-       "_web_looksLikeIPAddress",
-       "_web_lowercaseStrings",
-       "_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_pathWithUniqueFilenameForPath:",
-       "_web_performBooleanSelector:",
-       "_web_performBooleanSelector:withObject:",
-       "_web_preferredLanguageCode",
-       "_web_rangeOfURLResourceSpecifier",
-       "_web_rangeOfURLScheme",
-       "_web_rangeOfURLUserPasswordHostPort",
-       "_web_removeFileOnlyAtPath:",
-       "_web_safeMakeObjectsPerformSelector:",
-       "_web_scaleToMaxSize:",
-       "_web_schemeData",
-       "_web_scriptIfJavaScriptURL",
-       "_web_selectorValue",
-       "_web_setBool:forKey:",
-       "_web_setFindPasteboardString:withOwner:",
-       "_web_setInt:forKey:",
-       "_web_setObject:forUncopiedKey:",
-       "_web_setObjectIfNotNil:forKey:",
-       "_web_setObjectUsingSetIfNecessary:forKey:",
-       "_web_setPrintingModeRecursive",
-       "_web_spaceSeparatedPrefix",
-       "_web_spaceSeparatedSuffix",
-       "_web_splitAtNonDateCommas",
-       "_web_startsWithBlankLine",
-       "_web_startupVolumeName",
-       "_web_stringByAbbreviatingWithTildeInPath",
-       "_web_stringByCollapsingNonPrintingCharacters",
-       "_web_stringByReplacingValidPercentEscapes",
-       "_web_stringByStrippingCharactersFromSet:",
-       "_web_stringByStrippingReturnCharacters",
-       "_web_stringByTrimmingWhitespace",
-       "_web_stringForKey:",
-       "_web_stringRepresentationForBytes:",
-       "_web_stringWithUTF8String:length:",
-       "_web_suggestedFilenameWithMIMEType:",
-       "_web_superviewOfClass:",
-       "_web_superviewOfClass:stoppingAtClass:",
-       "_web_textSizeMultiplierChanged",
-       "_web_uniqueWebDataURL",
-       "_web_uniqueWebDataURLWithRelativeString:",
-       "_web_userVisibleString",
-       "_web_valueWithSelector:",
-       "_web_visibleItemsInDirectoryAtPath:",
-       "_web_widthWithFont:",
-       "_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",
-       "_window",
-       "_windowAnimationVelocity",
-       "_windowBorderThickness",
-       "_windowBorderThickness:",
-       "_windowChangedHilite:",
-       "_windowChangedKeyState",
-       "_windowChangedNumber:",
-       "_windowDepth",
-       "_windowDeviceRound",
-       "_windowDidBecomeVisible:",
-       "_windowDidChangeScreens:",
-       "_windowDidComeBack:",
-       "_windowDidHideToolbar",
-       "_windowDidLoad",
-       "_windowDying",
-       "_windowExposed:",
-       "_windowFileButtonSpacingWidth",
-       "_windowInitWithCoder:",
-       "_windowMoved:",
-       "_windowMovedToRect:",
-       "_windowNumber:changedTo:",
-       "_windowRefCreatedForCarbonControl",
-       "_windowResizeBorderThickness",
-       "_windowResizeCornerThickness",
-       "_windowSideTitlebarTitleMinWidth:",
-       "_windowTitlebarButtonSpacingWidth",
-       "_windowTitlebarButtonSpacingWidth:",
-       "_windowTitlebarTitleMinHeight:",
-       "_windowTitlebarXResizeBorderThickness",
-       "_windowTitlebarYResizeBorderThickness",
-       "_windowWillClose:",
-       "_windowWillGoAway:",
-       "_windowWillLoad",
-       "_windowWillOrderOut:",
-       "_windowWillShowToolbar",
-       "_windowWithRealWindowNumber:",
-       "_wiringNibConnections",
-       "_wordsInDictionary:",
-       "_workspaceDidResignOrBecomeActive:",
-       "_wrappingAttributes",
-       "_writeCallback:",
-       "_writeCharacterAttributes:",
-       "_writeCharacterData",
-       "_writeCharacters:range:",
-       "_writeColorsToLibrary",
-       "_writeDataForkData:resourceForkData:",
-       "_writeDocumentAttributes",
-       "_writeDocumentData",
-       "_writeDocumentProperties",
-       "_writeDocumentPropertiesToString:",
-       "_writeDocumentProperty:value:",
-       "_writeDocumentProperty:value:toString:",
-       "_writeFontInRange:toPasteboard:",
-       "_writeFonts",
-       "_writeForkData:isDataFork:",
-       "_writeImageElement:withPasteboardTypes:toPasteboard:",
-       "_writeLinkElement:withPasteboardTypes:toPasteboard:",
-       "_writeParagraphData",
-       "_writeParagraphStyle:",
-       "_writePersistentBrowserColumns",
-       "_writePersistentExpandItems",
-       "_writePersistentTableColumns",
-       "_writeRTFDInRanges:toPasteboard:",
-       "_writeRTFInRanges:toPasteboard:",
-       "_writeRecentDocumentDefaults",
-       "_writeRulerInRange:toPasteboard:",
-       "_writeSafelyToURL:ofType:forSaveOperation:error:",
-       "_writeSelectionToPasteboard:",
-       "_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",
-       "_wsmOwnsWindow",
-       "_zapResultArray",
-       "_zeroPinnedResizeColumnsBySharingDelta:lastSharingColumn:resizeInfo:",
-       "_zeroScreen",
-       "_zoomButtonOrigin",
-       "abbreviation",
-       "abbreviationDictionary",
-       "abbreviationForDate:",
-       "abortAllToolTips",
-       "abortEditing",
-       "abortModal",
-       "abortParsing",
-       "abortToolTip",
-       "absolutePathForAppBundleWithIdentifier:",
-       "absoluteString",
-       "absoluteURL",
-       "absoluteX",
-       "absoluteY",
-       "absoluteZ",
-       "acceptColor:atPoint:",
-       "acceptConnectionInBackgroundAndNotifyForModes:",
-       "acceptLastEnteredText",
-       "acceptNode:",
-       "acceptVisitor:flags:",
-       "acceptableDragTypes",
-       "acceptsFirstMouse:",
-       "acceptsFirstResponder",
-       "acceptsGlyphInfo",
-       "acceptsMarker:binding:overrideWithPlaceholderIfDefined:",
-       "acceptsMouseMovedEvents",
-       "acceptsStyleChanges",
-       "access",
-       "accessInstanceVariablesDirectly",
-       "accessibilityAXAttributedStringForCharacterRange:includingLinksAndAttachments:",
-       "accessibilityActionDescription:",
-       "accessibilityActionNames",
-       "accessibilityArrayAttributeCount:",
-       "accessibilityArrayAttributeValues:index:maxCount:",
-       "accessibilityAttachmentAtIndex:",
-       "accessibilityAttachments",
-       "accessibilityAttributeNames",
-       "accessibilityAttributeValue:",
-       "accessibilityAttributeValue:forParameter:",
-       "accessibilityBoundsForCharacterRange:",
-       "accessibilityBoundsForRangeAttributeForParameter:",
-       "accessibilityCharacterRangeForLineNumber:",
-       "accessibilityCharacterRangeForPosition:",
-       "accessibilityChildForColumn:",
-       "accessibilityChildrenAttribute",
-       "accessibilityClearButtonAttribute",
-       "accessibilityColumnForChild:",
-       "accessibilityColumnTitlesAttribute",
-       "accessibilityContentsAttribute",
-       "accessibilityCurrentEditor",
-       "accessibilityCurrentEditorForCell:",
-       "accessibilityDecrementButtonAttribute",
-       "accessibilityElementForAttachment:",
-       "accessibilityElementWithParent:",
-       "accessibilityFocusRingBounds",
-       "accessibilityFocusRingBoundsForBounds:",
-       "accessibilityFocusedUIElement",
-       "accessibilityGrowAreaAttribute",
-       "accessibilityHeaderAttribute",
-       "accessibilityHelpStringForChild:",
-       "accessibilityHitTest:",
-       "accessibilityHorizontalScrollBarAttribute",
-       "accessibilityIncrementButtonAttribute",
-       "accessibilityIndexForAttachment:",
-       "accessibilityIndexOfChild:",
-       "accessibilityInsertionPointLineNumber",
-       "accessibilityIsAttributeSettable:",
-       "accessibilityIsChildFocusable:",
-       "accessibilityIsChildOfApp",
-       "accessibilityIsIgnored",
-       "accessibilityIsSelectedRangeSettable",
-       "accessibilityIsSelectedTextSettable",
-       "accessibilityIsSingleCelled",
-       "accessibilityIsSortButton",
-       "accessibilityIsVisibleCharacterRangeSettable",
-       "accessibilityLineForIndexAttributeForParameter:",
-       "accessibilityLineNumberForCharacterIndex:",
-       "accessibilityMenuBarAttribute",
-       "accessibilityOverflowButtonAttribute",
-       "accessibilityOverriddenAttributes",
-       "accessibilityParameterizedAttributeNames",
-       "accessibilityPerformAction:",
-       "accessibilityPopUpMenuCreated:",
-       "accessibilityPopUpMenuParent:",
-       "accessibilityPositionOfChild:",
-       "accessibilityPostNotification:",
-       "accessibilityRTFForCharacterRange:",
-       "accessibilityRangeForLineAttributeForParameter:",
-       "accessibilityRangeForPositionAttributeForParameter:",
-       "accessibilityRoleAttribute",
-       "accessibilityRulerMarkerType",
-       "accessibilityRulerMarkerTypeDescription",
-       "accessibilitySearchButtonAttribute",
-       "accessibilitySelectedChildrenAttribute",
-       "accessibilitySelectedRange",
-       "accessibilitySelectedText",
-       "accessibilitySetFocus:forChild:",
-       "accessibilitySetOverrideValue:forAttribute:",
-       "accessibilitySetSelectedRange:",
-       "accessibilitySetSelectedText:",
-       "accessibilitySetValue:forAttribute:",
-       "accessibilitySetVisibleCharacterRange:",
-       "accessibilitySharedCharacterRange",
-       "accessibilitySharedTextViews",
-       "accessibilityShouldUseUniqueId",
-       "accessibilitySizeOfChild:",
-       "accessibilitySplittersAttribute",
-       "accessibilityStyleRangeForCharacterIndex:",
-       "accessibilitySubroleAttribute",
-       "accessibilitySupportsOverriddenAttributes",
-       "accessibilityTabsAttribute",
-       "accessibilityTextLinkAtIndex:",
-       "accessibilityTextLinks",
-       "accessibilityTextView",
-       "accessibilityTitleUIElementAttribute",
-       "accessibilityTopLevelUIElementAttributeValueHelper",
-       "accessibilityTree",
-       "accessibilityValueAttribute",
-       "accessibilityValueIndicatorAttribute",
-       "accessibilityVerticalScrollBarAttribute",
-       "accessibilityVisibleCharacterRange",
-       "accessibilityVisibleCharacterRangeAttribute",
-       "accessibilityWindowAttribute",
-       "accessibilityWindowAttributeValueHelper",
-       "accessibilityWindowNumber",
-       "accessibilityWindowsAttribute",
-       "accessoryView",
-       "accessoryViewContainerContentFrameDidChange:",
-       "accumulate::minRadius:factor:",
-       "action",
-       "action:",
-       "actionForControlCharacterAtIndex:",
-       "actionHasBegun:sender:",
-       "actionHasEnded:sender:",
-       "actionType",
-       "activate:",
-       "activateIgnoringOtherApps:",
-       "activateInputManagerFromMenu:",
-       "activeColorSpace",
-       "activeConversationChanged:toNewConversation:",
-       "activeConversationWillChange:fromOldConversation:",
-       "activeFileListDelegate",
-       "actualBitsPerPixel",
-       "actualIndexForIndex:filtered:",
-       "adapter",
-       "adapterOperations",
-       "adapterOperator",
-       "add:",
-       "add:to:",
-       "addAcceptFieldsToHeader",
-       "addAdapterOperation:",
-       "addAnimatingRenderer:inView:",
-       "addAttribute:",
-       "addAttribute:value:range:",
-       "addAttributes:range:",
-       "addAttributesWeakly:range:",
-       "addAuthenticationFieldsToHeader",
-       "addBindVariable:",
-       "addBinder:",
-       "addBinding:toController:withKeyPath:valueTransformer:options:",
-       "addButtonWithTitle:",
-       "addCharactersInRange:",
-       "addCharactersInString:",
-       "addChild:",
-       "addChildItem:",
-       "addChildObject:",
-       "addChildWindow:ordered:",
-       "addChildren:",
-       "addChildrenToArray:",
-       "addClassNamed:version:",
-       "addClient:",
-       "addClip",
-       "addColumn",
-       "addColumns:",
-       "addCommon:docInfo:value:zone:",
-       "addConditionalFieldsToHeader",
-       "addConnection:forKey:",
-       "addConnection:toRunLoop:forMode:",
-       "addConnectionFieldToHeader",
-       "addContentObject:isPlaceholder:value:tag:cellOrControl:",
-       "addConversation:",
-       "addCookieFieldToHeader",
-       "addCrayon:",
-       "addCredential:forProtectionSpace:",
-       "addCredentialsToInitialHTTPRequest:protocol:",
-       "addCredentialsToRetryHTTPRequest:afterFailureResponse:nsFailureResponse:failureCount:protocol:withCallback:context:",
-       "addCursorRect:cursor:",
-       "addData:",
-       "addDefaultTable",
-       "addDelta:forManyToManyKey:",
-       "addDescription:forSubelementName:",
-       "addDirNamed:lazy:",
-       "addDocument:",
-       "addEntity:index:",
-       "addEntriesFromDictionary:",
-       "addEnumeration:",
-       "addEventListener:::",
-       "addExpandedNode:",
-       "addExtraFieldsToHeader",
-       "addFavorite",
-       "addFavoriteInWindow:",
-       "addFeatureDescriptions:",
-       "addFileButton:",
-       "addFileNamed:fileAttributes:",
-       "addFileWrapper:",
-       "addFontDescriptorToRecents:",
-       "addFontDescriptors:toCollection:",
-       "addFontTrait:",
-       "addGlyphs:advances:count:at::",
-       "addHeartBeatView:",
-       "addHostFieldToHeader",
-       "addIndex:",
-       "addIndexRange:",
-       "addIndexes:",
-       "addIndexesInRange:",
-       "addItem:",
-       "addItemForURL:",
-       "addItemWithObjectValue:",
-       "addItemWithTitle:",
-       "addItemWithTitle:action:keyEquivalent:",
-       "addItemWithTitle:action:tag:",
-       "addItems:",
-       "addItemsWithObjectValues:",
-       "addItemsWithTitles:",
-       "addJoinForDirectToManyToMany:",
-       "addJoinForManyToManyRelationship:sourcePath:destinationPath:",
-       "addJoinForToManyRelationship:sourcePath:destinationPath:",
-       "addJoinForToOneRelationship:sourcePath:destinationPath:",
-       "addLayoutManager:",
-       "addListenerIfAbsent:",
-       "addMarker:",
-       "addMessageBodyToRequest",
-       "addMessageToConsole:",
-       "addMouseMovedObserver",
-       "addNamespace:",
-       "addNewColor:andShowInWell:",
-       "addObject:",
-       "addObject:objectIDMap:",
-       "addObject:toBothSidesOfRelationshipWithKey:",
-       "addObject:toPropertyWithKey:",
-       "addObjectToMasterArrayRelationship:selectionMode:",
-       "addObjectsFromArray:",
-       "addObjectsToMasterArrayRelationship:selectionMode:",
-       "addObserver:forKeyPath:options:context:",
-       "addObserver:selector:name:object:",
-       "addObserver:selector:name:object:suspensionBehavior:",
-       "addOrNestTable",
-       "addPathToLibrarySearchPaths:",
-       "addPersistentStoreWithType:configuration:URL:readOnly:error:",
-       "addPlugin:",
-       "addPolicy:",
-       "addPort:forMode:",
-       "addPortsToAllRunLoops",
-       "addPortsToRunLoop:",
-       "addPreferenceNamed:owner:",
-       "addRect:",
-       "addReferrerFieldToHeader",
-       "addRegularFileWithContents:preferredFilename:",
-       "addRepresentation:",
-       "addRepresentations:",
-       "addRow",
-       "addRowWithCells:",
-       "addRows:",
-       "addRunLoop:",
-       "addServiceProvider:",
-       "addSpecialGStateView:",
-       "addStatistics:",
-       "addSubresource:",
-       "addSubview:",
-       "addSubview:positioned:relativeTo:",
-       "addSuperviewObservers",
-       "addTabStop:",
-       "addTableColumn:",
-       "addTemporaryAttributes:forCharacterRange:",
-       "addTextContainer:",
-       "addTimeInterval:",
-       "addTimer:forMode:",
-       "addTimerToModes",
-       "addToPageSetup",
-       "addToolTipRect:owner:userData:",
-       "addTrackingRect:owner:userData:assumeInside:",
-       "addTrackingRectForToolTip:reuseExistingTrackingNum:",
-       "addTypes:owner:",
-       "addUserAgentFieldToHeader",
-       "addValue:forHTTPHeaderField:",
-       "addVariationDescriptions:",
-       "addView:frame:toView:characterIndex:layoutManager:",
-       "addWebView:toSetNamed:",
-       "addWindowController:",
-       "addWindowObservers",
-       "addWindowsItem:title:filename:",
-       "additionalClip",
-       "additionalPatternPhase",
-       "address",
-       "addresses",
-       "adjustCTM:",
-       "adjustControls:",
-       "adjustFrameOriginX:",
-       "adjustFrameSize",
-       "adjustHalftonePhase",
-       "adjustOffsetToNextWordBoundaryInString:startingAt:",
-       "adjustPageHeightNew:top:bottom:limit:",
-       "adjustPageWidthNew:left:right:limit:",
-       "adjustScroll:",
-       "adjustScrollView",
-       "adjustSubviews",
-       "adjustView:frame:forView:characterIndex:layoutManager:",
-       "adjustViewSize",
-       "advanceProxyArray",
-       "advanceToNextMisspelling",
-       "advanceToNextMisspellingStartingJustBeforeSelection",
-       "advancementForGlyph:",
-       "aeDesc",
-       "aeteResource:",
-       "affineTransform",
-       "afterEntityLookup",
-       "alertDidEnd:returnCode:contextInfo:",
-       "alertShowHelp:",
-       "alertWithError:",
-       "alignCenter:",
-       "alignJustified:",
-       "alignLeft:",
-       "alignRight:",
-       "alignment",
-       "allBundles",
-       "allConnections",
-       "allCredentials",
-       "allFrameworks",
-       "allHTTPHeaderFields",
-       "allHeaderFields",
-       "allKeys",
-       "allKeysForObject:",
-       "allObjects",
-       "allOrderedScopeButtons",
-       "allPropertyKeys",
-       "allValues",
-       "alloc",
-       "allocFromZone:",
-       "allocWithZone:",
-       "allocateGState",
-       "allocateObjectIDForPayload:withType:",
-       "allowDHTMLDrag:UADrag:",
-       "allowEmptySel:",
-       "allowFlushing",
-       "allowedContentBindingMask",
-       "allowedFileTypes",
-       "allowedValueBindingMask",
-       "allowsAnyHTTPSCertificateForHost:",
-       "allowsBranchSelection",
-       "allowsColumnReordering",
-       "allowsColumnResizing",
-       "allowsColumnSelection",
-       "allowsDocumentBackgroundColorChange",
-       "allowsDuplicatesInToolbar",
-       "allowsEditingMultipleValuesSelection",
-       "allowsEditingTextAttributes",
-       "allowsEmptySelection",
-       "allowsExpandingMultipleDirectories",
-       "allowsFloats",
-       "allowsKeyedCoding",
-       "allowsMixedState",
-       "allowsMultipleSelection",
-       "allowsNaturalLanguage",
-       "allowsNullArgumentWithBinding:",
-       "allowsOtherFileTypes",
-       "allowsReverseTransformation",
-       "allowsScrolling",
-       "allowsTickMarkValuesOnly",
-       "allowsToolTipsWhenApplicationIsInactive",
-       "allowsUndo",
-       "allowsUserCustomization",
-       "alpha",
-       "alphaComponent",
-       "alphaControlAddedOrRemoved:",
-       "alphaValue",
-       "alphanumericCharacterSet",
-       "altIncrementValue",
-       "altModifySelection:",
-       "alterCurrentSelection:direction:granularity:",
-       "alterCurrentSelection:verticalDistance:",
-       "alternateArrangeInFront:",
-       "alternateImage",
-       "alternateMnemonicLocation",
-       "alternateSelectedControlColor",
-       "alternateSelectedControlTextColor",
-       "alternateTitle",
-       "alwaysAttemptToUsePageCache",
-       "alwaysPresentsApplicationModalAlerts",
-       "alwaysPresentsApplicationModalAlertsWithBinding:",
-       "alwaysUsesMultipleValuesMarker",
-       "analyzeKeyPath:registerOrUnregister:",
-       "ancestorSharedWithView:",
-       "ancestorsStartingWith:",
-       "anchorElement",
-       "andPredicateOperator",
-       "angledROI:forRect:",
-       "animate",
-       "animate:",
-       "animation:didReachProgressMark:",
-       "animation:valueForProgress:",
-       "animationBlockingMode",
-       "animationCurve",
-       "animationDidEnd:",
-       "animationDidStop:",
-       "animationResizeTime:",
-       "animationShouldStart:",
-       "anyObject",
-       "appDidActivate:",
-       "appearanceChanged:",
-       "appendAttributedString:",
-       "appendBezierPath:",
-       "appendBezierPathWithArcFromPoint:toPoint:radius:",
-       "appendBezierPathWithArcWithCenter:radius:startAngle:endAngle:",
-       "appendBezierPathWithArcWithCenter:radius:startAngle:endAngle:clockwise:",
-       "appendBezierPathWithGlyphs:count:inFont:",
-       "appendBezierPathWithOvalInRect:",
-       "appendBezierPathWithPoints:count:",
-       "appendBezierPathWithRect:",
-       "appendBytes:length:",
-       "appendCharacter:",
-       "appendChild:",
-       "appendClause:forKeyPath:allowToMany:",
-       "appendClause:forKeyPathExpression:allowToMany:",
-       "appendClause:forProperty:keypath:",
-       "appendData:",
-       "appendDisplayedNode:identifier:title:displaysChildren:",
-       "appendElementClassDeclarationToAETEData:",
-       "appendEnumerationDeclarationToAETEData:",
-       "appendFormat:",
-       "appendJoinClauseToSQL",
-       "appendLimitClauseToSQL:",
-       "appendObjectClassDeclarationToAETEData:",
-       "appendOrderByClauseToSQL",
-       "appendParameterDeclarationsToAETEData:",
-       "appendPropertyDeclarationToAETEData:",
-       "appendPropertyDeclarationsToAETEData:",
-       "appendReceivedData:fromDataSource:",
-       "appendRecordTypeDeclarationsToAETEData:",
-       "appendSQL:",
-       "appendSelectListToSQL",
-       "appendSelectableScopeLocationNode:",
-       "appendString:",
-       "appendSuiteDeclarationsToAETEData:",
-       "appendTransform:",
-       "appendWhereClause:",
-       "appendWhereClauseToSQL",
-       "appleEventClassCode",
-       "appleEventCode",
-       "appleEventCodeForKey:",
-       "appleEventCodeForReturnType",
-       "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",
-       "applicationName",
-       "applicationOpenUntitledFile:",
-       "applicationShouldHandleReopen:hasVisibleWindows:",
-       "applicationShouldOpenUntitledFile:",
-       "applicationShouldTerminate:",
-       "applicationShouldTerminateAfterLastWindowClosed:",
-       "appliesImmediately",
-       "apply:",
-       "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:",
-       "archiver:didEncodeObject:",
-       "archiver:willEncodeObject:",
-       "archiver:willReplaceObject:withObject:",
-       "archiverDidFinish:",
-       "archiverWillFinish:",
-       "areCursorRectsEnabled",
-       "arePlugInsEnabled",
-       "areScrollbarsVisible",
-       "areToolbarsVisible",
-       "argumentDescriptionFromName:implDeclaration:presoDeclaration:suiteName:commandName:",
-       "arguments",
-       "arrangeInFront:",
-       "arrangeObjects:",
-       "arrangedObjects",
-       "array",
-       "arrayByAddingObject:",
-       "arrayByAddingObjects:count:",
-       "arrayByAddingObjectsFromArray:",
-       "arrayByExcludingObjectsInArray:",
-       "arrayByExcludingObjectsInArray:identical:",
-       "arrayForKey:",
-       "arrayForOptionalSubelementName:",
-       "arrayOrNumberFromResolutions:andValues:withCount:",
-       "arrayRepresentation",
-       "arrayWithArray:",
-       "arrayWithArray:copyItems:",
-       "arrayWithCapacity:",
-       "arrayWithContentsOfFile:",
-       "arrayWithIFURLsWithTitlesPboardType",
-       "arrayWithIndexes:",
-       "arrayWithObject:",
-       "arrayWithObjects:",
-       "arrayWithObjects:count:",
-       "arrayWithRange:",
-       "arrayWithRanges:count:",
-       "arrowCursor",
-       "arrowPosition",
-       "asRef",
-       "ascender",
-       "ascending",
-       "ascent",
-       "aspectRatio",
-       "assignValuesForInsertedObject:",
-       "asyncInvokeServiceIn:msg:pb:userData:menu:remoteServices:unhide:",
-       "atomAttachmentCell",
-       "attachColorList:",
-       "attachColorList:systemList:makeSelected:",
-       "attachPopUpWithFrame:inView:",
-       "attachSubmenuForItemAtIndex:",
-       "attachToolbarToColorPanel:",
-       "attachedListDictionary",
-       "attachedMenu",
-       "attachedMenuView",
-       "attachedSheet",
-       "attachedViewFrameDidChange:",
-       "attachment",
-       "attachmentCell",
-       "attachmentMenu",
-       "attachmentSizeForGlyphAtIndex:",
-       "attemptOverwrite:",
-       "attemptRecoveryFromError:optionIndex:",
-       "attemptRecoveryFromError:optionIndex:delegate:didRecoverSelector:contextInfo:",
-       "attemptRetryAfter3xxResponse",
-       "attribute:atIndex:effectiveRange:",
-       "attribute:atIndex:longestEffectiveRange:inRange:",
-       "attributeColumnDefinitions",
-       "attributeColumns",
-       "attributeDescriptorForKeyword:",
-       "attributeForLocalName:URI:",
-       "attributeForName:",
-       "attributeKeys",
-       "attributeMappings",
-       "attributeType",
-       "attributeTypeForXMLInfo:",
-       "attributeValueClassName",
-       "attributeValueForSlot:",
-       "attributedAlternateTitle",
-       "attributedString",
-       "attributedStringForNil",
-       "attributedStringForNotANumber",
-       "attributedStringForObjectValue:withDefaultAttributes:",
-       "attributedStringForZero",
-       "attributedStringFrom:startOffset:to:endOffset:",
-       "attributedStringValue",
-       "attributedStringWithAttachment:",
-       "attributedStringWithHTML:documentAttributes:",
-       "attributedStringWithHTML:useEncoding:documentAttributes:",
-       "attributedSubstringForMarkedRange",
-       "attributedSubstringFromRange:",
-       "attributedTitle",
-       "attributes",
-       "attributesAtEndOfGroup",
-       "attributesAtIndex:effectiveRange:",
-       "attributesAtIndex:effectiveRange:inRange:",
-       "attributesAtIndex:longestEffectiveRange:inRange:",
-       "attributesAtPath:traverseLink:",
-       "attributesByName",
-       "attributesForExtraLineFragment",
-       "attributesWithStat:",
-       "authenticateComponents:withData:",
-       "authenticateWithDelegate:",
-       "authenticationDataForComponents:",
-       "authenticationMethod",
-       "autoenablesItems",
-       "automaticallyNotifiesObserversForKey:",
-       "automaticallyPreparesContent",
-       "autorecalculatesKeyViewLoop",
-       "autorelease",
-       "autorepeat",
-       "autoresizesAllColumnsToFit",
-       "autoresizesSubviews",
-       "autoresizingMask",
-       "autosaveDocumentWithDelegate:didAutosaveSelector:contextInfo:",
-       "autosaveName",
-       "autosaveTableColumns",
-       "autosavedContentsFileURL",
-       "autosavesConfiguration",
-       "autosavingFileType",
-       "autoscroll:",
-       "autosizesCells",
-       "autovalidates",
-       "availableBindings",
-       "availableColorLists",
-       "availableData",
-       "availableFontFamilies",
-       "availableFonts",
-       "availableLanguageContextNames",
-       "availableMembersOfFontFamily:",
-       "availableProfiles",
-       "availableResourceData",
-       "availableTypeFromArray:",
-       "average:",
-       "avoidsEmptySelection",
-       "awake",
-       "awakeAfterUsingCoder:",
-       "awakeFromFetch",
-       "awakeFromInsert",
-       "awakeFromNib",
-       "backForwardList",
-       "backItem",
-       "backListCount",
-       "backListWithLimit:",
-       "background",
-       "backgroundColor",
-       "backgroundEdgeColor",
-       "backgroundLoadDidFailWithReason:",
-       "backingType",
-       "base64DecodeData:",
-       "baseAffineTransform",
-       "baseGetter",
-       "baseSetter",
-       "baseSpecifier",
-       "baseURL",
-       "baseWritingDirection",
-       "baseline",
-       "baselineLocation",
-       "baselineOffsetInLayoutManager:glyphIndex:",
-       "becomeFirstResponder",
-       "becomeKeyWindow",
-       "becomeMainWindow",
-       "becomeMultiThreaded:",
-       "becomeSingleThreaded:",
-       "becomesKeyOnlyIfNeeded",
-       "beginConstructionWithSuiteRegistry:",
-       "beginDataLoad",
-       "beginDocument",
-       "beginDocumentWithTitle:",
-       "beginEditing",
-       "beginLayoutChange",
-       "beginLineWithGlyphAtIndex:",
-       "beginLoadInBackground",
-       "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:",
-       "beginUsingMenuFormRepresentation:",
-       "bestLocationRep",
-       "bestLocationRep:matchesBestLocationRep:",
-       "bestLocationRepFromURL:",
-       "bestMatchingFontForCharacters:length:attributes:actualCoveredLength:",
-       "bestRepresentationForDevice:",
-       "bestVisualFrameSizeForCharacterCount:",
-       "bezelStyle",
-       "bezierPath",
-       "bezierPathWithOvalInRect:",
-       "bezierPathWithRect:",
-       "bidiProcessingEnabled",
-       "binaryCollator",
-       "binaryOperatorForSelector",
-       "bind:toObject:withKeyPath:options:",
-       "bindHIViewToNSView:nsView:",
-       "bindVariables",
-       "binderClassesForObject:",
-       "binderClassesSuperseded",
-       "binderSpecificFlagAtIndex:",
-       "binders",
-       "binding",
-       "bindingCategory",
-       "bindingRunsAlerts:",
-       "bindingsForObject:",
-       "bitmapData",
-       "bitmapFormat",
-       "bitmapRepresentation",
-       "bitsPerPixel",
-       "bitsPerSample",
-       "blackColor",
-       "blackComponent",
-       "blendedColorWithFraction:ofColor:",
-       "blue",
-       "blueColor",
-       "blueComponent",
-       "blueControlTintColor",
-       "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",
-       "boundsForButtonCell:",
-       "boundsForTextCell:",
-       "boundsRectForBlock:contentRect:inRect:textContainer:characterRange:",
-       "boundsRectForContentRect:inRect:textContainer:characterRange:",
-       "boundsRectForTextBlock:atIndex:effectiveRange:",
-       "boundsRectForTextBlock:glyphRange:",
-       "boxType",
-       "branchImage",
-       "breakConnection",
-       "breakLineAtIndex:",
-       "breakLock",
-       "bridgeForDOMDocument:",
-       "bridgeForView:",
-       "brightColor",
-       "brightnessComponent",
-       "broadcast",
-       "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:",
-       "browserDidScroll:",
-       "browserWillScroll:",
-       "buddhistCalendar",
-       "bufferingSize",
-       "buildAlertStyle:title:formattedMsg:first:second:third:oldStyle:",
-       "buildAlertStyle:title:message:first:second:third:oldStyle:args:",
-       "buildFilterCache",
-       "buildHTTPRequest",
-       "buildOrderByClauseWithSortDescriptors:",
-       "buildWhereClauseForRow:",
-       "buildWhereClauseWithSelectPredicate:",
-       "builderForClass:",
-       "builtInPlugInsPath",
-       "bundle",
-       "bundleForClass",
-       "bundleForClass:",
-       "bundleIdentifier",
-       "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",
-       "cStringLength",
-       "cStringUsingEncoding:",
-       "cache",
-       "cacheDepthMatchesImageDepth",
-       "cacheInsertStatement:",
-       "cacheMiniwindowTitle:guess:",
-       "cachePolicy",
-       "cacheRect:",
-       "cacheStringImage:whiteText:",
-       "cachedChildren",
-       "cachedChildrenForExpandedNode:",
-       "cachedChildrenForNode:",
-       "cachedDrawingImage",
-       "cachedFontFromFamily:traits:size:",
-       "cachedHandleForURL:",
-       "cachedResponse",
-       "cachedResponseForRequest:",
-       "cachedResponseMustBeRevalidated",
-       "cachedResponseRevalidated",
-       "cachedSQLiteStatement",
-       "calcDrawInfo:",
-       "calcSize",
-       "calculateFigureCenter:",
-       "calculateFigureSize:",
-       "calculatesAllSizes",
-       "calendar",
-       "calendarDate",
-       "calendarFormat",
-       "canAdd",
-       "canAddBinding:toController:",
-       "canAddChild",
-       "canApplyValueTransformer:toBinding:",
-       "canBeCompressedUsing:",
-       "canBeConvertedToEncoding:",
-       "canBeDisabled",
-       "canBecomeKeyView",
-       "canBecomeKeyWindow",
-       "canBecomeMainWindow",
-       "canBrowseNode:allowInteraction:",
-       "canCachePage",
-       "canChooseDirectories",
-       "canChooseFiles",
-       "canChooseNode:",
-       "canClickDisabledFiles",
-       "canCloseDocument",
-       "canCloseDocumentWithDelegate:shouldCloseSelector:contextInfo:",
-       "canConnect",
-       "canCreateCollapsedSpecifierFromAbsolutePositionRecord:",
-       "canCreateCollapsedSpecifierFromRangeRecord:",
-       "canCreateDirectories",
-       "canCycle",
-       "canDecodeDownloadHeaderData:",
-       "canDragRowsWithIndexes:atPoint:",
-       "canDraw",
-       "canGoBack",
-       "canGoBackOrForward:",
-       "canGoForward",
-       "canHandleRequest:",
-       "canHide",
-       "canHighlightNode:",
-       "canIgnorePopulatingObject:",
-       "canIgnoreSettingMinAndMaxForObject:",
-       "canImportData:",
-       "canInitWithData:",
-       "canInitWithPasteboard:",
-       "canInitWithRequest:",
-       "canInitWithURL:",
-       "canInsert",
-       "canInsertChild",
-       "canMakeTextLarger",
-       "canMakeTextSmaller",
-       "canPaste",
-       "canPopulateWithPlaceholders",
-       "canProvideDocumentSource",
-       "canRedo",
-       "canRemove",
-       "canResumeDownloadDecodedWithEncodingMIMEType:",
-       "canSearch",
-       "canSelectHiddenExtension",
-       "canSelectNext",
-       "canSelectPrevious",
-       "canShowFile:",
-       "canShowMIMEType:",
-       "canShowMIMETypeAsHTML:",
-       "canStart",
-       "canStoreColor",
-       "canSupportMinAndMaxForObject:",
-       "canTakeFindStringFromSelection",
-       "canTargetLoadInFrame:",
-       "canUndo",
-       "cancel",
-       "cancel:",
-       "cancelAddCredentialsToRetryHTTPRequest:",
-       "cancelAuthentication:",
-       "cancelAuthenticationChallenge:",
-       "cancelButtonRectForBounds:",
-       "cancelContentPolicy",
-       "cancelDelayedUpdate",
-       "cancelIncrementalLoadForImage:",
-       "cancelInput:conversation:",
-       "cancelLoadAndDestroyStreamWithError:",
-       "cancelLoadInBackground",
-       "cancelLoadWithError:",
-       "cancelOperation:",
-       "cancelPerformSelector:target:argument:",
-       "cancelPreviousPerformRequestsWithTarget:",
-       "cancelPreviousPerformRequestsWithTarget:selector:object:",
-       "cancelPreviouslScheduleRolloverWindow",
-       "cancelUserAttentionRequest:",
-       "cancelWithError:",
-       "cancelledError",
-       "canonicalHTTPURLForURL:",
-       "canonicalRequestForRequest:",
-       "canonicalXMLStringPreservingComments:",
-       "canonicalizeHTTPEncodingString",
-       "capHeight",
-       "capabilityMask",
-       "capacity",
-       "capitalizedLetterCharacterSet",
-       "capitalizedString",
-       "captionTextField",
-       "carbonHICommandIDFromActionSelector:",
-       "carbonNotificationProc",
-       "caretRectAtNode:offset:affinity:",
-       "cascadeTopLeftFromPoint:",
-       "caseInsensitiveCompare:",
-       "caseSensitive",
-       "castObject:toType:",
-       "catalogNameComponent",
-       "cell",
-       "cellAtIndex:",
-       "cellAtPoint:row:column:",
-       "cellAtPoint:row:column:loaded:",
-       "cellAtRow:column:",
-       "cellAtRow:column:loaded:",
-       "cellAttribute:",
-       "cellBackgroundColor",
-       "cellBaselineOffset",
-       "cellClass",
-       "cellForRow:column:tableView:",
-       "cellForRow:tableColumn:",
-       "cellFrameAtRow:column:",
-       "cellFrameForTextContainer:proposedLineFragment:glyphPosition:characterIndex:",
-       "cellMenuForSearchField",
-       "cellOrControlForObject:",
-       "cellPadding",
-       "cellPrototype",
-       "cellSize",
-       "cellSizeForBounds:",
-       "cellSpacing",
-       "cellWithTag:",
-       "cells",
-       "center",
-       "center:didAddObserver:name:object:",
-       "center:didRemoveObserver:name:object:",
-       "centerOverMainWindow",
-       "centerScanRect:",
-       "centerSelectionInVisibleArea",
-       "centerSelectionInVisibleArea:",
-       "centerTabMarkerWithRulerView:location:",
-       "centerTruncateString:toWidth:withFont:",
-       "cgsRegionObj",
-       "changeAttributes:",
-       "changeBaseWritingDirection:",
-       "changeColor:",
-       "changeCount",
-       "changeCurrentDirectoryPath:",
-       "changeDestinationToPoint:",
-       "changeDestinationToRect:",
-       "changeDisplayedColorName:",
-       "changeDocumentBackgroundColor:",
-       "changeFileAttributes:atPath:",
-       "changeFont:",
-       "changeFontTrait:",
-       "changeInLength",
-       "changeOptionsPanelSettings:",
-       "changeSpelling:",
-       "changeToolbarDisplayMode:",
-       "changeWillBeUndone:",
-       "changeWindowFrameSizeByDelta:display:animate:",
-       "changeWindowsItem:title:filename:",
-       "charIndex",
-       "charRefToUnicode:",
-       "charValue",
-       "character:hasNumericProperty:",
-       "character:hasProperty:",
-       "characterAtIndex:",
-       "characterCollection",
-       "characterEncoding",
-       "characterIdentifier",
-       "characterIndexForGlyphAtIndex:",
-       "characterIndexForPoint:",
-       "characterIsMember:",
-       "characterRange",
-       "characterRangeForGlyphRange:actualGlyphRange:",
-       "characterSetWithBitmapRepresentation:",
-       "characterSetWithCharactersInString:",
-       "characterSetWithContentsOfFile:",
-       "characterSetWithName:",
-       "characterSetWithRange:",
-       "characters",
-       "charactersIgnoringModifiers",
-       "charactersToBeSkipped",
-       "cheapBlur",
-       "cheapBlurROI:::",
-       "check:",
-       "checkContentPolicyForResponse:",
-       "checkForAuthenticationFailureInHTTPResponse:withURL:",
-       "checkForRemovableMedia",
-       "checkGrammarOfString:startingAt:language:wrap:inSpellDocumentWithTag:details:reconnectOnError:",
-       "checkSpaceForParts",
-       "checkSpelling:",
-       "checkSpellingOfString:startingAt:language:wrap:inSpellDocumentWithTag:wordCount:",
-       "checkSpellingOfString:startingAt:language:wrap:inSpellDocumentWithTag:wordCount:reconnectOnError:",
-       "childAtIndex:",
-       "childCount",
-       "childFrames",
-       "childGlyphStorageWithGlyphRange:cleanCopy:",
-       "childItemWithName:",
-       "childOfNode:atIndex:",
-       "childStore:didForgetObjectsWithObjectIDs:",
-       "childStores",
-       "childWindows",
-       "children",
-       "childrenChanged",
-       "childrenKeyPath",
-       "chineseCalendar",
-       "chooseButtonPressed:",
-       "class",
-       "classCode",
-       "classDescription",
-       "classDescriptionForClass:",
-       "classDescriptionForDestinationKey:",
-       "classDescriptionForEntityName:",
-       "classDescriptionForKey:",
-       "classDescriptionForKeyPath:",
-       "classDescriptionWithAppleEventCode:",
-       "classDescriptions",
-       "classDescriptionsByName",
-       "classDescriptionsInSuite:",
-       "classFallbacksForKeyedArchiver",
-       "classForArchiver",
-       "classForClassName:",
-       "classForCoder",
-       "classForKeyedArchiver",
-       "classForKeyedUnarchiver",
-       "classForPortCoder",
-       "className",
-       "classNameDecodedForArchiveClassName:",
-       "classNameForClass:",
-       "classNamed:",
-       "classPropertyKeys",
-       "cleanUpAfterDragOperation",
-       "cleanUpForRetry",
-       "cleanUpOperation",
-       "clear",
-       "clear:",
-       "clearAllModelObjectObserving",
-       "clearAsMainCarbonMenuBar",
-       "clearAttributesCache",
-       "clearCaches",
-       "clearChildren",
-       "clearClipping",
-       "clearColor",
-       "clearControlTintColor",
-       "clearController",
-       "clearConversationRequest",
-       "clearCurrentContext",
-       "clearCurrentValues",
-       "clearDrawable",
-       "clearFilterCache",
-       "clearGLContext",
-       "clearGlyphCache",
-       "clearMarkedRange",
-       "clearNewAvailableData",
-       "clearProperties",
-       "clearRecentDocuments:",
-       "clearRolloverTrackingRect",
-       "clearStartAnimation",
-       "clearStopAnimation",
-       "clearTableParameters",
-       "clearsFilterPredicateOnInsertion",
-       "clickCount",
-       "clickableContentRectForBounds:",
-       "clicked",
-       "clickedColumn",
-       "clickedOnLink:atIndex:",
-       "clickedRow",
-       "client",
-       "clientView",
-       "clientWrapperWithRealClient:",
-       "clip:",
-       "clipForDrawingRow:column:",
-       "clipFrameChanged:",
-       "clipRect:",
-       "clipToQDRegion:",
-       "clippedItems",
-       "clipviewBoundsChangedNotification:",
-       "clockPreferencesChanged:",
-       "cloneRange",
-       "close",
-       "close:",
-       "closeAllDocuments",
-       "closeAllDocumentsWithDelegate:didCloseAllSelector:contextInfo:",
-       "closeButton",
-       "closeFile",
-       "closePath",
-       "closeResourceFile:",
-       "closeSpellDocumentWithTag:",
-       "closeURL",
-       "closeWidgetInView:withButtonID:action:",
-       "closeWindowSoon",
-       "closedHandCursor",
-       "closestTickMarkValueToValue:",
-       "coalesceAffectedRange:replacementRange:selectedRange:text:",
-       "coalesceInTextView:affectedRange:replacementRange:",
-       "coalesceTextDrawing",
-       "cocoaSubVersion",
-       "cocoaVersion",
-       "code",
-       "coerceArray:toColor:",
-       "coerceColor:toArray:",
-       "coerceColor:toData:",
-       "coerceColor:toString:",
-       "coerceData:toColor:",
-       "coerceData:toTextStorage:",
-       "coerceString:toColor:",
-       "coerceString:toTextStorage:",
-       "coerceTextStorage:toData:",
-       "coerceTextStorage:toString:",
-       "coerceToDescriptorType:",
-       "coerceValue:forKey:",
-       "coerceValue:toClass:",
-       "collapseItem:",
-       "collapseItem:collapseChildren:",
-       "collapsed",
-       "collatorElementWithName:",
-       "collatorWithName:",
-       "collectResources",
-       "color",
-       "colorAtIndex:filtered:",
-       "colorFromPasteboard:",
-       "colorFromPoint:",
-       "colorList",
-       "colorListChanged:",
-       "colorListNamed:",
-       "colorMatrixBiasKernel",
-       "colorNameComponent",
-       "colorPanel",
-       "colorPanelColorChanged:",
-       "colorPanelColorDidChange:",
-       "colorPanelDidSelectColorPicker:",
-       "colorProfile",
-       "colorSpace",
-       "colorSpaceForColorSpaceName:",
-       "colorSpaceModel",
-       "colorSpaceName",
-       "colorSwathesChangedInAnotherApplicationNotification:",
-       "colorSyncData",
-       "colorSyncProfile",
-       "colorTable",
-       "colorUsingColorSpace:",
-       "colorUsingColorSpaceName:",
-       "colorUsingColorSpaceName:device:",
-       "colorWithAlphaComponent:",
-       "colorWithCalibratedHue:saturation:brightness:alpha:",
-       "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:",
-       "columnDefinitions",
-       "columnName",
-       "columnOfMatrix:",
-       "columnResizeButtonImage",
-       "columnResizeButtonRect",
-       "columnResizingType",
-       "columnSpan",
-       "columnWidthForColumnContentWidth:",
-       "columnWithIdentifier:",
-       "columnsAutosaveName",
-       "columnsInRect:",
-       "columnsToFetch",
-       "comboBox:completedString:",
-       "comboBox:indexOfItemWithStringValue:",
-       "comboBox:objectValueForItemAtIndex:",
-       "comboBoxCell:completedString:",
-       "comboBoxCell:indexOfItemWithStringValue:",
-       "comboBoxCell:objectValueForItemAtIndex:",
-       "comboBoxTextDidEndEditing:",
-       "command",
-       "commandClassName",
-       "commandDescription",
-       "commandDescriptionWithAppleEventClass:andAppleEventCode:",
-       "commandDescriptions",
-       "commandDescriptionsByName",
-       "commandDescriptionsInSuite:",
-       "commandDisplay",
-       "commandName",
-       "commandWithEditCommand:",
-       "commands",
-       "comment",
-       "commentURL",
-       "commitChanges:",
-       "commitEditing",
-       "commitEditingWithDelegate:didCommitSelector:contextInfo:",
-       "commitTransaction",
-       "committedSnapshotForObject:",
-       "commonAncestorContainer",
-       "compare:",
-       "compare:options:",
-       "compare:options:range:",
-       "compare:options:range:locale:",
-       "compareBoundaryPoints::",
-       "compareGeometry:",
-       "compareGeometryInWindowCoordinates:",
-       "compareObject:toObject:",
-       "compareObjectValue:toObjectValue:",
-       "compareSelector",
-       "comparisonPredicateModifier",
-       "compileAndReturnError:",
-       "complete:",
-       "completedSpoolToFile",
-       "completedString:",
-       "completes",
-       "completionDelay",
-       "completionsForPartialWordRange:inString:language:inSpellDocumentWithTag:",
-       "completionsForPartialWordRange:indexOfSelectedItem:",
-       "components",
-       "componentsJoinedByString:",
-       "componentsSeparatedByString:",
-       "compositeToPoint:fromRect:operation:",
-       "compositeToPoint:fromRect:operation:fraction:",
-       "compositeToPoint:operation:",
-       "compositeToPoint:operation:fraction:",
-       "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:",
-       "conditionalBehaviorOffByDefault:",
-       "conditionallySetsEditable",
-       "conditionallySetsEnabled",
-       "conditionallySetsHidden",
-       "configurationDictionary",
-       "configurationName",
-       "configurations",
-       "configureForActiveState",
-       "configureForAllowsExpandingMultipleDirectories:",
-       "configureForAllowsMultipleSelection:",
-       "configureForCalculatesAllSizes:",
-       "configureForCanChooseDirectories:",
-       "configureForCanChooseFiles:",
-       "configureForCanClickDisabledFiles:",
-       "configureForDisplayMode:andSizeMode:",
-       "configureForDisplayedFileProperties:",
-       "configureForInactiveState",
-       "configureForLayoutInDisplayMode:andSizeMode:inToolbarView:",
-       "configureForRolloverTrackingIfNecessary",
-       "configureForRolloverTrackingIfNecessaryForClipViewFrameChange",
-       "configureForShowsPreviews:",
-       "configureForSortedByFileProperty:ascending:caseSensitive:",
-       "configureForTreatsDirectoryAliasesAsDirectories:",
-       "configureForTreatsFilePackagesAsDirectories:",
-       "configurePersistentStoreCoordinatorForURL:ofType:error:",
-       "confirmCloseSheetIsDone:returnCode:contextInfo:",
-       "conformsTo:",
-       "conformsToProtocol:",
-       "connect",
-       "connectedToInternet:",
-       "connection",
-       "connection:didCancelAuthenticationChallenge:",
-       "connection:didFailWithError:",
-       "connection:didReceiveAuthenticationChallenge:",
-       "connection:didReceiveData:",
-       "connection:didReceiveData:lengthReceived:",
-       "connection:didReceiveResponse:",
-       "connection:handleRequest:",
-       "connection:shouldMakeNewConnection:",
-       "connection:willCacheResponse:",
-       "connection:willSendRequest:redirectResponse:",
-       "connectionDidFinishLoading:",
-       "connectionForProxy",
-       "connectionWasBroken:",
-       "connectionWasEstablished:",
-       "connectionWithReceivePort:sendPort:",
-       "connectionWithRegisteredName:host:",
-       "connectionWithRegisteredName:host:usingNameServer:",
-       "connectionsForKey:",
-       "constantValue",
-       "constrainFrameRect:toScreen:",
-       "constrainResizeEdge:withDelta:elapsedTime:",
-       "constrainScrollPoint:",
-       "constraintDefinitions",
-       "containerClassDescription",
-       "containerComponent",
-       "containerIsObjectBeingTested",
-       "containerIsRangeContainerObject",
-       "containerNode",
-       "containerNodeWithChildren:",
-       "containerSize",
-       "containerSpecifier",
-       "containsAttachments",
-       "containsIndex:",
-       "containsIndexesInRange:",
-       "containsItemForURLLatin1:length:",
-       "containsItemForURLString:",
-       "containsItemForURLUnicode:length:",
-       "containsObject:",
-       "containsObjectIdenticalTo:",
-       "containsPoint:",
-       "containsPort:forMode:",
-       "containsRect:",
-       "containsURL:",
-       "containsValueForKey:",
-       "content",
-       "contentAlpha",
-       "contentBinder",
-       "contentCountWithEditedMode:",
-       "contentDocument",
-       "contentFill",
-       "contentFrame",
-       "contentKind",
-       "contentMaxSize",
-       "contentMinSize",
-       "contentObjectKey",
-       "contentObjectWithEditedMode:contentIndex:",
-       "contentRect",
-       "contentRectForFrameRect:",
-       "contentRectForFrameRect:styleMask:",
-       "contentSize",
-       "contentSizeForFrameSize:hasHorizontalScroller:hasVerticalScroller:borderType:",
-       "contentValueKey",
-       "contentValueWithEditedMode:contentIndex:",
-       "contentView",
-       "contentWidth",
-       "contentWidthValueType",
-       "contentsAtPath:",
-       "contentsEqualAtPath:andPath:",
-       "context",
-       "contextHelpForKey:",
-       "contextHelpForObject:",
-       "contextID",
-       "contextMenuItemsForElement:",
-       "contextWithBitmap:rowBytes:bounds:format:options:",
-       "contextWithCGContext:",
-       "contextWithCGContext:options:",
-       "contextWithCGLContext:pixelFormat:options:",
-       "contextWithOptions:",
-       "continue",
-       "continueAfterBytesAvailable",
-       "continueAfterContentPolicy:",
-       "continueAfterContentPolicy:response:",
-       "continueAfterEndEncountered",
-       "continueAfterNavigationPolicy:formState:",
-       "continueBeginLoadInBackgroundAfterCreatingHTTPRequest",
-       "continueHeaderReadAfterFailureResponse",
-       "continueTracking:at:inView:",
-       "continueTrackingWithEvent:",
-       "continueWithoutCredentialForAuthenticationChallenge:",
-       "continuouslyUpdatesValue",
-       "control",
-       "control:didFailToFormatString:errorDescription:",
-       "control:didFailToFormatString:errorDescription:inFrame:",
-       "control:didFailToValidatePartialString:errorDescription:",
-       "control:didFailToValidatePartialString:errorDescription:inFrame:",
-       "control:isValidObject:",
-       "control:isValidObject:inFrame:",
-       "control:textShouldBeginEditing:",
-       "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",
-       "controlCharacterSet",
-       "controlColor",
-       "controlContentFontOfSize:",
-       "controlDarkShadowColor",
-       "controlDrawsSelectionHighlights",
-       "controlFillColor",
-       "controlHighlightColor",
-       "controlLightHighlightColor",
-       "controlMenu:",
-       "controlPointBounds",
-       "controlShadowColor",
-       "controlSize",
-       "controlTextColor",
-       "controlTextDidBeginEditing:",
-       "controlTextDidBeginEditing:inFrame:",
-       "controlTextDidChange:",
-       "controlTextDidChange:inFrame:",
-       "controlTextDidEndEditing:",
-       "controlTextDidEndEditing:inFrame:",
-       "controlView",
-       "controller",
-       "controller:didChangeToFilterPredicate:",
-       "controller:didChangeToSelectionIndexPaths:",
-       "controller:didChangeToSelectionIndexes:",
-       "controller:didChangeToSortDescriptors:",
-       "controllerForBinding:",
-       "controlsInForm:",
-       "conversationIdentifier",
-       "conversationRequest",
-       "convertAttributes:",
-       "convertBaseToScreen:",
-       "convertCString:toUnsignedInt64:withBase:",
-       "convertFont:",
-       "convertFont:toFace:",
-       "convertFont:toFamily:",
-       "convertFont:toHaveTrait:",
-       "convertFont:toNotHaveTrait:",
-       "convertFont:toSize:",
-       "convertPoint:fromView:",
-       "convertPoint:toView:",
-       "convertRect:fromView:",
-       "convertRect:toView:",
-       "convertScreenToBase:",
-       "convertSize:fromView:",
-       "convertSize:toView:",
-       "convertStringToUChar:",
-       "convertToDictionary",
-       "convertToRGBA:",
-       "convertType:data:to:inPasteboard:usingFilter:",
-       "convertWeight:ofFont:",
-       "convolveROI:forRect:",
-       "cookieAcceptPolicy",
-       "cookieWithProperties:",
-       "cookieWithV0Spec:forURL:locationHeader:",
-       "cookies",
-       "cookiesEnabled",
-       "cookiesForURL:",
-       "cookiesMatchingDomain:path:secure:",
-       "cookiesWithResponseHeaderFields:forURL:",
-       "copiesOnScroll",
-       "copy",
-       "copy:",
-       "copyBindingsFromObject:toObject:",
-       "copyCachedInstance",
-       "copyDOMNode:copier:",
-       "copyDOMTree:",
-       "copyDropDirectory",
-       "copyFont:",
-       "copyFromZone:",
-       "copyIcon",
-       "copyImageToClipboard:",
-       "copyLinkToClipboard:",
-       "copyOfCalendarDate",
-       "copyPath:toPath:handler:",
-       "copyPreviewIcon",
-       "copyRenderNode:copier:",
-       "copyRenderTree:",
-       "copyRuler:",
-       "copySerializationInto:",
-       "copyToObject:",
-       "copyWithZone:",
-       "copyright",
-       "cornerView",
-       "correlation",
-       "correlationTableName",
-       "count",
-       "countFiltered:",
-       "countForIndexPath:",
-       "countForNode:",
-       "countForObject:",
-       "countKeyPath",
-       "countOfCachedChildrenForNode:",
-       "coveredCharacterCache",
-       "coveredCharacterCacheData",
-       "coveredCharacterSet",
-       "crayonAtIndex:",
-       "crayonClosestToIndex:",
-       "crayonToLeft",
-       "crayonToLeftOfCrayon:",
-       "crayonToRight",
-       "crayonToRightOfCrayon:",
-       "crayons",
-       "createAdapterOperationsForDatabaseOperation:",
-       "createAndCacheRowHeightSumsIfNecessary",
-       "createCGImage:",
-       "createCGImage:format:",
-       "createCGImage:fromRect:format:",
-       "createCMYKColorSpace",
-       "createCSSStyleDeclaration",
-       "createCTTypesetter",
-       "createChildFrameNamed:withURL:renderPart:allowsScrolling:marginWidth:marginHeight:",
-       "createClassDescription",
-       "createCommandInstance",
-       "createCommandInstanceWithZone:",
-       "createConnection",
-       "createContext",
-       "createConversationForConnection:",
-       "createCopy:",
-       "createDictHashTable:",
-       "createDirectoryAtPath:attributes:",
-       "createDocumentFragment",
-       "createElement:",
-       "createElementContent:",
-       "createElementContentFromString:",
-       "createFTPReadStream",
-       "createFileAtPath:contents:attributes:",
-       "createGrayColorSpace",
-       "createKHTMLViewWithNSView:marginWidth:marginHeight:",
-       "createKeyValueBindingForKey:typeMask:",
-       "createMDQueryNodeRefIfNecessary",
-       "createMetadata",
-       "createNamedNodeFromNode:reader:",
-       "createPredicateForFetchFromPredicate:",
-       "createRGBColorSpace",
-       "createRandomKey:",
-       "createRange",
-       "createRealObject",
-       "createSchema",
-       "createSharedAdapter",
-       "createSharedBridge",
-       "createSharedFactory",
-       "createSharedGenerator",
-       "createStream:",
-       "createSymbolicLinkAtPath:pathContent:",
-       "createTablesForEntities:",
-       "createUniqueKey:",
-       "createWindowWithURL:frameName:",
-       "createsSortDescriptor",
-       "creationDate",
-       "credentialWithKeychainItem:",
-       "credentialWithUser:password:persistence:",
-       "credentialsForProtectionSpace:",
-       "credits",
-       "criticalValue",
-       "crosshairCursor",
-       "cssText",
-       "cssValueType",
-       "ctFontRef",
-       "cubeImage",
-       "current",
-       "currentAppleEvent",
-       "currentBrowsingNodePath",
-       "currentButtonCell",
-       "currentButtonClicked:",
-       "currentButtonState",
-       "currentClipRect",
-       "currentConstructionContext",
-       "currentContext",
-       "currentContextDrawingToScreen",
-       "currentCursor",
-       "currentDirectory",
-       "currentDirectoryNode",
-       "currentDirectoryPath",
-       "currentDocument",
-       "currentEditor",
-       "currentEvent",
-       "currentForm",
-       "currentFrame",
-       "currentFrameDuration",
-       "currentHandler",
-       "currentHost",
-       "currentInputContext",
-       "currentInputManager",
-       "currentItem",
-       "currentLocalSearchScopeNode",
-       "currentLocale",
-       "currentMode",
-       "currentOperation",
-       "currentPage",
-       "currentParagraphStyle",
-       "currentPluginView",
-       "currentPoint",
-       "currentProgress",
-       "currentReplyAppleEvent",
-       "currentResolvedDirectoryNode",
-       "currentRunLoop",
-       "currentSuiteAppleEventCode",
-       "currentSuiteTerminology",
-       "currentTaskDictionary",
-       "currentTextContainer",
-       "currentThread",
-       "currentTypeSelectDirectoryNode",
-       "currentValue",
-       "currentVoiceIdentifier",
-       "currentWindow",
-       "cursiveFontFamily",
-       "curveToPoint:controlPoint1:controlPoint2:",
-       "customAttributes",
-       "customTextEncodingName",
-       "customizationPaletteIsRunning",
-       "cut:",
-       "cyanColor",
-       "cyanComponent",
-       "cycleToNextInputKeyboardLayout:",
-       "cycleToNextInputLanguage:",
-       "cycleToNextInputScript:",
-       "cycleToNextInputServerInLanguage:",
-       "darkGrayColor",
-       "dashboardRegions",
-       "dashboardRegionsChanged:",
-       "data",
-       "data1",
-       "data2",
-       "dataCell",
-       "dataCellForRow:",
-       "dataForKey:",
-       "dataForObjectID:",
-       "dataForObjectID:withContext:",
-       "dataForPPI:",
-       "dataForResolutionData:",
-       "dataForType:",
-       "dataForType:fromPasteboard:",
-       "dataFromPropertyList:format:errorDescription:",
-       "dataFromRange:documentAttributes:error:",
-       "dataOfType:error:",
-       "dataRepresentation",
-       "dataRepresentationOfType:",
-       "dataSource",
-       "dataSourceUpdated:",
-       "dataStampForTriplet:littleEndian:",
-       "dataUsingEncoding:",
-       "dataUsingEncoding:allowLossyConversion:",
-       "dataWithBytes:length:",
-       "dataWithBytesNoCopy:length:",
-       "dataWithBytesNoCopy:length:freeWhenDone:",
-       "dataWithCapacity:",
-       "dataWithContentsOfFile:",
-       "dataWithContentsOfFile:options:error:",
-       "dataWithContentsOfMappedFile:",
-       "dataWithContentsOfURL:",
-       "dataWithContentsOfURL:options:error:",
-       "dataWithData:",
-       "dataWithEPSInsideRect:",
-       "dataWithLength:",
-       "dataWithPDFInsideRect:",
-       "database",
-       "databaseOperationForGlobalID:",
-       "databaseOperationForObject:",
-       "databaseOperator",
-       "databaseUUID",
-       "databaseVersion",
-       "date",
-       "dateByAddingYears:months:days:hours:minutes:seconds:",
-       "dateFormat",
-       "datePickerCell:validateProposedDateValue:timeInterval:",
-       "datePickerElements",
-       "datePickerMode",
-       "datePickerStyle",
-       "dateValue",
-       "dateWithNaturalLanguageString:",
-       "dateWithNaturalLanguageString:date:locale:",
-       "dateWithNaturalLanguageString:locale:",
-       "dateWithString:calendarFormat:locale:",
-       "dateWithTimeIntervalSince1970:",
-       "dateWithTimeIntervalSinceNow:",
-       "dateWithTimeIntervalSinceReferenceDate:",
-       "dateWithYear:month:day:hour:minute:second:timeZone:",
-       "dayOfMonth",
-       "dayOfWeek",
-       "dayOfYear",
-       "dbSnapshot",
-       "deactivate",
-       "dealloc",
-       "deallocAllExpandedNodes",
-       "deallocateCFNetworkResources",
-       "deallocatePayloadForObjectID:",
-       "debugDefault",
-       "debugDescription",
-       "decObservationCount",
-       "decimalDigitCharacterSet",
-       "decimalNumberByAdding:withBehavior:",
-       "decimalNumberByDividingBy:",
-       "decimalNumberByDividingBy:withBehavior:",
-       "decimalNumberByMultiplyingBy:withBehavior:",
-       "decimalNumberByMultiplyingByPowerOf10:withBehavior:",
-       "decimalNumberByRaisingToPower:withBehavior:",
-       "decimalNumberByRoundingAccordingToBehavior:",
-       "decimalNumberBySubtracting:withBehavior:",
-       "decimalNumberHandlerWithRoundingMode:scale:raiseOnExactness:raiseOnOverflow:raiseOnUnderflow:raiseOnDivideByZero:",
-       "decimalNumberWithDecimal:",
-       "decimalNumberWithString:",
-       "decimalNumberWithString:locale:",
-       "decimalSeparator",
-       "decimalTabMarkerWithRulerView:location:",
-       "decimalValue",
-       "declareTypes:owner:",
-       "decodeAllIntoBuffer:size:useZeroBytesForCRC:",
-       "decodeArrayOfObjCType:count:at:",
-       "decodeBoolForKey:",
-       "decodeBytesForKey:returnedLength:",
-       "decodeBytesWithReturnedLength:",
-       "decodeClassName:asClassName:",
-       "decodeData:",
-       "decodeDataObject",
-       "decodeDoubleForKey:",
-       "decodeDownloadData:dataForkData:resourceForkData:",
-       "decodeDownloadHeader",
-       "decodeDownloadHeader:headerLength:modificationTime:filename:",
-       "decodeFloatForKey:",
-       "decodeForkWithData:count:CRCCheckFlag:",
-       "decodeInt32ForKey:",
-       "decodeInt64ForKey:",
-       "decodeIntForKey:",
-       "decodeIntoBuffer:size:useZeroBytesForCRC:",
-       "decodeNXColor",
-       "decodeObject",
-       "decodeObjectForKey:",
-       "decodePoint",
-       "decodePointForKey:",
-       "decodePortObject",
-       "decodePropertyList",
-       "decodeRect",
-       "decodeRectForKey:",
-       "decodeReleasedProxies:",
-       "decodeRetainedObject",
-       "decodeReturnValueWithCoder:",
-       "decodeSize",
-       "decodeSizeForKey:",
-       "decodeValueOfObjCType:at:",
-       "decodeValuesOfObjCTypes:",
-       "decomposableCharacterSet",
-       "decomposedStringWithCanonicalMapping",
-       "decomposedStringWithCompatibilityMapping",
-       "decreaseUseCount",
-       "decrementButtonWithParent:",
-       "decrementRefCount",
-       "decrementRefCountForObjectID:",
-       "decrementSnapshotCountForGlobalID:",
-       "decryptComponents:",
-       "decryptWithDelegate:",
-       "deepNodeCopy:",
-       "deepPropertiesCopy:",
-       "deepSubnodeCopy:",
-       "deepestScreen",
-       "defaultAttachmentScaling",
-       "defaultBaselineOffsetForFont:",
-       "defaultBehavior",
-       "defaultButtonCell",
-       "defaultCStringEncoding",
-       "defaultCenter",
-       "defaultClassPath",
-       "defaultCollator",
-       "defaultCompletionDelay",
-       "defaultCredentialForProtectionSpace:",
-       "defaultDateFormatter",
-       "defaultDecimalNumberHandler",
-       "defaultDepthLimit",
-       "defaultFixedFontSize",
-       "defaultFlatness",
-       "defaultFocusRingType",
-       "defaultFontSize",
-       "defaultFormatterBehavior",
-       "defaultHandler",
-       "defaultIconSize",
-       "defaultIconWithSize:",
-       "defaultLabelFontAttribute",
-       "defaultLanguage",
-       "defaultLanguageCode",
-       "defaultLanguageContext",
-       "defaultLineCapStyle",
-       "defaultLineHeightForFont",
-       "defaultLineHeightForFont:",
-       "defaultLineJoinStyle",
-       "defaultLineWidth",
-       "defaultManager",
-       "defaultMappingGenerator",
-       "defaultMenu",
-       "defaultMiterLimit",
-       "defaultNamespaceForPrefix:",
-       "defaultNamespaceForURI:",
-       "defaultParagraphStyle",
-       "defaultPixelFormat",
-       "defaultPlaceholderForBinding:onObjectClass:",
-       "defaultPlaceholderForMarker:withBinding:",
-       "defaultPlaceholderLookupClassForBinding:object:",
-       "defaultPreferencesClass",
-       "defaultPrinter",
-       "defaultQueue",
-       "defaultShadowColor",
-       "defaultSortDescriptorPrototypeForTableColumn:",
-       "defaultStringDrawingTypesetterBehavior",
-       "defaultSubcontainerAttributeKey",
-       "defaultTabInterval",
-       "defaultTextColor",
-       "defaultTextColorWhenObjectValueIsUsed:",
-       "defaultTextEncodingName",
-       "defaultTimeZone",
-       "defaultTokenizingCharacterSet",
-       "defaultType",
-       "defaultTypesetterBehavior",
-       "defaultValue",
-       "defaultValueFontAttribute",
-       "defaultVoice",
-       "defaultWindingRule",
-       "defaultWritingDirectionForLanguage:",
-       "defaults",
-       "defaultsChanged:",
-       "deferSync",
-       "defersCallbacks",
-       "defersLoading",
-       "definition",
-       "delayedProcessGetInfoButtonClick:",
-       "delayedProcessLogonButtonClick:",
-       "delegate",
-       "delete:",
-       "deleteBackward:",
-       "deleteCharactersInRange:",
-       "deleteCookies:",
-       "deleteCorrelation:",
-       "deleteGlyphsInRange:",
-       "deleteImageTexture:name:userInfo:",
-       "deleteKeyPressed",
-       "deleteLastCharacter",
-       "deleteObject:",
-       "deleteObjectsInRange:",
-       "deleteRow:",
-       "deleteRows:atIndex:",
-       "deleteRule",
-       "deleteSelectionWithSmartDelete:",
-       "deletedObjects",
-       "deletesObjectsOnRemove",
-       "deliverResource",
-       "deliverResourceAfterDelay",
-       "deliverResult",
-       "deltaX",
-       "deltaY",
-       "deltaZ",
-       "deminiaturize:",
-       "depth",
-       "depthLimit",
-       "descender",
-       "descent",
-       "description",
-       "descriptionForClassMethod:",
-       "descriptionForInstanceMethod:",
-       "descriptionForMIMEType:",
-       "descriptionForMethod:",
-       "descriptionForOptionalSubelementName:",
-       "descriptionWithCalendarFormat:",
-       "descriptionWithCalendarFormat:locale:",
-       "descriptionWithCalendarFormat:timeZone:locale:",
-       "descriptionWithLocale:",
-       "descriptionWithLocale:indent:",
-       "descriptorAtIndex:",
-       "descriptorByTranslatingObject:ofType:inSuite:",
-       "descriptorForKeyword:",
-       "descriptorType",
-       "descriptorWithDescriptorType:bytes:length:",
-       "descriptorWithDescriptorType:data:",
-       "descriptorWithEnumCode:",
-       "descriptorWithInt32:",
-       "descriptorWithString:",
-       "descriptorWithTypeCode:",
-       "deselectAll",
-       "deselectAll:",
-       "deselectAllCells",
-       "deselectColumn:",
-       "deselectItemAtIndex:",
-       "deselectRow:",
-       "deselectSelectedCell",
-       "deselectText",
-       "deserializeAlignedBytesLengthAtCursor:",
-       "deserializeData:",
-       "deserializeIntAtCursor:",
-       "deserializeIntAtIndex:",
-       "deserializeInts:count:atCursor:",
-       "deserializeList:",
-       "deserializeListItemIn:at:length:",
-       "deserializeNewData",
-       "deserializeNewKeyString",
-       "deserializeNewList",
-       "deserializeNewObject",
-       "deserializeNewPList",
-       "deserializeNewString",
-       "deserializeObjectAt:ofObjCType:fromData:atCursor:",
-       "deserializePList:",
-       "deserializePListKeyIn:",
-       "deserializePListValueIn:key:length:",
-       "deserializePropertyListFromData:atCursor:mutableContainers:",
-       "deserializePropertyListFromData:mutableContainers:",
-       "deserializeString:",
-       "deserializer",
-       "destKey",
-       "destNode",
-       "destination",
-       "destinationAttributeName",
-       "destinationEntity",
-       "destinationEntityExternalName",
-       "destinationsForRelationship:",
-       "destroyAllPlugins",
-       "destroyContext",
-       "destroyStream:reason:",
-       "destroyStreamWithError:",
-       "detach",
-       "detachColorList:",
-       "detachInstanceInfo:",
-       "detachNewThreadSelector:toTarget:withObject:",
-       "detachQButton",
-       "detachQComboBox",
-       "detachQLineEdit",
-       "detachQScrollBar",
-       "detachQSlider",
-       "detachQTextEdit",
-       "detachSubmenu",
-       "detailedDescriptionForClass:",
-       "determineContentEncoding",
-       "determineErrorAndFail",
-       "determineHTTPEncodingFromString:",
-       "determineTransferEncoding",
-       "deviceCMYKColorSpace",
-       "deviceDescription",
-       "deviceGrayColorSpace",
-       "deviceID",
-       "deviceRGBColorSpace",
-       "dictionary",
-       "dictionaryForOptionalSubelementName:",
-       "dictionaryInfo:",
-       "dictionaryNesting:",
-       "dictionaryRepresentation",
-       "dictionaryWithCapacity:",
-       "dictionaryWithContentsOfFile:",
-       "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:pageCache:",
-       "didPostNotificationForNodeEventKind:notification:",
-       "didReceiveAuthenticationChallenge:",
-       "didReceiveData:lengthReceived:",
-       "didReceiveResponse:",
-       "didSave",
-       "didSendActionNotification:",
-       "didSetName:",
-       "didStart",
-       "didTurnIntoFault",
-       "differenceParameter:new:old:into:",
-       "directDataAvailable:",
-       "directDataComplete",
-       "directParameter",
-       "directory",
-       "directoryCanBeCreatedAtPath:",
-       "directoryContentsAtPath:",
-       "directoryContentsAtPath:matchingExtension:options:keepExtension:",
-       "disableCursorRects",
-       "disableDisplayPositing",
-       "disableFlush",
-       "disableFlushWindow",
-       "disableHeartBeating",
-       "disableKeyEquivalentForDefaultButtonCell",
-       "disableMakeHistory",
-       "disableUpdates",
-       "disabledControlTextColor",
-       "disabledWhenInactive",
-       "disappearingItemCursor",
-       "discardCursorRects",
-       "discardEditing",
-       "discardEventsMatchingMask:beforeEvent:",
-       "disconnect",
-       "dismissPopUp",
-       "dismissPopUp:",
-       "dispatch",
-       "dispatchEvent:",
-       "dispatchInvocation:",
-       "dispatchRawAppleEvent:withRawReply:handlerRefCon:",
-       "displaceROI:forRect:userInfo:",
-       "display",
-       "displayCompletions:indexOfSelectedItem:forPartialWordRange:originalString:atPoint:forTextView:",
-       "displayIfNeeded",
-       "displayIfNeededIgnoringOpacity",
-       "displayIfNeededInRect:",
-       "displayIfNeededInRectIgnoringOpacity:",
-       "displayIgnoringOpacity",
-       "displayMode",
-       "displayName",
-       "displayNameAtPath:",
-       "displayNameForType:",
-       "displayPattern",
-       "displayRect:",
-       "displayRectIgnoringOpacity:",
-       "displayStateForNode:",
-       "displayString",
-       "displayStringForLineHeightMultiple:min:max:lineSpacing:paragraphSpacingBefore:after:",
-       "displayStringsForAttributes:includeBoldItalic:",
-       "displayStringsForParagraphStyle:",
-       "displayToolTip:",
-       "displayValueForObjectValue:",
-       "displayableString",
-       "displayedFileProperties",
-       "displayedStringsArray",
-       "displayedTitle",
-       "displaysEnabledAtRow:",
-       "displaysTokenWhileEditing",
-       "displaysTooltips",
-       "displaysWhenScreenProfileChanges",
-       "disposeGlyphStack",
-       "dissolveToPoint:fraction:",
-       "dissolveToPoint:fromRect:fraction:",
-       "distantFuture",
-       "distantPast",
-       "divide:by:",
-       "dividerThickness",
-       "doCalcDrawInfo:",
-       "doClick:",
-       "doCommandBySelector:",
-       "doCommandBySelector:client:",
-       "doCompletion",
-       "doDoubleClick:",
-       "doFileCompletion:isAutoComplete:reverseCycle:",
-       "doProgressiveLoad",
-       "doProgressiveLoadHeader",
-       "doProgressiveLoadImage",
-       "doQueuedWork",
-       "doRegexForString:pattern:flags:",
-       "docFormatData",
-       "dockTitleIsGuess",
-       "document",
-       "documentAttribute:",
-       "documentAttributes",
-       "documentClassForType:",
-       "documentClassNames",
-       "documentContentKind",
-       "documentCursor",
-       "documentEdited",
-       "documentElement",
-       "documentForFileName:",
-       "documentForURL:",
-       "documentForWindow:",
-       "documentFragmentForDocument:",
-       "documentFragmentWithMarkupString:baseURLString:",
-       "documentFragmentWithText:",
-       "documentRect",
-       "documentRef",
-       "documentSource",
-       "documentState",
-       "documentView",
-       "documentViewAtWindowPoint:",
-       "documentVisibleRect",
-       "documents",
-       "doesContain:",
-       "doesNotRecognize:",
-       "doesNotRecognizeSelector:",
-       "domain",
-       "done",
-       "doneLoading",
-       "doneProcessingData",
-       "doneSendingPopUpAction:",
-       "doneTrackingMenu:",
-       "doubleAction",
-       "doubleClickAtIndex:",
-       "doubleClickAtIndex:inRange:",
-       "doubleClickHandler",
-       "doubleClickInString:atIndex:useBook:",
-       "doubleValue",
-       "download",
-       "download:decideDestinationWithSuggestedFilename:",
-       "download:didBeginChildDownload:",
-       "download:didCancelAuthenticationChallenge:",
-       "download:didCreateDestination:",
-       "download:didFailWithError:",
-       "download:didReceiveAuthenticationChallenge:",
-       "download:didReceiveDataOfLength:",
-       "download:didReceiveResponse:",
-       "download:shouldBeginChildDownloadOfSource:delegate:",
-       "download:shouldDecodeSourceDataOfMIMEType:",
-       "download:willResumeWithResponse:fromByte:",
-       "download:willSendRequest:redirectResponse:",
-       "downloadDelegate",
-       "downloadDidBegin:",
-       "downloadDidFinish:",
-       "downloadImageToDisk:",
-       "downloadLinkToDisk:",
-       "downloadURL:element:",
-       "downloadWindowForAuthenticationSheet:",
-       "dragCaretDOMRange",
-       "dragColor:withEvent:fromView:",
-       "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:",
-       "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",
-       "draggingSource",
-       "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:",
-       "drawCellAtRow:column:",
-       "drawColor",
-       "drawColor:",
-       "drawCrayonLayer",
-       "drawDividerInRect:",
-       "drawFocusRingInView:",
-       "drawFrame:",
-       "drawGlyphsForGlyphRange:atPoint:",
-       "drawGridInClipRect:",
-       "drawHashMarksAndLabelsInRect:",
-       "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:pinToTop:",
-       "drawInRect:withAlpha:operation:flipped:",
-       "drawInRect:withAttributes:",
-       "drawInView:",
-       "drawInsertionPointInRect:color:turnedOn:",
-       "drawInteriorWithFrame:inView:",
-       "drawKeyEquivalentWithFrame:inView:",
-       "drawKnob",
-       "drawKnob:",
-       "drawKnobSlotInRect:highlight:",
-       "drawLabel:inRect:",
-       "drawLineForCharacters:yOffset:withWidth:withColor:",
-       "drawLineForMisspelling:withWidth:",
-       "drawMarkersInRect:",
-       "drawNormalInteriorWithFrame:inView:",
-       "drawPageBorderWithSize:",
-       "drawPreviewInteriorWithFrame:inView:",
-       "drawRect:",
-       "drawRect:withPainter:",
-       "drawRepresentation:inRect:",
-       "drawResizeIndicator:",
-       "drawRevealoverTextWithFrame:inView:forView:",
-       "drawRow:clipRect:",
-       "drawRowIndexes:clipRect:",
-       "drawRun:style:geometry:",
-       "drawScroller:",
-       "drawSegment:inFrame:withView:",
-       "drawSelectionIndicatorInRect:",
-       "drawSeparatorInRect:",
-       "drawSeparatorItemWithFrame:inView:",
-       "drawSortIndicatorWithFrame:inView:ascending:priority:",
-       "drawSpellingUnderlineForGlyphRange:spellingState:inGlyphRange:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:",
-       "drawStateImageWithFrame:inView:",
-       "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:",
-       "drawWindowBackgroundRegion:",
-       "drawWindowBackgroundRegion:level:",
-       "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",
-       "drawsGrid",
-       "dropFirstComponent:",
-       "dropLastComponent:",
-       "dstDraggingDepositedAtPoint:draggingInfo:",
-       "dstDraggingEnteredAtPoint:draggingInfo:",
-       "dstDraggingExitedAtPoint:draggingInfo:",
-       "dstDraggingMovedToPoint:draggingInfo:",
-       "duration",
-       "dynamicToolTipRectAtPoint:",
-       "dynamicToolTipRevealoverInfoAtPoint:trackingRect:",
-       "dynamicToolTipStringAtPoint:trackingRect:",
-       "eMapResult:eMap:arcsinTable:",
-       "echosBullets",
-       "edge",
-       "editColumn:row:withEvent:select:",
-       "editWithFrame:inView:editor:delegate:event:",
-       "editableBinder",
-       "editableDOMRangeForPoint:",
-       "editableState",
-       "editableStateAtIndex:",
-       "editableStateAtIndexPath:",
-       "edited",
-       "edited:range:changeInLength:",
-       "editedColumn",
-       "editedMask",
-       "editedMode:forEditingOrAction:",
-       "editedRange",
-       "editedRow",
-       "editedToolbar",
-       "editingBinderForControl:",
-       "editingColorAdjustableObject:",
-       "editingContextMenuItemsForElement:",
-       "editingDelegate",
-       "editingHasBegun:",
-       "editingHasEnded:",
-       "editingStringForObjectValue:",
-       "editingWasAborted:",
-       "editor",
-       "editorDidBeginEditing:",
-       "editorDidEndEditing:",
-       "editorWithObject:",
-       "eject",
-       "ejectButtonPressedAction:",
-       "element",
-       "elementAt:",
-       "elementAtIndex:",
-       "elementAtIndex:associatedPoints:",
-       "elementAtIndex:effectiveRange:",
-       "elementAtPoint:",
-       "elementCount",
-       "elementDoesAutoComplete:",
-       "elementForView:",
-       "elementIsPassword:",
-       "elementName",
-       "elementTypeDescription",
-       "elementWithName:inForm:",
-       "elementWithRole:parent:",
-       "elementWithRole:subrole:parent:",
-       "elementsForLocalName:URI:",
-       "elementsForName:",
-       "emapROI:forRect:",
-       "empty",
-       "emptyAttributeDictionary",
-       "enable:",
-       "enableAll:",
-       "enableCursorRects",
-       "enableFlushWindow",
-       "enableFreedObjectCheck:",
-       "enableKeyEquivalentForDefaultButtonCell",
-       "enableMakeHistory",
-       "enableMultipleThreads",
-       "enableRelease:",
-       "enableSecureInput:",
-       "enableSecureString:",
-       "enableUpdates",
-       "enabledFileTypes",
-       "enabledState",
-       "enabledStateAtIndex:",
-       "enabledStateAtIndexPath:",
-       "enabledStateForMenuItem:",
-       "enclosingClipViewBoundsOrFrameDidChangeNotification:",
-       "enclosingScrollView",
-       "encodeArrayOfObjCType:count:at:",
-       "encodeBool:forKey:",
-       "encodeBycopyObject:",
-       "encodeBytes:length:",
-       "encodeBytes:length:forKey:",
-       "encodeConditionalObject:",
-       "encodeConditionalObject:forKey:",
-       "encodeDataObject:",
-       "encodeDouble:forKey:",
-       "encodeFloat:forKey:",
-       "encodeInt32:forKey:",
-       "encodeInt64:forKey:",
-       "encodeInt:forKey:",
-       "encodeObject:",
-       "encodeObject:forKey:",
-       "encodeObject:isBycopy:isByref:",
-       "encodePoint:",
-       "encodePoint:forKey:",
-       "encodePortObject:",
-       "encodePropertyList:",
-       "encodeRect:",
-       "encodeRect:forKey:",
-       "encodeReturnValueWithCoder:",
-       "encodeRootObject:",
-       "encodeSize:",
-       "encodeSize:forKey:",
-       "encodeValueOfObjCType:at:",
-       "encodeValuesOfObjCTypes:",
-       "encodeWithCoder:",
-       "encodeWithCoder:colorSpaceCode:",
-       "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:",
-       "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",
-       "entityNameOrderingArrayForEntities:",
-       "entityNamed:",
-       "entryForNode:inCachedChildrenForNode:",
-       "entryState:",
-       "entryType",
-       "enumCodeValue",
-       "enumerationDescriptionFromName:implDeclaration:presoDeclaration:",
-       "enumerations",
-       "enumeratorAtPath:",
-       "enumeratorDescriptions",
-       "error",
-       "error:",
-       "errorExpectedType",
-       "errorForReason:",
-       "errorNumber",
-       "errorOffendingObjectDescriptor",
-       "errorStringForFTPStatusCode:fromURL:",
-       "errorWithDomain:code:userInfo:",
-       "establishConnection",
-       "evaluate",
-       "evaluateFromResolutionArray:valueArray:arrayCount:atResolution:",
-       "evaluateJavaScriptPluginRequest:",
-       "evaluatePredicates:withObject:variableBindings:",
-       "evaluateWithObject:",
-       "evaluateWithObject:variableBindings:",
-       "evaluateXQuery:constants:contextItem:error:",
-       "evaluatedArguments",
-       "evaluatedReceivers",
-       "evaluationErrorNumber",
-       "evaluationErrorSpecifier",
-       "event",
-       "eventClass",
-       "eventID",
-       "eventMayStartDrag:",
-       "eventNumber",
-       "eventQueue",
-       "exactSizeToCellsSize",
-       "exceptionAddingEntriesToUserInfo:",
-       "exceptionDuringOperation:error:leftOperand:rightOperand:",
-       "exceptionRememberingObject:key:",
-       "exceptionWithName:reason:userInfo:",
-       "exclusives",
-       "executablePath",
-       "executableType",
-       "execute",
-       "executeCommand",
-       "executeFetchRequest:error:",
-       "executeFetchRequest:withContext:",
-       "executeRequest:withContext:",
-       "executeSaveChangesRequest:withContext:",
-       "executionContextForView:",
-       "expandIndexPath:",
-       "expandItem:",
-       "expandItem:expandChildren:",
-       "expandedNodes",
-       "expandedNodesForObservedNode:",
-       "expandedRingROI:::",
-       "expect:",
-       "expectEndOfInput",
-       "expectSeparatorEqualTo:",
-       "expectedContentLength",
-       "expiresDate",
-       "expiresTimeForResponse:",
-       "exposeBinding:",
-       "exposedBindings",
-       "expressionForConstantValue:",
-       "expressionForKeyPath:",
-       "expressionType",
-       "expressionValueWithObject:context:",
-       "extendPowerOffBy:",
-       "extensionEnumerator",
-       "extensionsForMIMEType:",
-       "extent",
-       "externalDataForObjectID:timestamp:",
-       "externalDataForSourceObjectID:key:timestamp:",
-       "externalName",
-       "externalNameForEntityName:",
-       "externalNameForPropertyName:",
-       "externalPrecision",
-       "externalScale",
-       "externalType",
-       "extraArgument2",
-       "extraLineFragmentRect",
-       "extraLineFragmentTextContainer",
-       "extraLineFragmentUsedRect",
-       "extractHeaderInfo:",
-       "fadeToolTip:",
-       "failWithError:",
-       "failureReason",
-       "failureResponse",
-       "fallbackFontWithTraits:size:",
-       "familyName",
-       "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",
-       "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:",
-       "fieldEditorTextDidChange:",
-       "file",
-       "fileAttributes",
-       "fileAttributesAtPath:traverseLink:",
-       "fileAttributesToWriteToFile:ofType:saveOperation:",
-       "fileAttributesToWriteToURL:ofType:forSaveOperation:originalContentsURL:error:",
-       "fileButton",
-       "fileButtonWithDelegate:",
-       "fileDescriptor",
-       "fileExistsAtPath:",
-       "fileExistsAtPath:isDirectory:",
-       "fileExtensionsFromType:",
-       "fileHFSCreatorCode",
-       "fileHFSTypeCode",
-       "fileHandleForReading",
-       "fileHandleForReadingAtPath:",
-       "fileHandleForWriting",
-       "fileHandleWithNullDevice",
-       "fileHandleWithStandardError",
-       "fileHandleWithStandardInput",
-       "fileHandleWithStandardOutput",
-       "fileListMode",
-       "fileListOrderedByFileProperty",
-       "fileManager:shouldProceedAfterError:",
-       "fileManager:willProcessPath:",
-       "fileModificationDate",
-       "fileName",
-       "fileNameExtensionWasHiddenInLastRunSavePanel",
-       "fileNameFromRunningSavePanelForSaveOperation:",
-       "fileNamesFromRunningOpenPanel",
-       "filePosixPermissions",
-       "fileProperty",
-       "fileSpecForName:atDestination:",
-       "fileSystemAttributesAtPath:",
-       "fileSystemRepresentation",
-       "fileSystemRepresentationWithPath:",
-       "fileType",
-       "fileTypeFromLastRunSavePanel",
-       "fileURL",
-       "fileURLWithPath:",
-       "fileWrapper",
-       "fileWrapperForURL:",
-       "fileWrapperFromRange:documentAttributes:error:",
-       "fileWrapperOfType:error:",
-       "fileWrapperRepresentationOfType:",
-       "fileWrappers",
-       "filelistDelegate",
-       "filename",
-       "filenameChanged:",
-       "filenameToDrag:",
-       "filenameWithOriginalFilename:",
-       "filenames",
-       "filepath",
-       "filepathLabel",
-       "fill",
-       "fillAttributesCache",
-       "fillObjCType:count:at:",
-       "fillRect",
-       "fillRect:",
-       "filter",
-       "filterClassDescription",
-       "filterEvents:",
-       "filterKeyDown:",
-       "filterNamesInCategories:",
-       "filterPredicate",
-       "filterUsingPredicate:",
-       "filterWithName:",
-       "filterWithName:keysAndValues:",
-       "filteredArrayUsingPredicate:",
-       "filteredImage:keysAndValues:",
-       "filteredIndexForActualIndex:",
-       "finalWritePrintInfo",
-       "finalize",
-       "finalizeForWebScript",
-       "findBundleResources:callingMethod:directory:languages:name:types:limit:",
-       "findClass:",
-       "findCombinationForLetter:accent:",
-       "findFontLike:forCharacter:inLanguage:",
-       "findFontLike:forString:withRange:inLanguage:",
-       "findFontLike:traits:forCharacters:length:inLanguage:checkCoveredCache:",
-       "findFrameNamed:",
-       "findInView:forward:",
-       "findIndex:forDay:",
-       "findPPDFileName:",
-       "findPanel:",
-       "findSidebarNodeForNode:",
-       "findSoundFor:",
-       "findString",
-       "findString:selectedRange:options:",
-       "findString:selectedRange:options:wrap:",
-       "findVoiceByIdentifier:returningCreator:returningID:",
-       "fini",
-       "finish",
-       "finishDataLoad",
-       "finishDecoding",
-       "finishDownloadDecoding",
-       "finishEncoding",
-       "finishEncoding:",
-       "finishJobAndHandle",
-       "finishLaunching",
-       "finishProgressiveLoad:",
-       "finishProvideNewSubviewSetup",
-       "finishUnarchiving",
-       "finishUsingMenuRepresentation",
-       "finishedLoadingWithData:",
-       "finishedLoadingWithDataSource:",
-       "fireDate",
-       "firstChild",
-       "firstComponent:",
-       "firstIndentMarkerWithRulerView:location:",
-       "firstIndex",
-       "firstLineHeadIndent",
-       "firstObjectCommonWithArray:",
-       "firstPresentableName",
-       "firstRange",
-       "firstRectForCharacterRange:",
-       "firstRectForDOMRange:",
-       "firstResponder",
-       "firstTextView",
-       "firstTextViewForTextStorage:",
-       "firstUnlaidCharacterIndex",
-       "firstUnlaidGlyphIndex",
-       "firstVisibleColumn",
-       "fixAttachmentAttributeInRange:",
-       "fixAttributesInRange:",
-       "fixFontAttributeInRange:",
-       "fixGlyphInfoAttributeInRange:",
-       "fixInvalidatedFocusForFocusView",
-       "fixParagraphStyleAttributeInRange:",
-       "fixedFontFamily",
-       "fixesAttributesLazily",
-       "fixupDirInfo:",
-       "fk",
-       "flags",
-       "flagsChanged:",
-       "flatness",
-       "flattenIntoPath:",
-       "floatCocoaVersion",
-       "floatForKey:",
-       "floatParameterValue:forResolution:",
-       "floatValue",
-       "floatWidthForRun:style:widths:",
-       "flush",
-       "flushAllCachedChildren",
-       "flushAllCaches",
-       "flushAllKeyBindings",
-       "flushBufferedKeyEvents",
-       "flushCachedChildren",
-       "flushCachedChildrenForNode:",
-       "flushCachedData",
-       "flushCaches",
-       "flushClassKeyBindings",
-       "flushDataForTriplet:littleEndian:",
-       "flushGraphics",
-       "flushHostCache",
-       "flushKeyBindings",
-       "flushRasterCache",
-       "flushTextForClient:",
-       "flushWindow",
-       "focusChanged:",
-       "focusRingType",
-       "focusStack",
-       "focusView",
-       "focusView:inWindow:",
-       "focusWindow",
-       "focusedSwatchRect",
-       "focusedView",
-       "folderPath",
-       "font",
-       "fontAttributes",
-       "fontAttributesForSelectionStart",
-       "fontAttributesInRange:",
-       "fontDescriptor",
-       "fontDescriptorByAddingAttributes:",
-       "fontDescriptorWithFamily:",
-       "fontDescriptorWithFontAttributes:",
-       "fontDescriptorWithMatrix:",
-       "fontDescriptorWithName:matrix:",
-       "fontDescriptorWithName:size:",
-       "fontDescriptorWithSize:",
-       "fontForSelection:",
-       "fontInstanceForFontDescriptor:size:affineTransform:renderingMode:",
-       "fontInstanceForRenderingMode:",
-       "fontInvalidationCapableObjectForObject:",
-       "fontMenu:",
-       "fontName",
-       "fontNameWithFamily:traits:weight:",
-       "fontPanel:",
-       "fontPanelDidChooseCollection:",
-       "fontPanelDidChooseFace:",
-       "fontPanelDidChooseFamily:",
-       "fontPanelDidChooseSize:",
-       "fontSize",
-       "fontWithDescriptor:size:",
-       "fontWithDescriptor:textTransform:",
-       "fontWithFamilies:traits:size:",
-       "fontWithFamily:traits:size:",
-       "fontWithFamily:traits:weight:size:",
-       "fontWithName:matrix:",
-       "fontWithName:size:",
-       "forceLayoutAdjustingViewSize:",
-       "forceLayoutWithMinimumPageWidth:maximumPageWidth:adjustingViewSize:",
-       "forcePromise:",
-       "forceRedraw",
-       "forceSetMode:",
-       "foreignEntityKey",
-       "foreignEntityKeyColumns",
-       "foreignEntityKeyForSlot:",
-       "foreignKey",
-       "foreignKeyColumnDefinitions",
-       "foreignKeyColumns",
-       "foreignKeyConstraintDefinitions",
-       "foreignKeyForSlot:",
-       "foreignKeys",
-       "forgetAllExternalData",
-       "forgetAllSnapshots",
-       "forgetExternalDataForObjectID:",
-       "forgetSnapshotForGlobalID:",
-       "forgetSnapshotsForGlobalIDs:",
-       "forgetWord:",
-       "forgetWord:language:",
-       "form",
-       "formContentType",
-       "formData",
-       "formForElement:",
-       "formReferrer",
-       "formUnionWithCharacterSet:",
-       "formalName",
-       "formattedValueInObject:errorEncountered:error:",
-       "formatter",
-       "formatterBehavior",
-       "formatterOfObject:",
-       "forward::",
-       "forwardInvocation:",
-       "forwardItem",
-       "forwardListCount",
-       "fractionOfDistanceThroughGlyphForPoint:inTextContainer:",
-       "fragment",
-       "frame",
-       "frame:resizedFromEdge:withDelta:",
-       "frame:sourceFrame:willSubmitForm:withValues:submissionListener:",
-       "frameAutosaveName",
-       "frameCount",
-       "frameDetached",
-       "frameDidChange:",
-       "frameElement",
-       "frameLength",
-       "frameLoadDelegate",
-       "frameName",
-       "frameOfCellAtColumn:row:",
-       "frameOfColumn:",
-       "frameOfInsideOfColumn:",
-       "frameRate",
-       "frameRectForContentRect:",
-       "frameRectForContentRect:styleMask:",
-       "frameRequiredForMIMEType:URL:",
-       "frameSizeForContentSize:hasHorizontalScroller:hasVerticalScroller:borderType:",
-       "frameView",
-       "frameViewClassForStyleMask:",
-       "free",
-       "freeAttributeKeysAndValues",
-       "freeBitsAndReleaseDataIfNecessary",
-       "freeSerialized:length:",
-       "freeSpace",
-       "from:subtract:",
-       "fulfillAggregateFaultForObject:andRelationship:withContext:",
-       "fulfillFault:withContext:",
-       "fullJustifyLineAtGlyphIndex:",
-       "fullMetadata",
-       "fullPathForApplication:",
-       "gState",
-       "gamma",
-       "garbageCollect",
-       "gaussianBlur",
-       "generalPasteboard",
-       "generateFrameName",
-       "generateGlyphsForGlyphStorage:desiredNumberOfCharacters:glyphIndex:characterIndex:",
-       "generateGlyphsForLayoutManager:range:desiredNumberOfCharacters:startingAtGlyphIndex:completedRange:nextGlyphIndex:",
-       "generatePropertyName:",
-       "generateTableName:",
-       "generatesCalendarDates",
-       "generatesDecimalNumbers",
-       "generatorClass",
-       "genericCMYKColorSpace",
-       "genericColorSpace",
-       "genericGrayColorSpace",
-       "genericRGBColorSpace",
-       "getAdvancements:forGlyphs:count:",
-       "getAdvancements:forPackedGlyphs:length:",
-       "getAppletInView:",
-       "getArgument:atIndex:",
-       "getArgumentTypeAtIndex:",
-       "getAttribute:",
-       "getAttributesForCharacterIndex:",
-       "getBitmapDataPlanes:",
-       "getByte",
-       "getBytes:",
-       "getBytes:length:",
-       "getBytes:maxLength:filledLength:encoding:allowLossyConversion:range:remainingRange:",
-       "getBytes:maxLength:usedLength:encoding:options:range:remainingRange:",
-       "getBytes:range:",
-       "getCFRunLoop",
-       "getCString:",
-       "getCString:maxLength:encoding:",
-       "getCString:maxLength:range:remainingRange:",
-       "getCarbonEvent:",
-       "getCarbonEvent:withEvent:",
-       "getCharacters:",
-       "getCharacters:range:",
-       "getClasses",
-       "getClassesFromResourceLocator:",
-       "getComponents:",
-       "getCompression:factor:",
-       "getComputedStyle::",
-       "getCursorPositionAsIndex:inParagraph:",
-       "getCustomAdvance:forIndex:",
-       "getCyan:magenta:yellow:black:alpha:",
-       "getDirInfo:",
-       "getDocument:docInfo:",
-       "getFileSystemRepresentation:maxLength:",
-       "getFileSystemRepresentation:maxLength:withPath:",
-       "getFilenamesAndDropLocation",
-       "getFirstUnlaidCharacterIndex:glyphIndex:",
-       "getFloatValue:",
-       "getGlyphsInRange:glyphs:characterIndexes:glyphInscriptions:elasticBits:bidiLevels:",
-       "getHIViewForNSView:",
-       "getHue:saturation:brightness:alpha:",
-       "getHyphenLocations:inString:",
-       "getHyphenLocations:inString:wordAtIndex:",
-       "getImage:rect:",
-       "getIndexes:maxCount:inIndexRange:",
-       "getInfoButtonCell",
-       "getLELong",
-       "getLEWord",
-       "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",
-       "getNewIDForObject:",
-       "getNodeAsContainerNodeForBrowsing:",
-       "getNodeAsDeepResolvedNode:",
-       "getNodeAsInfoNode:",
-       "getNodeAsResolvedNode:",
-       "getNumberOfRows:columns:",
-       "getObjectCacheSize",
-       "getObjectValue:forString:errorDescription:",
-       "getObjectValue:forString:range:error:",
-       "getObjects:",
-       "getObjects:andKeys:",
-       "getObjects:range:",
-       "getParagraphStart:end:contentsEnd:forRange:",
-       "getPath",
-       "getPeriodicDelay:interval:",
-       "getPluginInfoFromBundleAndMIMEDictionary:",
-       "getPluginInfoFromPLists",
-       "getPluginInfoFromResources",
-       "getProperties",
-       "getProperty::",
-       "getPropertyCSSValue:",
-       "getPropertyValue:",
-       "getRGBColorValue",
-       "getRects:count:",
-       "getRectsBeingDrawn:count:",
-       "getRectsExposedDuringLiveResize:count:",
-       "getRed:green:blue:alpha:",
-       "getReleasedProxies:length:",
-       "getRemote:",
-       "getResourceLocator",
-       "getReturnValue:",
-       "getRotationAngle",
-       "getRow:column:forPoint:",
-       "getRow:column:ofCell:",
-       "getRulebookData:makeSharable:littleEndian:",
-       "getSavedNumVisibleRows:",
-       "getSnapToWidthList:snapRadiusList:count:",
-       "getState:",
-       "getStringValue",
-       "getTypographicLineHeight:baselineOffset:leading:",
-       "getURL:target:",
-       "getURLNotify:target:notifyData:",
-       "getValue:",
-       "getValueFromObject:",
-       "getVariable:value:",
-       "getWhite:alpha:",
-       "globallyUniqueString",
-       "glyphAtIndex:",
-       "glyphAtIndex:isValidIndex:",
-       "glyphBufferForFont:andColor:",
-       "glyphGenerator",
-       "glyphGeneratorForEncoding:language:font:",
-       "glyphGeneratorForEncoding:language:font:makeSharable:",
-       "glyphGeneratorForTriplet:makeSharable:",
-       "glyphIndexForPoint:inTextContainer:",
-       "glyphIndexForPoint:inTextContainer:fractionOfDistanceThroughGlyph:",
-       "glyphIndexToBreakLineByClippingAtIndex:",
-       "glyphIndexToBreakLineByHyphenatingWordAtIndex:",
-       "glyphIndexToBreakLineByWordWrappingAtIndex:",
-       "glyphInfoWithCharacterIdentifier:collection:baseString:",
-       "glyphInfoWithGlyph:forFont:baseString:",
-       "glyphInfoWithGlyphName:forFont:baseString:",
-       "glyphIsEncoded:",
-       "glyphName",
-       "glyphPacking",
-       "glyphRange",
-       "glyphRangeForBoundingRect:inTextContainer:",
-       "glyphRangeForBoundingRectWithoutAdditionalLayout:inTextContainer:",
-       "glyphRangeForCharacterRange:actualCharacterRange:",
-       "glyphRangeForTextContainer:",
-       "glyphWithName:",
-       "goBack",
-       "goBack:",
-       "goBackOrForward:",
-       "goBackwardInHistoryIfPossible",
-       "goForward",
-       "goForward:",
-       "goForwardInHistoryIfPossible",
-       "goToBackForwardItem:",
-       "goToItem:",
-       "goUpDirectory",
-       "gotString",
-       "gotoSheetDidEnd:returnCode:contextInfo:",
-       "grabberImage",
-       "gradientROI:forRect:",
-       "graphicsContextWithAttributes:",
-       "graphicsPort",
-       "graphiteControlTintColor",
-       "grayColor",
-       "green",
-       "greenColor",
-       "greenComponent",
-       "gregorianCalendar",
-       "greySliderFrameChangedNotification:",
-       "gridColor",
-       "gridStyleMask",
-       "groupIdentifier",
-       "groupName",
-       "groupingSeparator",
-       "groupsByEvent",
-       "growBoxWithParent:",
-       "growBuffer:current:end:factor:",
-       "growGlyphCaches:fillGlyphInfo:",
-       "guessDockTitle:",
-       "guessesForWord:",
-       "handleAppTermination:",
-       "handleAutoscrollForMouseDragged:",
-       "handleCarbonBoundsChange",
-       "handleCloseScriptCommand:",
-       "handleCommandEvent:withReplyEvent:",
-       "handleCurrentDirectoryNodeChanged",
-       "handleDelayedUpdate:",
-       "handleDelegateChangedCurrentDirectory",
-       "handleDelegateChangedSelection",
-       "handleDelegateClickedFauxDisabledNode:",
-       "handleDelegateConfirmedSelection",
-       "handleDelegateMovedDiplayedProperty:toIndex:",
-       "handleDroppedConnection",
-       "handleEndEncountered",
-       "handleFailureInFunction:file:lineNumber:description:",
-       "handleFailureInMethod:object:file:lineNumber:description:",
-       "handleFetchRequest:",
-       "handleFileListModeChanged",
-       "handleGetAETEEvent:withReplyEvent:",
-       "handleHasBytesAvailable",
-       "handleKeyboardShortcutWithEvent:",
-       "handleMachMessage:",
-       "handleMetadataCallback",
-       "handleMouseDownEvent:at:inPart:withMods:",
-       "handleMouseEvent:",
-       "handleNodePropertyChanged",
-       "handleObservingRefresh:",
-       "handlePortCoder:",
-       "handlePortMessage:",
-       "handlePreviewTextChange",
-       "handlePreviewTextUpdate",
-       "handlePrintScriptCommand:",
-       "handleQueryWithUnboundKey:",
-       "handleReadStreamEvent:event:",
-       "handleReleasedProxies:length:",
-       "handleRequest:sequence:",
-       "handleRootNodeChanged",
-       "handleSaveScriptCommand:",
-       "handleSetFrameCommonRedisplay",
-       "handleTakeValue:forUnboundKey:",
-       "handleUserGoUpDirectory",
-       "handleValidationError:description:inEditor:errorUserInterfaceHandled:",
-       "handlesContentAsCompoundValue",
-       "handlesObject:",
-       "handlesRequest:",
-       "hasAdditionalClip",
-       "hasAlpha",
-       "hasAttachmentMenu",
-       "hasBackingStore",
-       "hasChanges",
-       "hasChangesPending",
-       "hasChildNodes",
-       "hasCloseBox",
-       "hasCredentials",
-       "hasDirectoryNode",
-       "hasDynamicDepthLimit",
-       "hasEditedDocuments",
-       "hasEditor",
-       "hasElasticRange",
-       "hasHorizontalRuler",
-       "hasHorizontalScroller",
-       "hasImageWithAlpha",
-       "hasItemsToDisplayInPopUp",
-       "hasMarkedText",
-       "hasMetadataTable",
-       "hasNodeLabel",
-       "hasOpenTransaction",
-       "hasPageCache",
-       "hasPassword",
-       "hasPrefix:",
-       "hasRunLoop:",
-       "hasSelectedColor",
-       "hasShadow",
-       "hasSubentities",
-       "hasSubmenu",
-       "hasSuffix:",
-       "hasThousandSeparators",
-       "hasUndoManager",
-       "hasVerticalRuler",
-       "hasVerticalScroller",
-       "hash",
-       "hashForID:",
-       "haveCompleteImage",
-       "haveCredentialForURL:",
-       "headIndent",
-       "headerCell",
-       "headerColor",
-       "headerLevel",
-       "headerRectOfColumn:",
-       "headerTextColor",
-       "headerView",
-       "heartBeat:",
-       "hebrewCalendar",
-       "heightAdjustLimit",
-       "heightForNumberOfVisibleRows:",
-       "heightTracksTextView",
-       "helpAnchor",
-       "helpRequested:",
-       "helpText",
-       "hexString",
-       "hiddenState",
-       "hiddenStateAtIndex:",
-       "hiddenStateAtIndexPath:",
-       "hide",
-       "hide:",
-       "hideOtherApplications:",
-       "hideRolloverWindow",
-       "hideToolbar:",
-       "hidesOnDeactivate",
-       "highlight:",
-       "highlight:withFrame:inView:",
-       "highlightCell:atRow:column:",
-       "highlightColor",
-       "highlightColor:",
-       "highlightColorInView:",
-       "highlightColorWithFrame:inView:",
-       "highlightMode",
-       "highlightROI:forRect:",
-       "highlightSelectionInClipRect:",
-       "highlightWithLevel:",
-       "highlightedBranchImage",
-       "highlightedItemIndex",
-       "highlightedTableColumn",
-       "highlightsBy",
-       "hintCapacity",
-       "historyAgeInDaysLimit",
-       "historyItemLimit",
-       "historyLength",
-       "historyProvider",
-       "hitPart",
-       "hitTest:",
-       "horizontalEdgePadding",
-       "horizontalLineScroll",
-       "horizontalPagination",
-       "horizontalRulerView",
-       "horizontalScroller",
-       "horizontalScrollingMode",
-       "host",
-       "hostNameResolved:",
-       "hostWindow",
-       "hostWithName:",
-       "hotSpot",
-       "hourOfDay",
-       "href",
-       "hueComponent",
-       "hyphenCharacterForGlyphAtIndex:",
-       "hyphenGlyph",
-       "hyphenGlyphForLocale:",
-       "hyphenationFactor",
-       "hyphenationFactorForGlyphAtIndex:",
-       "iDiskNode",
-       "icon",
-       "iconAsAttributedString",
-       "iconForFile:",
-       "iconForFileType:",
-       "iconForSize:",
-       "iconForSpecifier:size:",
-       "iconForURL:withSize:",
-       "iconForURL:withSize:cache:",
-       "iconRect",
-       "iconSize",
-       "identifier",
-       "identity",
-       "ignore",
-       "ignoreModifierKeysWhileDragging",
-       "ignoreSpelling:",
-       "ignoreWord:inSpellDocumentWithTag:",
-       "ignoresAlpha",
-       "ignoresMouseEvents",
-       "illegalCharacterSet",
-       "image",
-       "image:didLoadPartOfRepresentation:withValidRows:",
-       "image:didLoadRepresentation:withStatus:",
-       "image:didLoadRepresentationHeader:",
-       "image:focus:",
-       "image:willLoadRepresentation:",
-       "imageAlignment",
-       "imageAndTitleOffset",
-       "imageAndTitleWidth",
-       "imageAtIndex:",
-       "imageBounds",
-       "imageByApplyingTransform:",
-       "imageDidNotDraw:inRect:",
-       "imageFileTypes",
-       "imageForPreferenceNamed:",
-       "imageForSegment:",
-       "imageForState:",
-       "imageFrameStyle",
-       "imageInterpolation",
-       "imageNamed:",
-       "imagePasteboardTypes",
-       "imagePosition",
-       "imageRectForBounds:",
-       "imageRectInRuler",
-       "imageRef",
-       "imageRenderer",
-       "imageRendererWithBytes:length:",
-       "imageRendererWithBytes:length:MIMEType:",
-       "imageRendererWithData:MIMEType:",
-       "imageRendererWithMIMEType:",
-       "imageRendererWithName:",
-       "imageRendererWithSize:",
-       "imageRepClassForData:",
-       "imageRepClassForFileType:",
-       "imageRepClassForPasteboardType:",
-       "imageRepWithContentsOfFile:",
-       "imageRepWithContentsOfURL:",
-       "imageRepWithData:",
-       "imageRepsWithContentsOfFile:",
-       "imageRepsWithContentsOfURL:",
-       "imageRepsWithData:",
-       "imageScaling",
-       "imageSize",
-       "imageUnfilteredFileTypes",
-       "imageUnfilteredPasteboardTypes",
-       "imageWidth",
-       "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:",
-       "importObject:",
-       "importedObjects",
-       "importsGraphics",
-       "inLiveResize",
-       "inNextKeyViewOutsideWebFrameViews",
-       "inPalette",
-       "incObservationCount",
-       "incomingReferrer",
-       "increaseLengthBy:",
-       "increaseSizesToFit:",
-       "increaseUseCount",
-       "increment",
-       "incrementButtonWithParent:",
-       "incrementRefCount",
-       "incrementRefCountForObjectID:",
-       "incrementSnapshotCountForGlobalID:",
-       "incrementalImageReaderForRep:",
-       "incrementalLoadWithBytes:length:complete:",
-       "increments",
-       "indentationLevel",
-       "indentationPerLevel",
-       "index",
-       "indexAtPosition:",
-       "indexFollowing:",
-       "indexForKey:",
-       "indexGreaterThanIndex:",
-       "indexGreaterThanOrEqualToIndex:",
-       "indexLessThanIndex:",
-       "indexOfBestMatchForDisplayNamePrefix:inCachedChildrenForNode:",
-       "indexOfCrayon:",
-       "indexOfFirstRangeContainingOrFollowing:",
-       "indexOfItem:",
-       "indexOfItemAtPoint:",
-       "indexOfItemWithObjectValue:",
-       "indexOfItemWithRepresentedNavNode:",
-       "indexOfItemWithRepresentedObject:",
-       "indexOfItemWithSubmenu:",
-       "indexOfItemWithTag:",
-       "indexOfItemWithTarget:andAction:",
-       "indexOfItemWithTitle:",
-       "indexOfNode:inCachedChildrenForNode:",
-       "indexOfObject:",
-       "indexOfObject:range:identical:",
-       "indexOfObjectIdenticalTo:",
-       "indexOfObjectIdenticalTo:inRange:",
-       "indexOfSelectedItem",
-       "indexOfTabViewItem:",
-       "indexOfTabViewItemWithIdentifier:",
-       "indexOfTickMarkAtPoint:",
-       "indexPath",
-       "indexPathByAddingIndex:",
-       "indexPathByRemovingLastIndex",
-       "indexPathForOutlineView:row:",
-       "indexPathWithIndex:",
-       "indexReferenceModelObjectArray",
-       "indexSet",
-       "indexSetWithIndex:",
-       "indexSetWithIndexesInRange:",
-       "indicesOfObjectsByEvaluatingObjectSpecifier:",
-       "indicesOfObjectsByEvaluatingWithContainer:count:",
-       "infoDictionary",
-       "infoForBinding:",
-       "init",
-       "initAndTestWithTests:",
-       "initAtPoint:withSize:callbackInfo:",
-       "initByReferencingFile:",
-       "initByReferencingURL:",
-       "initCount:",
-       "initDir:file:docInfo:",
-       "initDirectoryWithFileWrappers:",
-       "initEPSOperationWithView:insideRect:toData:printInfo:",
-       "initFileURLWithPath:",
-       "initForActionType:",
-       "initForDeserializerStream:",
-       "initForDirectImageRep:",
-       "initForExpression:usingIteratorExpression:predicate:",
-       "initForExpression:usingIteratorVariable:predicate:",
-       "initForKeyBackPointer:",
-       "initForKeys:",
-       "initForKeys:count:",
-       "initForMetal:",
-       "initForReadingWithData:",
-       "initForSerializerStream:",
-       "initForToolbar:withWidth:",
-       "initForURL:withContentsOfURL:ofType:error:",
-       "initForWritingWithMutableData:",
-       "initFromDictionaryRepresentation:",
-       "initFromDocument:",
-       "initFromImage:rect:",
-       "initFromMemoryNoCopy:length:freeWhenDone:",
-       "initFromSerializerStream:length:",
-       "initGlyphStack:",
-       "initImageCell:",
-       "initListDescriptor",
-       "initNotTestWithTest:",
-       "initOrTestWithTests:",
-       "initPopUpWindow",
-       "initPriv",
-       "initRecordDescriptor",
-       "initRegularFileWithContents:",
-       "initRemoteWithProtocolFamily:socketType:protocol:address:",
-       "initSymbolicLinkWithDestination:",
-       "initTextCell:",
-       "initTextCell:pullsDown:",
-       "initTitleButton:",
-       "initTitleCell:",
-       "initTitleCell:styleMask:",
-       "initToBuffer:capacity:",
-       "initToFileAtPath:append:",
-       "initToMemory",
-       "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:",
-       "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:",
-       "initWithBitmapRepresentation:",
-       "initWithBool:",
-       "initWithBridge:delegate:",
-       "initWithButtonID:",
-       "initWithBytes:length:",
-       "initWithBytes:length:copy:freeWhenDone:bytesAreVM:",
-       "initWithBytes:length:encoding:",
-       "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:",
-       "initWithCString:noCopy:",
-       "initWithCStringNoCopy:length:freeWhenDone:",
-       "initWithCVImageBuffer:options:",
-       "initWithCachedResponse:request:key:",
-       "initWithCallback:selector:",
-       "initWithCapacity:",
-       "initWithCapacity:compareSelector:",
-       "initWithCapacity:origin:image:yOffset:",
-       "initWithCarbonWindowRef:takingOwnership:",
-       "initWithCarbonWindowRef:takingOwnership:disableOrdering:",
-       "initWithCarbonWindowRef:takingOwnership:disableOrdering:carbon:",
-       "initWithCatalogName:colorName:genericColor:",
-       "initWithCell:",
-       "initWithChar:",
-       "initWithCharacterIdentifier:collection:baseString:",
-       "initWithCharacterRange:isSoft:",
-       "initWithCharacterRange:parent:",
-       "initWithCharacterSet:",
-       "initWithCharacters:length:",
-       "initWithCharactersInString:",
-       "initWithCharactersNoCopy:length:freeWhenDone:",
-       "initWithClass:",
-       "initWithClassDescription:",
-       "initWithClassPath:",
-       "initWithClient:",
-       "initWithCode:key:object:",
-       "initWithCoder:",
-       "initWithCoercer:selector:",
-       "initWithCollection:",
-       "initWithColorProfile:",
-       "initWithColorSpace:components:count:",
-       "initWithColorSyncInfo:",
-       "initWithColorSyncProfile:",
-       "initWithColumnName:sqlType:",
-       "initWithCommandDescription:",
-       "initWithCompareSelector:",
-       "initWithConnection:components:",
-       "initWithContainer:key:mutableSet:",
-       "initWithContainer:key:mutableSet:mutationMethods:",
-       "initWithContainerClass:keyPath:",
-       "initWithContainerClass:keyPath:firstDotIndex:",
-       "initWithContainerClassDescription:",
-       "initWithContainerClassDescription:containerSpecifier:key:",
-       "initWithContainerClassDescription:containerSpecifier:key:index:",
-       "initWithContainerClassDescription:containerSpecifier:key:name:",
-       "initWithContainerClassDescription:containerSpecifier:key:relativePosition:baseSpecifier:",
-       "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:",
-       "initWithContentRect:styleMask:backing:defer:drawer:",
-       "initWithContentRect:styleMask:backing:defer:screen:",
-       "initWithContentSize:preferredEdge:",
-       "initWithContentsOfFile:",
-       "initWithContentsOfFile:encoding:error:",
-       "initWithContentsOfFile:error:",
-       "initWithContentsOfFile:ofType:",
-       "initWithContentsOfFile:options:error:",
-       "initWithContentsOfFile:usedEncoding:error:",
-       "initWithContentsOfMappedFile:",
-       "initWithContentsOfMappedFile:withFileAttributes:",
-       "initWithContentsOfURL:",
-       "initWithContentsOfURL:byReference:",
-       "initWithContentsOfURL:encoding:error:",
-       "initWithContentsOfURL:ofType:",
-       "initWithContentsOfURL:ofType:error:",
-       "initWithContentsOfURL:options:",
-       "initWithContentsOfURL:options:error:",
-       "initWithContentsOfURL:usedEncoding:error:",
-       "initWithController:",
-       "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:",
-       "initWithDataNoCopy:",
-       "initWithDataRepresentation:",
-       "initWithDataSource:",
-       "initWithDataSource:ascending:",
-       "initWithDateFormat:allowNaturalLanguage:",
-       "initWithDecimal:",
-       "initWithDefaultAttributes:",
-       "initWithDefaults:initialValues:",
-       "initWithDelegate:",
-       "initWithDelegate:name:",
-       "initWithDescription:kernelFile:filterBundle:",
-       "initWithDescriptorType:bytes:length:",
-       "initWithDescriptorType:data:",
-       "initWithDictionary:",
-       "initWithDictionary:copyItems:",
-       "initWithDocument:URL:windowProperties:locationProperties:interpreterBuiltins:",
-       "initWithDocument:forStore:",
-       "initWithDocumentView:",
-       "initWithDomain:code:userInfo:",
-       "initWithDomain:type:name:",
-       "initWithDomain:type:name:port:",
-       "initWithDomainName:key:title:image:",
-       "initWithDouble:",
-       "initWithDrawingView:rects:",
-       "initWithDuration:animationCurve:",
-       "initWithDynamicMenuItemDictionary:",
-       "initWithEditCommand:",
-       "initWithElement:fauxParent:",
-       "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:",
-       "initWithFactory:",
-       "initWithFile:",
-       "initWithFileAtPath:",
-       "initWithFileAttributes:",
-       "initWithFileDescriptor:closeOnDealloc:",
-       "initWithFileName:markerName:",
-       "initWithFileProperty:dataSource:ascending:",
-       "initWithFileWrapper:",
-       "initWithFilter:closure:",
-       "initWithFilter:connectionID:",
-       "initWithFilter:options::",
-       "initWithFireDate:interval:target:selector:userInfo:repeats:",
-       "initWithFloat:",
-       "initWithFocusedViewRect:",
-       "initWithFont:color:",
-       "initWithFont:usingPrinterFont:",
-       "initWithFontAttributes:",
-       "initWithFontDescriptor:",
-       "initWithForm:values:sourceFrame:",
-       "initWithFormat:",
-       "initWithFormat:arguments:",
-       "initWithFormat:locale:",
-       "initWithFormat:locale:arguments:",
-       "initWithFormat:shareContext:",
-       "initWithFrame:",
-       "initWithFrame:depth:",
-       "initWithFrame:error:",
-       "initWithFrame:frameName:groupName:",
-       "initWithFrame:inStatusBar:",
-       "initWithFrame:menuView:",
-       "initWithFrame:mode:cellClass:numberOfRows:numberOfColumns:",
-       "initWithFrame:mode:prototype:numberOfRows:numberOfColumns:",
-       "initWithFrame:node:",
-       "initWithFrame:plugin:URL:baseURL:MIMEType:attributeKeys:attributeValues:",
-       "initWithFrame:prototypeRulerMarker:",
-       "initWithFrame:pullsDown:",
-       "initWithFrame:styleMask:owner:",
-       "initWithFrame:textContainer:",
-       "initWithFunc:forImp:selector:",
-       "initWithFunc:ivarOffset:",
-       "initWithGLContext:pixelFormat:vtable:options:",
-       "initWithGlyph:forFont:baseString:",
-       "initWithGlyphIndex:characterRange:",
-       "initWithGlyphName:glyph:forFont:baseString:",
-       "initWithGrammar:",
-       "initWithGraph:",
-       "initWithGraphicsContext:",
-       "initWithHTML:documentAttributes:",
-       "initWithHTML:options:documentAttributes:",
-       "initWithHTMLView:",
-       "initWithHistory:",
-       "initWithHost:port:protocol:realm:authenticationMethod:",
-       "initWithHue:saturation:brightness:alpha:",
-       "initWithICCProfileData:",
-       "initWithIdentifier:",
-       "initWithIdentifier:forColorPanel:",
-       "initWithImage:",
-       "initWithImage:foregroundColorHint:backgroundColorHint:hotSpot:",
-       "initWithImage:hotSpot:",
-       "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:",
-       "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:",
-       "initWithKind:",
-       "initWithKind:name:stringValue:",
-       "initWithKind:name:stringValue:URI:",
-       "initWithKind:options:",
-       "initWithLeftExpression:rightExpression:customSelector:",
-       "initWithLeftExpression:rightExpression:modifier:type:options:",
-       "initWithLength:",
-       "initWithListBox:",
-       "initWithLoader:dataSource:",
-       "initWithLocal:connection:",
-       "initWithLocalName:URI:",
-       "initWithLocaleIdentifier:",
-       "initWithLong:",
-       "initWithLongLong:",
-       "initWithMIMEType:",
-       "initWithMKKDInitializer:index:",
-       "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:",
-       "initWithName:",
-       "initWithName:appleEventCode:enumeratorDescriptions:",
-       "initWithName:appleEventCode:fieldDescriptions:presentableDescription:",
-       "initWithName:appleEventCode:objcClassName:",
-       "initWithName:attributes:",
-       "initWithName:color:image:",
-       "initWithName:data:",
-       "initWithName:element:",
-       "initWithName:elementNames:",
-       "initWithName:fromFile:",
-       "initWithName:host:",
-       "initWithName:object:userInfo:",
-       "initWithName:position:rect:view:children:",
-       "initWithName:reason:userInfo:",
-       "initWithName:stringValue:",
-       "initWithName:value:source:children:",
-       "initWithName:webFrameView:webView:",
-       "initWithNamespaces:",
-       "initWithNavView:",
-       "initWithNestedDictionary:",
-       "initWithNibNamed:bundle:",
-       "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:",
-       "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:",
-       "initWithPasteboardDataRepresentation:",
-       "initWithPath:",
-       "initWithPath:documentAttributes:",
-       "initWithPath:flags:createMode:",
-       "initWithPath:logonOK:",
-       "initWithPath:traverseLink:",
-       "initWithPersistenceStore:",
-       "initWithPickerMask:colorPanel:",
-       "initWithPosition:objectSpecifier:",
-       "initWithPredicate:",
-       "initWithPredicateOperator:leftExpression:rightExpression:",
-       "initWithPredicateOperator:leftKeyPath:rightKeyPath:",
-       "initWithPredicateOperator:leftKeyPath:rightValue:",
-       "initWithPrintInfo:",
-       "initWithPrompt:text:",
-       "initWithProperties:",
-       "initWithProperties:suiteName:usesUnnamedArguments:classSynonymDescriptions:",
-       "initWithProperty:",
-       "initWithProtectionSpace:proposedCredential:previousFailureCount:failureResponse:error:sender:",
-       "initWithProtocol:httpRequest:challenge:callback:context:",
-       "initWithProtocolFamily:socketType:protocol:address:",
-       "initWithProxyHost:port:type:realm:authenticationMethod:",
-       "initWithQButton:",
-       "initWithQComboBox:",
-       "initWithQLineEdit:",
-       "initWithQObject:timerId:",
-       "initWithQScrollBar:",
-       "initWithQSlider:",
-       "initWithQTextEdit:",
-       "initWithRTF:",
-       "initWithRTF:documentAttributes:",
-       "initWithRTFD:",
-       "initWithRTFD:documentAttributes:",
-       "initWithRTFDFileWrapper:",
-       "initWithRange:",
-       "initWithRanges:count:",
-       "initWithRealClient:",
-       "initWithRealTextStorage:",
-       "initWithReceivePort:sendPort:",
-       "initWithReceivePort:sendPort:components:",
-       "initWithRect:",
-       "initWithRect:clip:type:",
-       "initWithRect:color:ofView:",
-       "initWithRects:count:",
-       "initWithRed:green:blue:alpha:",
-       "initWithRef:",
-       "initWithRefCountedRunArray:",
-       "initWithRegistryClass:andObjectClass:",
-       "initWithRegistryString:andObjectClass:",
-       "initWithRemoteName:",
-       "initWithRenderer:",
-       "initWithRequest:",
-       "initWithRequest:cachedResponse:client:",
-       "initWithRequest:delegate:",
-       "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:",
-       "initWithRulerMarker:parent:",
-       "initWithRulerView:",
-       "initWithRulerView:markerLocation:image:imageOrigin:",
-       "initWithRunStorage:",
-       "initWithRuns:glyphOrigin:lineFragmentWidth:",
-       "initWithSQLCore:",
-       "initWithSQLEntity:objectID:",
-       "initWithSavedQueryNode:",
-       "initWithScrollView:orientation:",
-       "initWithSearchStrategy:",
-       "initWithSelector:",
-       "initWithSelector:argumentArray:",
-       "initWithSendPort:receivePort:components:",
-       "initWithSerializedRepresentation:",
-       "initWithSet:",
-       "initWithSet:copyItems:",
-       "initWithSetFunc:forImp:selector:",
-       "initWithSetFunc:ivarOffset:",
-       "initWithSetHeader:",
-       "initWithSettings:showPrintPanel:sender:delegate:didPrintSelector:contextInfo:",
-       "initWithShadow:",
-       "initWithShort:",
-       "initWithSimpleQueryString:",
-       "initWithSize:",
-       "initWithSize:depth:separate:alpha:",
-       "initWithSize:forSpaceItem:",
-       "initWithSource:",
-       "initWithSource::dest::",
-       "initWithSource:forRelationship:asFault:",
-       "initWithSourceAttributeName:destinationAttributeName:",
-       "initWithSparseArray:",
-       "initWithSpecifier:",
-       "initWithStatement:",
-       "initWithStore:",
-       "initWithStore:fromPath:",
-       "initWithStream:",
-       "initWithStream:view:",
-       "initWithString:",
-       "initWithString:attributes:",
-       "initWithString:calendarFormat:",
-       "initWithString:calendarFormat:locale:",
-       "initWithString:locale:",
-       "initWithString:relativeToURL:",
-       "initWithStringValue:",
-       "initWithSuiteName:className:dictionary:",
-       "initWithSuiteName:commandName:dictionary:",
-       "initWithTCPPort:",
-       "initWithTable:startingRow:rowSpan:startingColumn:columnSpan:",
-       "initWithTableView:",
-       "initWithTableView:clipRect:",
-       "initWithTarget:",
-       "initWithTarget:action:",
-       "initWithTarget:connection:",
-       "initWithTarget:defaultTarget:templateClass:",
-       "initWithTarget:invocation:",
-       "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:",
-       "initWithTextTable:charIndex:layoutManager:containerWidth:",
-       "initWithTexture:size:flipped:colorSpace:",
-       "initWithTexture:size:options:",
-       "initWithTidyNode:",
-       "initWithTimeIntervalSinceNow:",
-       "initWithTimeIntervalSinceReferenceDate:",
-       "initWithTitle:",
-       "initWithTitle:action:keyEquivalent:",
-       "initWithTitle:action:keyEquivalent:representedNavNode:",
-       "initWithTransform:",
-       "initWithTranslator:selector:",
-       "initWithTreeController:",
-       "initWithTreeController:keyPath:",
-       "initWithType:",
-       "initWithType:arg:",
-       "initWithType:error:",
-       "initWithType:location:",
-       "initWithType:subpredicates:",
-       "initWithTypefaceInfo:key:",
-       "initWithTypesetter:",
-       "initWithURL:",
-       "initWithURL:MIMEType:expectedContentLength:textEncodingName:",
-       "initWithURL:allowNonExecutable:",
-       "initWithURL:byReference:",
-       "initWithURL:cachePolicy:timeoutInterval:",
-       "initWithURL:cached:",
-       "initWithURL:documentAttributes:",
-       "initWithURL:options:documentAttributes:error:",
-       "initWithURL:target:parent:title:",
-       "initWithURL:title:",
-       "initWithURL:traverseLink:",
-       "initWithURLString:title:lastVisitedTimeInterval:",
-       "initWithUTF8String:",
-       "initWithUnavoidableSpecifier:path:url:isSymbolicLink:",
-       "initWithUnsignedChar:",
-       "initWithUnsignedInt:",
-       "initWithUnsignedLong:",
-       "initWithUnsignedLongLong:",
-       "initWithUnsignedShort:",
-       "initWithUser:",
-       "initWithUser:password:persistence:",
-       "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:",
-       "initWithWindow:",
-       "initWithWindow:rect:",
-       "initWithWindowNibName:",
-       "initWithWindowNibName:owner:",
-       "initWithX:",
-       "initWithX:Y:",
-       "initWithX:Y:Z:",
-       "initWithX:Y:Z:W:",
-       "initWithXMLNode:objectID:",
-       "initWithXMLString:",
-       "initWithYear:month:day:hour:minute:second:timeZone:",
-       "initialFirstResponder",
-       "initialPoint",
-       "initialRequest",
-       "initialValues",
-       "initialize",
-       "initialize:",
-       "initializeButtonStructureAtX:y:forResolution:",
-       "initializeFromDefaults",
-       "initializeItem:",
-       "initializeRecipe:",
-       "initializeSettings:",
-       "initializerFromKeyArray:",
-       "inlayROI:forRect:",
-       "innerRect",
-       "innerTitleRect",
-       "inputClientBecomeActive:",
-       "inputClientDisabled:",
-       "inputClientEnabled:",
-       "inputClientResignActive:",
-       "inputContext",
-       "inputContextForFirstTextView:",
-       "inputContextWithClient:",
-       "inputElementAltText",
-       "inputKeyBindingManager",
-       "inputKeys",
-       "inputStreamWithFileAtPath:",
-       "insert:",
-       "insertAttributedString:atIndex:",
-       "insertBacktab:",
-       "insertChild:atIndex:",
-       "insertColor:key:atIndex:",
-       "insertColumn:",
-       "insertColumn:withCells:",
-       "insertCompletion:forPartialWordRange:movement:isFinal:",
-       "insertCorrelation:",
-       "insertDescriptor:atIndex:",
-       "insertElement:atIndex:",
-       "insertElement:range:coalesceRuns:",
-       "insertElements:count:atIndex:",
-       "insertEntity:intoOrderingArray:withDependencies:processingSet:",
-       "insertEntry:atIndex:",
-       "insertGlyph:atGlyphIndex:characterIndex:",
-       "insertGlyphs:",
-       "insertGlyphs:length:forStartingGlyphAtIndex:characterIndex:",
-       "insertItem:atDateIndex:",
-       "insertItem:atIndex:",
-       "insertItem:path:dirInfo:zone:plist:",
-       "insertItemViewer:atIndex:",
-       "insertItemWithItemIdentifier:atIndex:",
-       "insertItemWithObjectValue:atIndex:",
-       "insertItemWithTitle:action:keyEquivalent:atIndex:",
-       "insertItemWithTitle:atIndex:",
-       "insertLineBreak",
-       "insertNewButtonImage:in:",
-       "insertNewline:",
-       "insertNode:atSubNodeIndex:",
-       "insertObject:",
-       "insertObject:at:",
-       "insertObject:atArrangedObjectIndex:",
-       "insertObject:atArrangedObjectIndexPath:",
-       "insertObject:atIndex:",
-       "insertObject:inAttributesAtIndex:",
-       "insertObject:inNamespacesAtIndex:",
-       "insertObject:range:",
-       "insertObjectIntoMasterArrayRelationship:atIndex:selectionMode:",
-       "insertObjects:atArrangedObjectIndexes:",
-       "insertObjects:atIndexes:",
-       "insertObjectsIntoMasterArrayRelationship:atIndexes:selectionMode:",
-       "insertParagraphSeparator",
-       "insertParagraphSeparatorInQuotedContent",
-       "insertPopItemWithTitle:andObject:",
-       "insertProxy:",
-       "insertRow:",
-       "insertRow:withCells:",
-       "insertRows:atIndex:",
-       "insertStatement",
-       "insertString:atIndex:",
-       "insertTab:",
-       "insertTable:",
-       "insertText:",
-       "insertText:client:",
-       "insertText:selectInsertedText:",
-       "insertTextContainer:atIndex:",
-       "insertValue:atIndex:inPropertyWithKey:",
-       "insertValue:inPropertyWithKey:",
-       "insertedObjects",
-       "insertionContainer",
-       "insertionIndex",
-       "insertionKey",
-       "insertionPointColor",
-       "insertionReplaces",
-       "insertsNullPlaceholder",
-       "insetByX:Y:",
-       "installInFrame:",
-       "installInputManagerMenu:",
-       "installKeyEventHandler",
-       "installedPlugins",
-       "instanceMethodDescFor:",
-       "instanceMethodDescriptionForSelector:",
-       "instanceMethodFor:",
-       "instanceMethodForSelector:",
-       "instanceMethodSignatureForSelector:",
-       "instancesImplementSelector:",
-       "instancesRespondTo:",
-       "instancesRespondToSelector:",
-       "instantiate::",
-       "instantiateNibWithExternalNameTable:",
-       "instantiateNibWithOwner:topLevelObjects:",
-       "instantiateObject:",
-       "instantiateWithObjectInstantiator:",
-       "int32Value",
-       "intAttribute:forGlyphAtIndex:",
-       "intParameterValue:",
-       "intValue",
-       "integerForKey:",
-       "intercellSpacing",
-       "interceptKeyEvent:toView:",
-       "interfaceStyle",
-       "internCString:pointer:",
-       "internalNameForEntityName:version:",
-       "internalNameForPropertyName:version:",
-       "internalSaveTo:removeBackup:errorHandler:",
-       "internalSaveTo:removeBackup:errorHandler:temp:backup:",
-       "internalWritePath:errorHandler:remapContents:hardLinkPath:",
-       "interpretEventAsCommand:forClient:",
-       "interpretEventAsText:forClient:",
-       "interpretKeyEvents:",
-       "interpretKeyEvents:forClient:",
-       "interpretKeyEvents:sender:",
-       "interpreterBuiltins",
-       "interpreterCount",
-       "interruptForPolicyChangeError",
-       "intersectSet:",
-       "intersectWith:",
-       "intersectWithRect:",
-       "intersectsSet:",
-       "intervalSinceLastActive",
-       "invTransform:",
-       "invTransformRect:",
-       "invalidate",
-       "invalidate:",
-       "invalidateAttributesInRange:",
-       "invalidateCacheAndStorage",
-       "invalidateCachedDrawingImage",
-       "invalidateConnectionsAsNecessary:",
-       "invalidateCursorRectsForView:",
-       "invalidateDisplayForCharacterRange:",
-       "invalidateDisplayForGlyphRange:",
-       "invalidateFocus:",
-       "invalidateGlyphsForCharacterRange:changeInLength:actualCharacterRange:",
-       "invalidateHashMarks",
-       "invalidateLayoutForCharacterRange:isSoft:actualCharacterRange:",
-       "invalidateObjectValueInObject:",
-       "invalidateObjectsWithGlobalIDs:",
-       "invalidateProxy",
-       "invalidateRect:",
-       "invalidateRegion:",
-       "invalidateShadow",
-       "invalidateTextContainerOrigin",
-       "inverseColumnName",
-       "inverseForRelationshipKey:",
-       "inverseManyToMany",
-       "inverseRelationship",
-       "inverseToOne",
-       "invert",
-       "invertedSet",
-       "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:",
-       "isARepeat",
-       "isAbsolutePath",
-       "isAbstract",
-       "isActive",
-       "isAlias",
-       "isAlternate",
-       "isAncestorOfObject:",
-       "isAnimating",
-       "isAnimationFinished",
-       "isAtEnd",
-       "isAttached",
-       "isAttribute",
-       "isAutodisplay",
-       "isBeginMark",
-       "isBeingEdited",
-       "isBezeled",
-       "isBindingKeyOptional:",
-       "isBindingKeyless:",
-       "isBindingReadOnly:",
-       "isBooleanValueBindingForObject:",
-       "isBordered",
-       "isButtonBordered",
-       "isByref",
-       "isCachedSeparately",
-       "isCaseInsensitiveLike:",
-       "isCharacterSmartReplaceExempt:isPreviousCharacter:",
-       "isCoalescing",
-       "isColor",
-       "isColumn",
-       "isColumnSelected:",
-       "isCompiled",
-       "isConnected",
-       "isContainer",
-       "isContentEditable",
-       "isContextHelpModeActive",
-       "isContinuous",
-       "isContinuousGrammarCheckingEnabled",
-       "isContinuousSpellCheckingEnabled",
-       "isCopyingOperation",
-       "isCurrListEditable",
-       "isDataRetained",
-       "isDaylightSavingTime",
-       "isDaylightSavingTimeForDate:",
-       "isDebugEnabled",
-       "isDeletableFileAtPath:",
-       "isDeleted",
-       "isDescendantOf:",
-       "isDescendantOfNode:",
-       "isDirectory",
-       "isDirectoryNode:",
-       "isDisconnectedMountPoint",
-       "isDisplayPostingDisabled",
-       "isDocumentEdited",
-       "isDone",
-       "isDragging",
-       "isDrawingContentAtIndex:",
-       "isDrawingToScreen",
-       "isDroppedConnectionException:",
-       "isEPSOperation",
-       "isEditable",
-       "isEditableIfEnabled",
-       "isEditableQuery",
-       "isEditing",
-       "isEditingAtIndex:withObject:",
-       "isEditingAtIndexPath:withObject:",
-       "isEditingWithObject:",
-       "isEjectable",
-       "isEmpty",
-       "isEmptyHTMLElement:",
-       "isEnabled",
-       "isEnabledForSegment:",
-       "isEndMark",
-       "isEnteringProximity",
-       "isEntryAcceptable:",
-       "isEnumeration",
-       "isEqual:",
-       "isEqualTo:",
-       "isEqualToArray:",
-       "isEqualToAttributedString:",
-       "isEqualToData:",
-       "isEqualToDate:",
-       "isEqualToDictionary:",
-       "isEqualToIndexSet:",
-       "isEqualToNumber:",
-       "isEqualToSet:",
-       "isEqualToString:",
-       "isEqualToTimeZone:",
-       "isEqualToValue:",
-       "isErrorStatusCode:",
-       "isExcludedFromWindowsMenu",
-       "isExecutableFileAtPath:",
-       "isExpandable:",
-       "isExpandableAtArrangedObjectIndexPath:",
-       "isExpanded",
-       "isExpandedNode:",
-       "isExtensionHidden",
-       "isFault",
-       "isFauxDisabled",
-       "isFauxDisabledNode:",
-       "isFetchInProgress",
-       "isFieldEditor",
-       "isFileListOrderedAscending",
-       "isFileListOrderedCaseSensitive",
-       "isFilePackageAtPath:",
-       "isFilePropertyDisplayed:",
-       "isFileURL",
-       "isFinishedDecoding",
-       "isFirstAndKey",
-       "isFixedPitch",
-       "isFlipped",
-       "isFloatingPanel",
-       "isFlushDisabled",
-       "isFlushWindowDisabled",
-       "isFontFixedPitch:",
-       "isFrameSet",
-       "isGatheringResults",
-       "isGreaterThan:",
-       "isGreaterThanOrEqualTo:",
-       "isHeartBeatThread",
-       "isHidden",
-       "isHiddenOrHasHiddenAncestor",
-       "isHighlighted",
-       "isHorizontal",
-       "isHorizontallyCentered",
-       "isHorizontallyResizable",
-       "isInInterfaceBuilder",
-       "isInMotion",
-       "isIndeterminate",
-       "isInserted",
-       "isInvalidationCapableObject:withSelector:",
-       "isItemExpanded:",
-       "isItemSelected",
-       "isItemShownInPopupIfSoleEntry:",
-       "isJavaEnabled",
-       "isJavaPlugIn",
-       "isJavaScriptEnabled",
-       "isKey:inTable:",
-       "isKeyExcludedFromWebScript:",
-       "isKeyWindow",
-       "isKindOf:",
-       "isKindOfClass:",
-       "isKindOfClassNamed:",
-       "isLeaf",
-       "isLenient",
-       "isLessThan:",
-       "isLessThanOrEqualTo:",
-       "isLike:",
-       "isLinearX0:y0:x1:y1:x2:y2:",
-       "isList",
-       "isLoaded",
-       "isLoading",
-       "isLocationRequiredToCreate",
-       "isLocationRequiredToCreateForKey:",
-       "isLocking",
-       "isMainWindow",
-       "isMakeHistoryEnabled",
-       "isManyToMany",
-       "isMaster",
-       "isMemberOf:",
-       "isMemberOfClass:",
-       "isMemberOfClassNamed:",
-       "isMiniaturized",
-       "isMovable",
-       "isMovableByWindowBackground",
-       "isMultiThreaded",
-       "isMutable",
-       "isMuted",
-       "isNSIDispatchProxy",
-       "isNativeType:",
-       "isNegation",
-       "isNewWindowEqualToOldWindow",
-       "isNotEqualTo:",
-       "isNull",
-       "isObjectID:equalTo:",
-       "isObjectTableColumnDataCell:",
-       "isObscured",
-       "isOneShot",
-       "isOneway",
-       "isOpaque",
-       "isOpen",
-       "isOptional",
-       "isPackage",
-       "isPaged",
-       "isPartialStringValid:newEditingString:errorDescription:",
-       "isPartialStringValid:proposedSelectedRange:originalString:originalSelectedRange:errorDescription:",
-       "isPlaceholderForMarkerExplicitlySet:",
-       "isPlanar",
-       "isPlaying",
-       "isPlugInView:",
-       "isPluginViewStarted",
-       "isPreview",
-       "isPreviewColumn",
-       "isPrimaryKey",
-       "isProxy",
-       "isQuery",
-       "isQuickTimePlugIn",
-       "isReadOnly",
-       "isReadableFileAtPath:",
-       "isRedoing",
-       "isReflexive",
-       "isRegularFile",
-       "isRelationship",
-       "isReleasedWhenClosed",
-       "isReloading",
-       "isResizable",
-       "isRichText",
-       "isRightToLeft",
-       "isRootEntity",
-       "isRotatedFromBase",
-       "isRotatedOrScaledFromBase",
-       "isRowSelected:",
-       "isRulerVisible",
-       "isRunning",
-       "isScalarProperty",
-       "isScrollable",
-       "isSearchable",
-       "isSecure",
-       "isSelectable",
-       "isSelected",
-       "isSelectedForSegment:",
-       "isSelectionByRect",
-       "isSelectionEditable",
-       "isSelectorExcludedFromWebScript:",
-       "isSeparatorItem",
-       "isSessionOnly",
-       "isSheet",
-       "isSimpleRectangularTextContainer",
-       "isSingleAttribute:",
-       "isSingleDTDNode",
-       "isSingleTableEntity",
-       "isSizeDisplayedForNode:",
-       "isSpeaking",
-       "isStandalone",
-       "isStarted",
-       "isStatusBarVisible",
-       "isSubclassOfClass:",
-       "isSubsetOfSet:",
-       "isSubviewCollapsed:",
-       "isSuperclassOfClass:",
-       "isSymbolicLink",
-       "isTargetItem",
-       "isTemporary",
-       "isTemporaryID",
-       "isTestingInterface",
-       "isTitled",
-       "isToMany",
-       "isToManyKey:",
-       "isToOne",
-       "isTornOff",
-       "isTracking",
-       "isTransient",
-       "isTransparent",
-       "isTrue",
-       "isTypeNotExclusive:",
-       "isUndoing",
-       "isUpdated",
-       "isUsableWithObject:",
-       "isValid",
-       "isValidGlyphIndex:",
-       "isVertical",
-       "isVerticallyCentered",
-       "isVerticallyResizable",
-       "isViewOfPickerLoaded:",
-       "isVirtual",
-       "isVisible",
-       "isVolume",
-       "isWellFormed",
-       "isWindowInFocusStack:",
-       "isWindowLoaded",
-       "isWord:inDictionaries:caseSensitive:",
-       "isWordInUserDictionaries:caseSensitive:",
-       "isWritableFileAtPath:",
-       "isZoomed",
-       "isaForAutonotifying",
-       "islamicCalendar",
-       "islamicCivilCalendar",
-       "issueCopyCommand",
-       "issueCutCommand",
-       "issuePasteCommand",
-       "item",
-       "itemAdded:",
-       "itemArray",
-       "itemAtIndex:",
-       "itemAtRow:",
-       "itemChanged:",
-       "itemForURL:",
-       "itemForURLString:",
-       "itemHeight",
-       "itemIdentifier",
-       "itemIdentifierForColorPicker:",
-       "itemMatrix",
-       "itemObjectValueAtIndex:",
-       "itemRemoved:",
-       "itemTitleAtIndex:",
-       "itemTitles",
-       "itemWithTag:",
-       "itemWithTitle:",
-       "items",
-       "ivar",
-       "japaneseCalendar",
-       "javaScriptCanOpenWindowsAutomatically",
-       "jobDisposition",
-       "jobWillBeDeallocated",
-       "joinSemantic",
-       "joinWithSourceAttributeName:destinationAttributeName:",
-       "joins",
-       "joinsForRelationship:",
-       "jumpSlider:",
-       "jumpToSelection",
-       "jumpToSelection:",
-       "justifyWithFactor:",
-       "keepBackupFile",
-       "kernelsWithString:",
-       "key",
-       "keyBackPointer",
-       "keyBindingManager",
-       "keyBindingManagerForClient:",
-       "keyBindingState",
-       "keyCell",
-       "keyClassDescription",
-       "keyCode",
-       "keyDown:",
-       "keyDown:inRect:ofView:",
-       "keyEnumerator",
-       "keyEquivalent",
-       "keyEquivalentAttributedString",
-       "keyEquivalentFont",
-       "keyEquivalentModifierMask",
-       "keyEquivalentOffset",
-       "keyEquivalentRectForBounds:",
-       "keyEquivalentWidth",
-       "keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:",
-       "keyForFileWrapper:",
-       "keyForParameter:",
-       "keyMessageForEvent:",
-       "keyPath",
-       "keyPathExpressionForString:",
-       "keyPathForBinding:",
-       "keyPathIfAffectedByValueForKey:exactMatch:",
-       "keySpecifier",
-       "keyUp:",
-       "keyUp:inRect:ofView:",
-       "keyValueBindingForKey:typeMask:",
-       "keyViewSelectionDirection",
-       "keyWindow",
-       "keyWindowFrameHighlightColor",
-       "keyWindowFrameShadowColor",
-       "keyWithAppleEventCode:",
-       "keyboardFocusIndicatorColor",
-       "keyboardUIMode",
-       "keys",
-       "keywordForDescriptorAtIndex:",
-       "kind",
-       "knobColor",
-       "knobProportion",
-       "knobRectFlipped:",
-       "knobThickness",
-       "knownKeyValuesForObjectID:withContext:",
-       "knownKeyValuesPointer",
-       "knowsPageRange:",
-       "knowsPagesFirst:last:",
-       "label",
-       "labelColor",
-       "labelFontOfSize:",
-       "labelForSegment:",
-       "labelOnlyMenuDidSendActionNotification:",
-       "labelRectOfRow:",
-       "labelSizeForBounds:",
-       "lanczosTable",
-       "language",
-       "languageCode",
-       "languageContext",
-       "languageContextWithName:",
-       "languageLevel",
-       "languageModel",
-       "languageName",
-       "languageWithName:",
-       "lastChild",
-       "lastColumn",
-       "lastComponent:",
-       "lastComponentOfFileName",
-       "lastConversation",
-       "lastCrayon",
-       "lastIndex",
-       "lastItem",
-       "lastModifiedDate",
-       "lastObject",
-       "lastPathComponent",
-       "lastRange",
-       "lastResortFont",
-       "lastSelectedItem",
-       "lastVisibleColumn",
-       "launch",
-       "launchAppWithBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifier:",
-       "launchApplication:",
-       "launchRealPlayer",
-       "launchWithDictionary:",
-       "launchedApplications",
-       "launchedTaskWithLaunchPath:arguments:",
-       "layout",
-       "layoutControlGlyphForLineFragment:",
-       "layoutForStartingGlyphAtIndex:characterIndex:minPosition:maxPosition:lineFragmentRect:",
-       "layoutGlyphsInHorizontalLineFragment:baseline:",
-       "layoutGlyphsInLayoutManager:startingAtGlyphIndex:maxNumberOfLineFragments:nextGlyphIndex:",
-       "layoutManager",
-       "layoutManager:didCompleteLayoutForTextContainer:atEnd:",
-       "layoutManagerDidInvalidateLayout:",
-       "layoutManagerOwnsFirstResponderInWindow:",
-       "layoutManagers",
-       "layoutOptions",
-       "layoutParagraphAtPoint:",
-       "layoutRectForTextBlock:atIndex:effectiveRange:",
-       "layoutTab",
-       "layoutToFitInIconWidth:",
-       "layoutToFitInMinimumIconSize",
-       "layoutToFitInViewerFrameHeight:",
-       "layoutToMinimumPageWidth:maximumPageWidth:adjustingViewSize:",
-       "lazyBrowserCell",
-       "lazyGetChildrenForNodeWithIdentifier:",
-       "lazySync:",
-       "leading",
-       "leadingOffset",
-       "leafKeyPath",
-       "learnWord:",
-       "learnWord:language:",
-       "leftChild",
-       "leftExpression",
-       "leftIndentMarkerWithRulerView:location:",
-       "leftMargin",
-       "leftSplitItem",
-       "leftTabMarkerWithRulerView:location:",
-       "leftView",
-       "length",
-       "letterCharacterSet",
-       "level",
-       "levelForItem:",
-       "levelForRow:",
-       "libxml2Content",
-       "lightGrayColor",
-       "lightweightHandleChildChanged:parent:property:",
-       "like:",
-       "limitDateForMode:",
-       "lineBreakBeforeIndex:withinRange:",
-       "lineBreakByHyphenatingBeforeIndex:withinRange:",
-       "lineBreakHandler",
-       "lineBreakInString:beforeIndex:withinRange:useBook:",
-       "lineBreakMode",
-       "lineCapStyle",
-       "lineFragmentPadding",
-       "lineFragmentRectForGlyphAtIndex:effectiveRange:",
-       "lineFragmentRectForGlyphAtIndex:effectiveRange:withoutAdditionalLayout:",
-       "lineFragmentRectForProposedRect:remainingRect:",
-       "lineFragmentRectForProposedRect:sweepDirection:movementDirection:remainingRect:",
-       "lineFragmentUsedRectForGlyphAtIndex:effectiveRange:",
-       "lineFragmentUsedRectForGlyphAtIndex:effectiveRange:withoutAdditionalLayout:",
-       "lineFragmentWidth",
-       "lineHeightMultiple",
-       "lineJoinStyle",
-       "lineNumber",
-       "lineRangeForRange:",
-       "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",
-       "loadData:MIMEType:textEncodingName:baseURL:",
-       "loadDataRepresentation:ofType:",
-       "loadDidFinish",
-       "loadDidSucceed",
-       "loadEmptyDocumentSynchronously",
-       "loadFaces:",
-       "loadFileWrapperRepresentation:ofType:",
-       "loadFindStringFromPasteboard",
-       "loadFindStringToPasteboard",
-       "loadFinished",
-       "loadFromURL:error:",
-       "loadImage:",
-       "loadImageHeader",
-       "loadImageWithName:",
-       "loadInBackground",
-       "loadInForeground",
-       "loadKernel",
-       "loadLibrary:",
-       "loadNib",
-       "loadNibFile:externalNameTable:withZone:",
-       "loadNibNamed:owner:",
-       "loadPanelNamed:",
-       "loadPlugIn",
-       "loadPlugIn:allowNonExecutable:",
-       "loadPluginRequest:",
-       "loadRecipeOverrides:",
-       "loadRequest:",
-       "loadRequest:inTarget:withNotifyData:sendNotification:",
-       "loadRulebook:",
-       "loadSoundWithName:",
-       "loadSuiteWithDictionary:fromBundle:",
-       "loadSuitesFromBundle:",
-       "loadTidy",
-       "loadType",
-       "loadUI",
-       "loadURL:referrer:reload:userGesture:target:triggeringEvent:form:formValues:",
-       "loadWindow",
-       "loadWithRequest:",
-       "loadWithRequestNow:",
-       "loadedBundles",
-       "loadedCellAtRow:column:",
-       "loadsImagesAutomatically",
-       "localName",
-       "localNameForName:",
-       "localObjects",
-       "localProxies",
-       "localSnapshotForGlobalID:",
-       "localSnapshotForSourceGlobalID:relationshipName:",
-       "localTimeZone",
-       "locale",
-       "localeIdentifier",
-       "localizationDictionary",
-       "localizations",
-       "localizationsToSearch",
-       "localizedCaseInsensitiveCompare:",
-       "localizedColorNameComponent",
-       "localizedCompare:",
-       "localizedDescription",
-       "localizedEntityNameForEntity:",
-       "localizedFormattedDisplayLabels",
-       "localizedInfoDictionary",
-       "localizedInputManagerName",
-       "localizedModelStringForKey:",
-       "localizedName",
-       "localizedNameForFamily:face:",
-       "localizedNameOfStringEncoding:",
-       "localizedPropertyNameForProperty:",
-       "localizedRecoveryOptions",
-       "localizedRecoverySuggestion",
-       "localizedStringForKey:value:table:",
-       "localizedStringWithFormat:",
-       "localizesFormat",
-       "location",
-       "locationForGlyphAtIndex:",
-       "locationForSubmenu:",
-       "locationInWindow",
-       "locationOfPrintRect:",
-       "locationProperties",
-       "locationX",
-       "locationY",
-       "locationZ",
-       "lock",
-       "lockDocument",
-       "lockFocus",
-       "lockFocusForView:inRect:needsTranslation:",
-       "lockFocusIfCanDraw",
-       "lockFocusIfCanDrawInFrame:flipped:clip:",
-       "lockFocusOnRepresentation:",
-       "lockForReading",
-       "lockForReadingWithExceptionHandler:",
-       "lockForWriting",
-       "lockObjectStore",
-       "lockParentStore",
-       "lockWhenCondition:",
-       "lockWhenCondition:beforeDate:",
-       "logicalSize",
-       "loginWindowDidSwitchFromUser:",
-       "loginWindowDidSwitchToUser:",
-       "logonButtonCell",
-       "longCharacterIsMember:",
-       "longLongValue",
-       "longValue",
-       "loopCount",
-       "loosenKerning:",
-       "lossyCString",
-       "lowerBaseline:",
-       "lowercaseLetterCharacterSet",
-       "lowercaseString",
-       "machPort",
-       "magentaColor",
-       "magentaComponent",
-       "mainBundle",
-       "mainDocumentURL",
-       "mainFrame",
-       "mainMenu",
-       "mainResource",
-       "mainScreen",
-       "mainWindow",
-       "mainWindowFrameColor",
-       "mainWindowFrameHighlightColor",
-       "mainWindowFrameShadowColor",
-       "maintainsInactiveSelection",
-       "makeCellAtRow:column:",
-       "makeCharacterSetCompact",
-       "makeCharacterSetFast",
-       "makeCurrentContext",
-       "makeDocumentForURL:withContentsOfURL:ofType:error:",
-       "makeDocumentWithContentsOfFile:ofType:",
-       "makeDocumentWithContentsOfURL:ofType:error:",
-       "makeFirstResponder:",
-       "makeIdentity",
-       "makeImmutable",
-       "makeKeyAndOrderFront:",
-       "makeKeyWindow",
-       "makeMainWindow",
-       "makeNewConnection:sender:",
-       "makeNextSegmentKey",
-       "makeObjectsPerformSelector:",
-       "makeObjectsPerformSelector:withObject:",
-       "makePreviousSegmentKey",
-       "makeRegexFindSafe:",
-       "makeRegexSafe:",
-       "makeStale",
-       "makeTextLarger:",
-       "makeTextSmaller:",
-       "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",
-       "markerWithRulerMarker:parent:",
-       "markers",
-       "markupStringFromNode:nodes:",
-       "markupStringFromRange:nodes:",
-       "matchLabels:againstElement:",
-       "matchQualityOfColorAtIndex:toColor:filtered:ifBetterThan:",
-       "matches:",
-       "matchesOnMultipleResolution",
-       "matchesPattern:caseInsensitive:",
-       "matchesWithoutOperatorComponentsKeyPath:",
-       "matchingFontDescriptorsWithMandatoryKeys:",
-       "matrix",
-       "matrixInColumn:",
-       "max",
-       "maxContentSize",
-       "maxCount",
-       "maxDate",
-       "maxFormattedDisplayLabelWidth",
-       "maxSize",
-       "maxValue",
-       "maxWidth",
-       "maximizeWindow:",
-       "maximum",
-       "maximumDecimalNumber",
-       "maximumHeight",
-       "maximumLength",
-       "maximumLineHeight",
-       "maximumRange",
-       "maximumRecentDocumentCount",
-       "mayDHTMLCopy",
-       "mayDHTMLCut",
-       "mayDHTMLPaste",
-       "mayStartDragAtEventLocation:",
-       "mblurROI:forRect:userInfo:",
-       "measurementUnits",
-       "measurements:fromResolutionData:",
-       "mediaBox",
-       "mediaStyle",
-       "member:",
-       "menu",
-       "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",
-       "mergeAttributesInto:",
-       "mergeCells",
-       "mergeFontFeaturesInto:",
-       "mergeFontVariationsInto:",
-       "mergeInVariations:",
-       "mergeStyleInto:",
-       "mergedModelFromBundles:",
-       "messageFontOfSize:",
-       "metadataColumns",
-       "metadataForPersistentStoreWithURL:error:",
-       "metadataQuery:replacementObjectForResultObject:",
-       "metadataQuery:replacementValueForAttribute:value:",
-       "method",
-       "methodArgSize:",
-       "methodDescriptionForSelector:",
-       "methodFor:",
-       "methodForSelector:",
-       "methodReturnLength",
-       "methodReturnType",
-       "methodSignature",
-       "methodSignatureForSelector:",
-       "methods",
-       "migratePersistentStore:toURL:withType:error:",
-       "minColumnWidth",
-       "minContentSize",
-       "minContentSizeForMinFrameSize:styleMask:",
-       "minCount",
-       "minDate",
-       "minFrameSize",
-       "minFrameSizeForMinContentSize:styleMask:",
-       "minFrameWidthWithTitle:styleMask:",
-       "minPickerContentSize",
-       "minSize",
-       "minValue",
-       "minWidth",
-       "miniaturize:",
-       "minimizeButton",
-       "minimizeWindow:",
-       "minimum",
-       "minimumDecimalNumber",
-       "minimumFontSize",
-       "minimumHeight",
-       "minimumLineHeight",
-       "minimumLogicalFontSize",
-       "minimumWidth",
-       "miniwindowTitle",
-       "minusSet:",
-       "minuteOfHour",
-       "miterLimit",
-       "mixedStateImage",
-       "mnemonic",
-       "mnemonicLocation",
-       "modDate",
-       "modalWindow",
-       "mode",
-       "modeButton",
-       "model",
-       "modelAndProxyKeysObserved",
-       "modelByMergingModels:",
-       "modifier",
-       "modifierFlags",
-       "modifiersForEvent:",
-       "modifyFont:",
-       "modifyFontTrait:",
-       "modifyFontViaPanel:",
-       "moduleCanBeRemoved",
-       "moduleWasInstalled",
-       "moduleWillBeRemoved",
-       "monthOfYear",
-       "mostCompatibleStringEncoding",
-       "mountedRemovableMedia",
-       "mouse:",
-       "mouse:inRect:",
-       "mouseDown:",
-       "mouseDownCanMoveWindow",
-       "mouseDownFlags",
-       "mouseDownOnCharacterIndex:atCoordinate:withModifier:client:",
-       "mouseDragged:",
-       "mouseDraggedOnCharacterIndex:atCoordinate:withModifier:client:",
-       "mouseEntered:",
-       "mouseEnteredToolTip:inWindow:withEvent:",
-       "mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:",
-       "mouseExited:",
-       "mouseLocation",
-       "mouseLocationOutsideOfEventStream",
-       "mouseMoved:",
-       "mouseMovedNotification:",
-       "mouseTracker:constrainPoint:withEvent:",
-       "mouseTracker:didStopTrackingWithEvent:",
-       "mouseTracker:handlePeriodicEvent:",
-       "mouseTracker:shouldContinueTrackingWithEvent:",
-       "mouseTracker:shouldStartTrackingWithEvent:",
-       "mouseUp:",
-       "mouseUpOnCharacterIndex:atCoordinate:withModifier:client:",
-       "moveBackward:",
-       "moveBackwardAndModifySelection:",
-       "moveColumn:toColumn:",
-       "moveCurrentPointInDirection:",
-       "moveDown:",
-       "moveDragCaretToPoint:",
-       "moveForward:",
-       "moveForwardAndModifySelection:",
-       "moveGlyphsTo:from:",
-       "moveInDirection:",
-       "moveLeft:",
-       "movePath:toPath:handler:",
-       "moveRight:",
-       "moveSelectionToDragCaret:smartMove:",
-       "moveToPoint:",
-       "moveUp:",
-       "moveWordBackward:",
-       "moveWordBackwardAndModifySelection:",
-       "moveWordForward:",
-       "moveWordForwardAndModifySelection:",
-       "movie",
-       "movieController",
-       "movieRect",
-       "movieUnfilteredFileTypes",
-       "movieUnfilteredPasteboardTypes",
-       "multipleThreadsEnabled",
-       "multiply:by:",
-       "mutableArrayValueForBinding:resolveMarkersToPlaceholders:",
-       "mutableArrayValueForKey:",
-       "mutableArrayValueForKeyPath:",
-       "mutableAttributes",
-       "mutableBytes",
-       "mutableCollectionGetter",
-       "mutableCopy",
-       "mutableCopyWithZone:",
-       "mutableSetValueForBinding:resolveMarkersToPlaceholders:",
-       "mutableSetValueForKey:",
-       "mutableSetValueForKeyPath:",
-       "mutableString",
-       "mutableSubstringFromRange:",
-       "mutatingMethods",
-       "name",
-       "nameAtIndex:filtered:",
-       "nameFieldLabel",
-       "nameFromPath:extra:",
-       "names",
-       "namesOfPromisedFilesDroppedAtDestination:",
-       "namespaceForPrefix:",
-       "namespaces",
-       "navNodeClass",
-       "navNodeWithSimpleQueryString:",
-       "navView",
-       "navView:compareFilename:with::caseSensitive:",
-       "navView:compareFilename:with:caseSensitive:",
-       "navView:shouldShowNode:",
-       "needsAction",
-       "needsDelegate",
-       "needsDisplay",
-       "needsLayout",
-       "needsPanelToBecomeKey",
-       "needsResyncWithDefaultVoice",
-       "needsSizing",
-       "needsToDrawRect:",
-       "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:",
-       "networkNode",
-       "new",
-       "new:firstIndirectType:",
-       "newCloseButton",
-       "newColor:",
-       "newColorName:",
-       "newConversation",
-       "newCount:",
-       "newCreateTableStatementForEntity:",
-       "newCreateTableStatementForManyToMany:",
-       "newDataAvailable",
-       "newDeleteStatementWithCorrelation:",
-       "newDeleteStatementWithRow:",
-       "newDistantObjectWithCoder:",
-       "newDocument:",
-       "newFetchedArray",
-       "newFetchedRow",
-       "newFetchedRowForObjectID:",
-       "newFetchedRowsForObjectID:forManyToMany:",
-       "newFetchedRowsForObjectID:forToMany:",
-       "newFileButton",
-       "newFlipped:",
-       "newForeignEntityKeyNumberForSlot:",
-       "newForeignKeyID:entity:",
-       "newForeignKeyNumberForSlot:",
-       "newGeneratorWithStatement:",
-       "newInsertStatementWithCorrelation:",
-       "newInsertStatementWithRow:",
-       "newInsertedObject",
-       "newInstanceWithKeyCount:sourceDescription:destinationDescription:zone:",
-       "newInvocationWithCoder:",
-       "newInvocationWithMethodSignature:",
-       "newLegalColorSwatchHeightFromHeight:",
-       "newListName:",
-       "newMiniaturizeButton",
-       "newNode",
-       "newNodeWithIndex:belowIndexPath:firstChild:sibling:",
-       "newObject",
-       "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:zone:",
-       "newWithKey:object:",
-       "newWithKeyArray:",
-       "newWithKeyArray:zone:",
-       "newWithPath:prepend:attributes:cross:",
-       "newZoomButton",
-       "nextEventForWindow:",
-       "nextEventMatchingMask:",
-       "nextEventMatchingMask:untilDate:inMode:dequeue:",
-       "nextKeyView",
-       "nextKeyViewInsideWebFrameViews",
-       "nextKeyViewOutsideWebFrameViews",
-       "nextObject",
-       "nextPK64",
-       "nextResponder",
-       "nextSibling",
-       "nextState",
-       "nextToken",
-       "nextValidKeyView",
-       "nextWordFromIndex:forward:",
-       "nextWordInString:fromIndex:useBook:forward:",
-       "nibInstantiate",
-       "nibInstantiateWithOwner:topLevelObjects:",
-       "nilSymbol",
-       "noGCAllowedObjectCount",
-       "noResponderFor:",
-       "node",
-       "nodeAtIndexPath:",
-       "nodeFromManagedObject:objectIDMap:",
-       "nodeType",
-       "nodeWithFBENode:",
-       "nodeWithName:position:rect:view:children:",
-       "nodeWithName:value:source:children:",
-       "nodeWithPath:",
-       "nodesForXPath:error:",
-       "nodesFromList:",
-       "noiseImage",
-       "nonBaseCharacterSet",
-       "nonmutatingMethods",
-       "nonretainedObjectValue",
-       "normalSpeakingRate",
-       "normalizeAdjacentTextNodesPreservingCDATA:",
-       "normalizeWhitespace:",
-       "normalizedFontDescriptor",
-       "normalizedRect:",
-       "notANumber",
-       "notANumberSymbol",
-       "notActiveWindowFrameColor",
-       "notActiveWindowFrameHighlightColor",
-       "notActiveWindowFrameShadowColor",
-       "notPredicateOperator",
-       "notShownAttributeForGlyphAtIndex:",
-       "notationName",
-       "noteContentValueHasChanged",
-       "noteFileSystemChanged:",
-       "noteFontCollectionsChanged",
-       "noteHeightOfRowsWithIndexesChanged:",
-       "noteNewRecentDocument:",
-       "noteNewRecentDocumentURL:",
-       "noteNumberOfItemsChanged",
-       "noteNumberOfRowsChanged",
-       "noteQueryAttributesChanged",
-       "notificationCenter",
-       "notificationCenterForType:",
-       "notificationWithName:object:",
-       "notificationWithName:object:userInfo:",
-       "notifyData",
-       "null",
-       "nullDescriptor",
-       "numPendingOrLoadingRequests",
-       "numRowsToToggleVisible",
-       "numberOfArguments",
-       "numberOfColorComponents",
-       "numberOfColumns",
-       "numberOfComponents",
-       "numberOfGlyphs",
-       "numberOfGroups",
-       "numberOfImages",
-       "numberOfItems",
-       "numberOfItemsInComboBox:",
-       "numberOfItemsInComboBoxCell:",
-       "numberOfItemsInMenu:",
-       "numberOfMajorTickMarks",
-       "numberOfPages",
-       "numberOfPlanes",
-       "numberOfRows",
-       "numberOfRowsInTableView:",
-       "numberOfSelectedColumns",
-       "numberOfSelectedRows",
-       "numberOfTabViewItems",
-       "numberOfTickMarks",
-       "numberOfVisibleCols",
-       "numberOfVisibleColumns",
-       "numberOfVisibleItems",
-       "numberOfVisibleRows",
-       "numberWithBool:",
-       "numberWithChar:",
-       "numberWithDouble:",
-       "numberWithFloat:",
-       "numberWithInt:",
-       "numberWithLong:",
-       "numberWithLongLong:",
-       "numberWithShort:",
-       "numberWithUnsignedChar:",
-       "numberWithUnsignedInt:",
-       "numberWithUnsignedLong:",
-       "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:",
-       "objectClass",
-       "objectCount",
-       "objectDidBeginEditing:",
-       "objectDidEndEditing:",
-       "objectDidTriggerAction:",
-       "objectDidTriggerDoubleClickAction:",
-       "objectEnumerator",
-       "objectForIndex:dictionary:",
-       "objectForInfoDictionaryKey:",
-       "objectForKey:",
-       "objectForKey:inDomain:",
-       "objectForServicePath:",
-       "objectForServicePath:app:doLaunch:limitDate:",
-       "objectForWebScript",
-       "objectFrom:withIndex:",
-       "objectID",
-       "objectIDDataSize",
-       "objectIDDataType",
-       "objectIDFactoryForEntity:",
-       "objectIDFactoryForSQLEntity:",
-       "objectIDWithInteger32:",
-       "objectIDWithInteger64:",
-       "objectIDWithObject:",
-       "objectIDsForRelationship:forObjectID:",
-       "objectLoadedFromCacheWithURL:response:size:",
-       "objectMechanismsRequired",
-       "objectMechanismsRequiredForObject:",
-       "objectRegisteredForID:",
-       "objectSpecifier",
-       "objectStore",
-       "objectValue",
-       "objectValueForDisplayValue:",
-       "objectValueInvalidationCapableObjectForObject:",
-       "objectValueOfSelectedItem",
-       "objectValues",
-       "objectWillChange:",
-       "objectZone",
-       "objectsAtIndexes:",
-       "objectsByEvaluatingSpecifier",
-       "objectsByEvaluatingWithContainers:",
-       "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",
-       "oldSystemColorWithCoder:",
-       "onStateImage",
-       "oneOrMoreDescriptionsForSubelementName:",
-       "opaqueAncestor",
-       "open",
-       "open:",
-       "openAppleMenuItem:",
-       "openCategoryFile:",
-       "openDocument:",
-       "openDocumentWithContentsOfFile:display:",
-       "openDocumentWithContentsOfURL:display:error:",
-       "openFile:",
-       "openFile:ok:",
-       "openFile:withApplication:",
-       "openFile:withApplication:andDeactivate:",
-       "openFirstDrawer:",
-       "openFrameInNewWindow:",
-       "openGLContext",
-       "openHandCursor",
-       "openHelpAnchor:inBook:",
-       "openImageInNewWindow:",
-       "openInclude:",
-       "openLinkInNewWindow:",
-       "openListFromFile:",
-       "openNewWindowWithURL:element:",
-       "openOnEdge:",
-       "openPanel",
-       "openResourceFile",
-       "openRoot",
-       "openTempFile:ok:",
-       "openURL:",
-       "openURL:reload:contentType:refresh:lastModified:pageCache:",
-       "openURLs:withAppBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifiers:",
-       "openUntitledDocumentAndDisplay:error:",
-       "openUntitledDocumentOfType:display:",
-       "openUserDictionary:",
-       "openWithApplication",
-       "openWithFinder:",
-       "operand",
-       "operatingSystem",
-       "operationNotAllowedCursor",
-       "operatorType",
-       "operatorWithCustomSelector:modifier:",
-       "operatorWithType:modifier:options:",
-       "optionalSharedHistory",
-       "options",
-       "optionsAttributes",
-       "optionsFromPanel",
-       "orPredicateOperator",
-       "orangeColor",
-       "orderAdapterOperations",
-       "orderFront",
-       "orderFront:",
-       "orderFrontCharacterPalette:",
-       "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:flags:",
-       "orderSurface:relativeTo:",
-       "orderWindow:relativeTo:",
-       "orderedDocuments",
-       "orderedItemsLastVisitedOnDay:",
-       "orderedLastVisitedDays",
-       "orderedWindows",
-       "orientation",
-       "origin",
-       "originalBodyStream",
-       "originalURLString",
-       "otherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:",
-       "otherMouseDown:",
-       "otherMouseDragged:",
-       "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:",
-       "outlineView:willDisplayCell:forTableColumn:row:",
-       "outlineView:willDisplayOutlineCell:forTableColumn:item:",
-       "outlineView:willDisplayOutlineCell:forTableColumn:row:",
-       "outlineView:writeItems:toPasteboard:",
-       "outputFormat",
-       "outputImage",
-       "outputKeys",
-       "overrideMediaType",
-       "owner",
-       "ownerDocument",
-       "ownsDestinationObjectsForRelationshipKey:",
-       "pListForPath:createFile:",
-       "page",
-       "pageCache",
-       "pageCacheSize",
-       "pageCount",
-       "pageDown:",
-       "pageFooter",
-       "pageHeader",
-       "pageLayout",
-       "pageOrder",
-       "pageSizeForPaper:",
-       "pageTitle",
-       "pageUp:",
-       "pair",
-       "paletteFontOfSize:",
-       "paletteImageRep",
-       "paletteLabel",
-       "panel",
-       "panel:compareFilename:with:caseSensitive:",
-       "panel:directoryDidChange:",
-       "panel:isValidFilename:",
-       "panel:shouldShowFilename:",
-       "panel:userEnteredFilename:confirmed:",
-       "panel:willExpand:",
-       "panelConvertFont:",
-       "panelSelectionDidChange:",
-       "paperSize",
-       "paragraphAttributesAtIndex:effectiveRange:inRange:",
-       "paragraphCharacterRange",
-       "paragraphGlyphRange",
-       "paragraphRangeForRange:",
-       "paragraphSeparatorCharacterRange",
-       "paragraphSpacing",
-       "paragraphSpacingAfterCharactersInRange:withProposedLineFragmentRect:",
-       "paragraphSpacingAfterGlyphAtIndex:withProposedLineFragmentRect:",
-       "paragraphSpacingBefore",
-       "paragraphSpacingBeforeGlyphAtIndex:withProposedLineFragmentRect:",
-       "paramDescriptorForKeyword:",
-       "parameter:differs:from:",
-       "parent",
-       "parentCrayonRow",
-       "parentCrayonView",
-       "parentForItem:",
-       "parentFrame",
-       "parentItemRepresentedObjectForMenu:",
-       "parentNode",
-       "parentObject",
-       "parentObjectUnignored",
-       "parentSpecifier",
-       "parentStore",
-       "parentWindow",
-       "parse",
-       "parse:",
-       "parseError:",
-       "parseKey:",
-       "parseMachMessage:localPort:remotePort:msgid:components:",
-       "parseMetaSyntaxLeafResultShouldBeSkipped:",
-       "parseSeparatorEqualTo:",
-       "parseStream",
-       "parseSuiteOfPairsKey:separator:value:separator:allowOmitLastSeparator:",
-       "parseTokenEqualTo:mask:",
-       "parseTokenWithMask:",
-       "parser:didEndElement:namespaceURI:qualifiedName:",
-       "parser:didStartElement:namespaceURI:qualifiedName:attributes:",
-       "parser:foundAttributeDeclarationWithName:forElement:type:defaultValue:",
-       "parser:foundCDATA:",
-       "parser:foundCharacters:",
-       "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:",
-       "partWithCode:parent:",
-       "partialControllerKey",
-       "partialObjectKey",
-       "passesFilterAtIndex:",
-       "password",
-       "paste:",
-       "pasteFont:",
-       "pasteImageNamed:",
-       "pasteRuler:",
-       "pasteboard:provideDataForType:",
-       "pasteboard:provideDataForType:itemIdentifier:",
-       "pasteboardByFilteringFile:",
-       "pasteboardByFilteringTypesInPasteboard:",
-       "pasteboardChangedOwner:",
-       "pasteboardTypesForSelection",
-       "pasteboardWithName:",
-       "pasteboardWithUniqueName",
-       "path",
-       "pathByResolvingSymlinksAndAliasesInPath:",
-       "pathComponents",
-       "pathContentOfSymbolicLinkAtPath:",
-       "pathExpression",
-       "pathExtension",
-       "pathForImageResource:",
-       "pathForResource:ofType:",
-       "pathForResource:ofType:inDirectory:forLocalization:",
-       "pathForSoundResource:",
-       "pathStoreWithCharacters:length:",
-       "pathToColumn:",
-       "pathWithComponents:",
-       "pathnameForDatabase",
-       "pathsForResourcesOfType:inDirectory:",
-       "pathsForResourcesOfType:inDirectory:forLocalization:",
-       "patternImage",
-       "pausedActions",
-       "peerCertificateChain",
-       "percentEscapeDecodeBuffer:range:stripWhitespace:",
-       "perform:",
-       "perform:with:",
-       "perform:with:with:",
-       "perform:withEachObjectInArray:",
-       "performAction:",
-       "performActionFlashForItemAtIndex:",
-       "performActionForItemAtIndex:",
-       "performActionWithHighlightingForItemAtIndex:",
-       "performActivity:modes:",
-       "performAdapterOperation:",
-       "performAdapterOperations:",
-       "performChanges",
-       "performClick",
-       "performClick:",
-       "performClickWithFrame:inView:",
-       "performClose:",
-       "performDefaultImplementation",
-       "performDelayedComplete",
-       "performDragOperation:",
-       "performFindPanelAction:",
-       "performFindPanelAction:forClient:",
-       "performHTTPHeaderRead:",
-       "performKeyEquivalent:",
-       "performMenuAction:withTarget:",
-       "performMiniaturize:",
-       "performMnemonic:",
-       "performOperationUsingObject:andObject:",
-       "performPrimitiveOperationUsingObject:andObject:",
-       "performRemoveObjectForKey:",
-       "performSelector:",
-       "performSelector:object:afterDelay:",
-       "performSelector:target:argument:order:modes:",
-       "performSelector:withObject:",
-       "performSelector:withObject:afterDelay:",
-       "performSelector:withObject:afterDelay:inModes:",
-       "performSelector:withObject:withObject:",
-       "performSelector:withObject:withObject:withObject:",
-       "performSelectorOnMainThread:withObject:waitUntilDone:",
-       "performSelectorOnMainThread:withObject:waitUntilDone:modes:",
-       "performSetObject:forKey:",
-       "performStreamRead",
-       "performStreamRead:",
-       "performZoom:",
-       "performsContentDecoding",
-       "performv::",
-       "persistence",
-       "persistenceStore",
-       "persistentDomainForName:",
-       "persistentStore",
-       "persistentStoreCoordinator",
-       "persistentStoreForURL:",
-       "persistentStoreTypeForFileType:",
-       "persistentStores",
-       "physicalSize",
-       "pipe",
-       "pixelsHigh",
-       "pixelsWide",
-       "pk64",
-       "placeButtons:firstWidth:secondWidth:thirdWidth:",
-       "placeholderAttributedString",
-       "placeholderForMarker:",
-       "placeholderString",
-       "play",
-       "plugInViewWithArguments:",
-       "plugInViewWithArguments:fromPluginPackage:",
-       "plugin",
-       "pluginClassForObject:andBinderClass:requiredPluginProtocol:",
-       "pluginDescription",
-       "pluginDestroy",
-       "pluginForExtension:",
-       "pluginForKey:withEnumeratorSelector:",
-       "pluginForMIMEType:",
-       "pluginInitialize",
-       "pluginPointer",
-       "pluginScriptableObject",
-       "pluginStart",
-       "pluginStop",
-       "pluginViewWithArguments:",
-       "pluginViewWithPackage:attributeNames:attributeValues:baseURL:",
-       "pluginWithPath:",
-       "plugins",
-       "pluginsInfo",
-       "pointSize",
-       "pointToOffset:style:position:reversed:includePartialGlyphs:",
-       "pointValue",
-       "pointerID",
-       "pointerSerialNumber",
-       "pointerType",
-       "pointerValue",
-       "pointingDeviceID",
-       "pointingDeviceSerialNumber",
-       "pointingDeviceType",
-       "pointingHandCursor",
-       "policyDelegate",
-       "pollForAppletInView:",
-       "pollForAppletInWindow:",
-       "pop",
-       "popAndInvoke",
-       "popBundleForImageSearch",
-       "popGlyph:",
-       "popSubnode",
-       "popTopView",
-       "popUndoObject",
-       "popUp:",
-       "popUpContextMenu:withEvent:forView:",
-       "popUpContextMenu:withEvent:forView:withFont:",
-       "popUpMenu:atLocation:width:forView:withSelectedItem:withFont:",
-       "populateCacheFromStream:data:",
-       "populateObject:withContent:valueKey:objectKey:insertsNullPlaceholder:",
-       "popupStatusBarMenu:inRect:ofView:withEvent:",
-       "port",
-       "portCoderWithComponents:",
-       "portForName:",
-       "portForName:host:",
-       "portForName:host:nameServerPortNumber:",
-       "portList",
-       "portalDied:",
-       "poseAs:",
-       "poseAsClass:",
-       "position",
-       "positionButton",
-       "positionOfGlyph:forCharacter:struckOverRect:",
-       "positionOfGlyph:forLongCharacter:struckOverRect:",
-       "positionOfGlyph:precededByGlyph:isNominal:",
-       "positionOfGlyph:struckOverGlyph:metricsExist:",
-       "positionOfGlyph:withRelation:toBaseGlyph:totalAdvancement:metricsExist:",
-       "positionRelativeToAttachedView",
-       "positiveFormat",
-       "positiveInfinitySymbol",
-       "postColorSwatchesChangedDistributedNotification",
-       "postEvent:atStart:",
-       "postNotification:",
-       "postNotificationName:object:",
-       "postNotificationName:object:userInfo:",
-       "postNotificationName:object:userInfo:deliverImmediately:",
-       "postNotificationName:object:userInfo:options:",
-       "postURL:target:len:buf:file:",
-       "postURLNotify:target:len:buf:file:notifyData:",
-       "postWithURL:referrer:target:data:contentType:triggeringEvent:form:formValues:",
-       "postsFrameChangedNotifications",
-       "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",
-       "preferredLocalizationName",
-       "preferredLocalizations",
-       "preferredLocalizationsFromArray:",
-       "preferredPasteboardTypeFromArray:restrictedToTypesFromArray:",
-       "preferredPlaceholderForMarker:",
-       "prefersAllColumnUserResizing",
-       "prefersColorMatch",
-       "prefersEnabledOverEditable:",
-       "prefersTrackingUntilMouseUp",
-       "prefix",
-       "prefixForName:",
-       "prepare",
-       "prepareBeginsWith:",
-       "prepareCallbacks",
-       "prepareComparisonPredicate:",
-       "prepareContent",
-       "prepareDeleteStatementWithCorrelation:",
-       "prepareDeleteStatementWithRow:",
-       "prepareEndsWith:",
-       "prepareForDragOperation:",
-       "prepareForReloadChildrenForNode:",
-       "prepareForSave",
-       "prepareForSave:",
-       "prepareGState",
-       "prepareIn:",
-       "prepareInsertStatementWithCorrelation:",
-       "prepareInsertStatementWithRow:",
-       "prepareLike:",
-       "prepareMatches:",
-       "prepareOpenGL",
-       "preparePageLayout:",
-       "prepareSQLStatement:",
-       "prepareSavePanel:",
-       "prepareSelectStatementWithFetchRequest:",
-       "prepareUpdateStatementWithRow:originalRow:",
-       "prepareWithInvocationTarget:",
-       "presentError:",
-       "presentError:modalForWindow:delegate:didPresentSelector:contextInfo:",
-       "presentableDescription",
-       "presentableName",
-       "presentableNameForSpecifier:",
-       "presentableNames",
-       "presentationWindowForError:originatedInWindow:",
-       "preservesContentDuringLiveResize",
-       "preservesSelection",
-       "pressure",
-       "preventWindowOrdering",
-       "previewHelperClass",
-       "previousFailureCount",
-       "previousItem",
-       "previousKeyView",
-       "previousKeyViewInsideWebFrameViews",
-       "previousKeyViewOutsideWebFrameViews",
-       "previousSibling",
-       "previousValidKeyView",
-       "primaryKey",
-       "primaryKeyColumnDefinitions",
-       "primaryKeyForEntity:",
-       "primaryKeyGeneration",
-       "primaryKeys",
-       "primitiveType",
-       "primitiveValueForKey:",
-       "principalClass",
-       "print",
-       "print:",
-       "printDocument:",
-       "printDocumentWithSettings:showPrintPanel:delegate:didPrintSelector:contextInfo:",
-       "printFile:ok:",
-       "printInfo",
-       "printInfoIsBeingDeallocated",
-       "printJobTitle",
-       "printOperationWithSettings:error:",
-       "printOperationWithView:",
-       "printOperationWithView:printInfo:",
-       "printPanel",
-       "printShowingPrintPanel:",
-       "printer",
-       "printerFont",
-       "printerWithType:",
-       "printingAdjustmentInLayoutManager:forNominallySpacedGlyphRange:packedGlyphs:count:",
-       "priorityForFlavor:",
-       "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:",
-       "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:",
-       "propertyList",
-       "propertyListForType:",
-       "propertyListFromData:mutabilityOption:format:errorDescription:",
-       "propertyListFromStringsFileFormat",
-       "propertyMappings",
-       "propertyNamed:",
-       "propertyTableAtIndex:",
-       "propertyTableCount",
-       "propertyType",
-       "proposedCredential",
-       "protectionSpace",
-       "protocol",
-       "protocolCheckerWithTarget:protocol:",
-       "protocolFamily",
-       "prototype",
-       "provideImageData:bytesPerRow:origin::size::userInfo:",
-       "provideImageTexture:bounds:userInfo:",
-       "provideNewButtonImage",
-       "provideNewSubview:",
-       "provideNewView:",
-       "providerRespondingToSelector:",
-       "provisionalDataSource",
-       "provisionalItem",
-       "provisionalLoadStarted",
-       "proxyClass",
-       "proxyDictionary",
-       "proxyFor:fauxParent:",
-       "proxyForRulebookServer",
-       "proxyPropertiesForURL:",
-       "proxyType",
-       "proxyWithLocal:",
-       "proxyWithLocal:connection:",
-       "proxyWithTarget:connection:",
-       "publicID",
-       "publish",
-       "pullsDown",
-       "punctuationCharacterSet",
-       "purgeCookiesFromPrivateBrowsing",
-       "purpleColor",
-       "push",
-       "push:",
-       "pushBundleForImageSearch:",
-       "pushGlyph:",
-       "pushSubnode:",
-       "put:",
-       "put::",
-       "putByte:",
-       "putCell:atRow:column:",
-       "putLELong:",
-       "putLEWord:",
-       "queryNode",
-       "quotedStringRepresentation",
-       "raise",
-       "raise:format:",
-       "raise:format:arguments:",
-       "raise:toPower:",
-       "raiseBaseline:",
-       "raisesForNotApplicableKeys",
-       "range",
-       "rangeAtIndex:",
-       "rangeByAlteringCurrentSelection:direction:granularity:",
-       "rangeByAlteringCurrentSelection:verticalDistance:",
-       "rangeByExpandingSelectionWithGranularity:",
-       "rangeContainerClassDescription",
-       "rangeContainerObject",
-       "rangeCount",
-       "rangeForUserCharacterAttributeChange",
-       "rangeForUserCompletion",
-       "rangeForUserParagraphAttributeChange",
-       "rangeForUserTextChange",
-       "rangeOfCharacterFromSet:",
-       "rangeOfCharacterFromSet:options:",
-       "rangeOfCharacterFromSet:options:range:",
-       "rangeOfCharactersAroundCaret",
-       "rangeOfComposedCharacterSequenceAtIndex:",
-       "rangeOfString:",
-       "rangeOfString:options:",
-       "rangeOfString:options:range:",
-       "rangeOfTextBlock:atIndex:",
-       "rangeOfTextList:atIndex:",
-       "rangeOfTextTable:atIndex:",
-       "rangeValue",
-       "rangesForUserCharacterAttributeChange",
-       "rangesForUserParagraphAttributeChange",
-       "rangesForUserTextChange",
-       "rasterize:",
-       "rawData",
-       "readAlignedDataSize",
-       "readBinaryStoreFromData:originalPath:error:",
-       "readColors",
-       "readData:length:",
-       "readDataOfLength:",
-       "readDataOfLength:buffer:",
-       "readDataToEndOfFile",
-       "readDocumentFragment:",
-       "readDocumentFromPbtype:filename:",
-       "readFromData:ofType:error:",
-       "readFromData:options:documentAttributes:",
-       "readFromData:options:documentAttributes:error:",
-       "readFromFile:",
-       "readFromFile:error:",
-       "readFromFile:ofType:",
-       "readFromFileWrapper:ofType:error:",
-       "readFromURL:ofType:",
-       "readFromURL:ofType:error:",
-       "readFromURL:options:documentAttributes:",
-       "readFromURL:options:documentAttributes:error:",
-       "readInBackgroundAndNotifyForModes:",
-       "readInt",
-       "readLock",
-       "readMetadataFromFile:error:",
-       "readObsoleteBinaryStoreFromData:error:",
-       "readPrintInfo",
-       "readSelectionFromPasteboard:",
-       "readSelectionFromPasteboard:type:",
-       "readToEndOfFileInBackgroundAndNotify",
-       "readToEndOfFileInBackgroundAndNotifyForModes:",
-       "readUnlock",
-       "readablePasteboardTypes",
-       "readableTypes",
-       "realAddDirNamed:",
-       "realElement",
-       "reallyDealloc",
-       "reallyInsertObject:atIndex:",
-       "reallyRemoveAllObjects",
-       "reallyRemoveObject:",
-       "reallyRemoveObjectAtIndex:",
-       "reallyReplaceObjectAtIndex:withObject:",
-       "realm",
-       "reapplyStyles",
-       "reapplyStylesForDeviceType:",
-       "reason",
-       "reasonForError:",
-       "recacheAllColors:",
-       "recacheColor",
-       "recalcFigure:path:button:offset:",
-       "recalcFigureForResolution:",
-       "recalculateKeyViewLoop",
-       "receivePort",
-       "receivedData:",
-       "receivedData:textEncodingName:",
-       "receivedData:withDataSource:",
-       "receivedError:",
-       "receivedError:withDataSource:",
-       "receivedResponse:",
-       "receiversSpecifier",
-       "receivesCredentialSecurely",
-       "recentSearches",
-       "recentsAutosaveName",
-       "recipe",
-       "recipeDifference:with:",
-       "recipeDiffers:from:",
-       "recomputeToolTipsForView:remove:add:",
-       "reconcileSelfToSuiteRegistry:",
-       "reconcileSubdescriptionsToSuiteRegistry:",
-       "reconcileToCarbonWindowBounds",
-       "reconcileToSuiteRegistry:suiteName:",
-       "reconcileToSuiteRegistry:suiteName:className:",
-       "reconcileToSuiteRegistry:suiteName:commandName:",
-       "reconcileToSuiteRegistry:suiteName:recordTypeName:",
-       "reconnectBindings:",
-       "recordChangesInContext:",
-       "recordDatabaseOperation:",
-       "recordDeleteForObject:",
-       "recordDescriptor",
-       "recordPrimaryKeyForInsertedObject:",
-       "recordSnapshot:forGlobalID:",
-       "recordSnapshot:forSourceGlobalID:relationshipName:",
-       "recordSnapshots:",
-       "recordToManySnapshots:",
-       "recordUpdateForObject:",
-       "recoveryAttempter",
-       "recoveryOptionIndex",
-       "rect",
-       "rectArrayForCharacterRange:withinSelectedCharacterRange:inTextContainer:rectCount:",
-       "rectArrayForGlyphRange:withinSelectedGlyphRange:inTextContainer:rectCount:",
-       "rectForBlock:layoutAtPoint:inRect:textContainer:characterRange:",
-       "rectForIndex:",
-       "rectForKey:inTable:",
-       "rectForLayoutAtPoint:inRect:textContainer:characterRange:",
-       "rectForPage:",
-       "rectForPart:",
-       "rectForRolloverTracking",
-       "rectIncludingShadow",
-       "rectOfColumn:",
-       "rectOfItemAtIndex:",
-       "rectOfRow:",
-       "rectOfTickMarkAtIndex:",
-       "rectPreservedDuringLiveResize",
-       "rectValue",
-       "rectWithoutShadow",
-       "recycle",
-       "red",
-       "redColor",
-       "redComponent",
-       "redeliverStream",
-       "redirectedToURL:",
-       "redo",
-       "redo:",
-       "redoActionName",
-       "redoEditing:",
-       "redoMenuItemTitle",
-       "redoMenuTitleForUndoActionName:",
-       "reenableDisplayPosting",
-       "reenableFlush",
-       "reenableHeartBeating:",
-       "refCount",
-       "refaultObject:globalID:editingContext:",
-       "referenceBinder",
-       "referencedObjectCount",
-       "referrer",
-       "reflectScrolledClipView:",
-       "refrROI:forRect:",
-       "refreashUI",
-       "refresh",
-       "refreshDetailContent",
-       "refreshObjects:",
-       "refreshPlugins:",
-       "refusesFirstResponder",
-       "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:",
-       "registerName:",
-       "registerName:withNameServer:",
-       "registerObject:withServicePath:",
-       "registerPluginClass:forObjectClass:andBinderClass:",
-       "registerPort:name:",
-       "registerPort:name:nameServerPortNumber:",
-       "registerServicesMenuSendTypes:returnTypes:",
-       "registerTranslator:selector:toTranslateFromClass:",
-       "registerTranslator:selector:toTranslateFromDescriptorType:",
-       "registerURLHandleClass:",
-       "registerUndoOperation",
-       "registerUndoWithTarget:selector:object:",
-       "registerViewClass:representationClass:forMIMEType:",
-       "registeredImageRepClasses",
-       "registeredObjects",
-       "regularFileContents",
-       "rel",
-       "relatedIDsForKey:",
-       "relationship",
-       "relationshipDataWithSourceID:forRelationship:",
-       "relationshipDataWithSourceID:forRelationship:withContext:",
-       "relationshipDescription",
-       "relationshipMappings",
-       "relationshipNamed:",
-       "relationshipsByName",
-       "relativeLineToPoint:",
-       "relativePosition",
-       "relativeString",
-       "release",
-       "releaseAllPools",
-       "releaseCaches",
-       "releaseConnectionWithSynchronizePeerBinders:",
-       "releaseGState",
-       "releaseGlobally",
-       "releaseIconForURL:",
-       "releaseName:count:",
-       "releaseResources",
-       "releaseSQLStatement",
-       "releaseView:",
-       "relinquishFocus",
-       "reload",
-       "reload:",
-       "reloadChildrenForNode:",
-       "reloadColumn:",
-       "reloadData",
-       "reloadDefaultFontFamilies",
-       "reloadItem:reloadChildren:",
-       "reloadRootNode",
-       "rememberedSnapToIndex",
-       "remoteObjects",
-       "remove:",
-       "removeAllActions",
-       "removeAllActionsWithTarget:",
-       "removeAllBindVariables",
-       "removeAllContentObjectsInCellOrControl:",
-       "removeAllExpandedNodes",
-       "removeAllIndexes",
-       "removeAllItems",
-       "removeAllObjects",
-       "removeAllObjectsWithTarget:",
-       "removeAllPoints",
-       "removeAllSubNodes",
-       "removeAllToolTips",
-       "removeAllToolTipsForView:",
-       "removeAnimatingRenderer:",
-       "removeAttribute:range:",
-       "removeAttributeForName:",
-       "removeBinder:",
-       "removeBinding:",
-       "removeCharactersInString:",
-       "removeChild:",
-       "removeChildAtIndex:",
-       "removeChildWindow:",
-       "removeClassDescriptions:",
-       "removeClient:",
-       "removeCollection:",
-       "removeColor:",
-       "removeColorSheetDidEnd:returnCode:context:",
-       "removeColorWithKey:",
-       "removeColumns:",
-       "removeCommandDescriptions:",
-       "removeConnection:forKey:",
-       "removeConnection:fromRunLoop:forMode:",
-       "removeContextHelpForObject:",
-       "removeConversation",
-       "removeCredential:forProtectionSpace:",
-       "removeCursorRect:cursor:",
-       "removeDescriptorAtIndex:",
-       "removeDocument:",
-       "removeDragCaret",
-       "removeEditingStyleFromBodyElement",
-       "removeElementAtIndex:",
-       "removeElementsInRange:",
-       "removeElementsInRange:coalesceRuns:",
-       "removeEventListener:::",
-       "removeExpandedNode:",
-       "removeExpandedNodesStartingWithIndex:",
-       "removeFavoriteInWindow:",
-       "removeFile",
-       "removeFile:",
-       "removeFileAtPath:handler:",
-       "removeFileWrapper:",
-       "removeFontDescriptor:fromCollection:",
-       "removeFrameUsingName:",
-       "removeFreedView:",
-       "removeFreedWindow:",
-       "removeFromFrame",
-       "removeFromOriginLoadSet",
-       "removeFromRunLoop:forMode:",
-       "removeFromSuperview",
-       "removeFromSuperviewWithoutNeedingDisplay",
-       "removeHeartBeatView:",
-       "removeImmediately:",
-       "removeIndex:",
-       "removeIndexRange:",
-       "removeIndexes:",
-       "removeIndexesInRange:",
-       "removeItem:",
-       "removeItemAtIndex:",
-       "removeItemForURLString:",
-       "removeItemViewerAtIndex:",
-       "removeItemWithObjectValue:",
-       "removeItemWithTitle:",
-       "removeItems:",
-       "removeKeyEventHandler",
-       "removeLastObject",
-       "removeLayoutManager:",
-       "removeList:",
-       "removeListSheetDidEnd:returnCode:context:",
-       "removeListener:",
-       "removeLocal:",
-       "removeMarker:",
-       "removeMouseMovedObserver",
-       "removeNamespaceForPrefix:",
-       "removeObject:",
-       "removeObject:fromBothSidesOfRelationshipWithKey:",
-       "removeObject:fromPropertyWithKey:",
-       "removeObject:objectIDMap:",
-       "removeObject:range:identical:",
-       "removeObjectAt:",
-       "removeObjectAtArrangedObjectIndex:",
-       "removeObjectAtIndex:",
-       "removeObjectForKey:",
-       "removeObjectForKey:inDomain:",
-       "removeObjectFromMasterArrayRelationshipAtIndex:selectionMode:",
-       "removeObjectIdenticalTo:",
-       "removeObjects:",
-       "removeObjectsAtArrangedObjectIndexPaths:",
-       "removeObjectsAtArrangedObjectIndexes:",
-       "removeObjectsAtIndexes:",
-       "removeObjectsForKeys:",
-       "removeObjectsFromIndices:numIndices:",
-       "removeObjectsFromMasterArrayRelationshipAtIndexes:selectionMode:",
-       "removeObjectsInArray:",
-       "removeObjectsInRange:",
-       "removeObserver:",
-       "removeObserver:forKeyPath:",
-       "removeObserver:name:object:",
-       "removePathFromLibrarySearchPaths:",
-       "removePersistentStore:error:",
-       "removePort:forMode:",
-       "removePortForName:",
-       "removePortsFromAllRunLoops",
-       "removePortsFromRunLoop:",
-       "removeProxy:",
-       "removeRequestMode:",
-       "removeRow:",
-       "removeRows:",
-       "removeRunLoop:",
-       "removeServiceProvider:",
-       "removeSubNodeAtIndex:",
-       "removeSuperviewObservers",
-       "removeTabStop:",
-       "removeTable",
-       "removeTableColumn:",
-       "removeTemporaryAttribute:forCharacterRange:",
-       "removeTextContainerAtIndex:",
-       "removeToolTip:",
-       "removeToolTipForView:tag:",
-       "removeToolbarItem:",
-       "removeTrackingRect",
-       "removeTrackingRect:",
-       "removeValueAtIndex:fromPropertyWithKey:",
-       "removeView:fromView:layoutManager:",
-       "removeWebView:fromSetNamed:",
-       "removeWindowController:",
-       "removeWindowObservers",
-       "removeWindowsItem:",
-       "renameColor:",
-       "renameColorSheetDidEnd:returnCode:context:",
-       "renameList:",
-       "renameListSheetDidEnd:returnCode:context:",
-       "render:",
-       "renderResolutionData:toBitmap:width:height:bytesPerRow:",
-       "renderTreeAsExternalRepresentation",
-       "rendererWithFont:usingPrinterFont:",
-       "renderingContextForCharacterRange:typesetterBehavior:usesScreenFonts:maximumWidth:",
-       "renderingMode",
-       "renewGState",
-       "renewRows:columns:",
-       "reopenDocumentForURL:withContentsOfURL:error:",
-       "rep",
-       "replaceAllInView:selectionOnly:",
-       "replaceAndFindInView:",
-       "replaceBytesInRange:withBytes:",
-       "replaceBytesInRange:withBytes:length:",
-       "replaceCharactersInRange:withAttributedString:",
-       "replaceCharactersInRange:withCString:length:",
-       "replaceCharactersInRange:withCharacters:length:",
-       "replaceCharactersInRange:withRTF:",
-       "replaceCharactersInRange:withRTFD:",
-       "replaceCharactersInRange:withString:",
-       "replaceChildAtIndex:withNode:",
-       "replaceElementsInRange:withElement:coalesceRuns:",
-       "replaceFile:path:",
-       "replaceGlyphAtIndex:withGlyph:",
-       "replaceInView:",
-       "replaceIndexReferenceModelObjectArrayWithEqualCopy:",
-       "replaceLayoutManager:",
-       "replaceNodeWithIdentifier:withDataFromDelegate:",
-       "replaceNodeWithIdentifier:withNode:",
-       "replaceObject:withObject:",
-       "replaceObjectAtIndex:withObject:",
-       "replaceObjectsAtIndexes:withObjects:",
-       "replaceObjectsInRange:withObject:length:",
-       "replaceObjectsInRange:withObjectsFromArray:",
-       "replaceObjectsInRange:withObjectsFromArray:range:",
-       "replaceOccurrencesOfString:withString:options:range:",
-       "replaceSelectionWithFragment:selectReplacement:smartReplace:",
-       "replaceSelectionWithMarkupString:baseURLString:selectReplacement:smartReplace:",
-       "replaceSelectionWithNode:selectReplacement:smartReplace:",
-       "replaceSelectionWithText:selectReplacement:smartReplace:",
-       "replaceString:withString:ranges:options:inView:replacementRange:",
-       "replaceSubview:with:",
-       "replaceSubviewWith:",
-       "replaceTemporaryIDInObject:",
-       "replaceTextStorage:",
-       "replaceValueAtIndex:inPropertyWithKey:withValue:",
-       "replacementClassForClass:",
-       "replacementObjectForArchiver:",
-       "replacementObjectForCoder:",
-       "replacementObjectForKeyedArchiver:",
-       "replacementObjectForPortCoder:",
-       "replyAppleEventForSuspensionID:",
-       "replyEvent",
-       "replyToApplicationShouldTerminate:",
-       "replyWithException:",
-       "reportClientRedirectCancelled:",
-       "reportClientRedirectToURL:delay:fireDate:lockHistory:isJavaScriptFormAction:",
-       "reportDataToClient:",
-       "reportDidFinishToClient",
-       "reportError",
-       "reportException:",
-       "reportStreamError",
-       "repositionRolloverTrackingRectIfNecessary",
-       "representation",
-       "representationOfCoveredCharacters",
-       "representationOfImageRepsInArray:usingType:properties:",
-       "representationUsingType:properties:",
-       "representationWithImageProperties:withProperties:",
-       "representations",
-       "representedFilename",
-       "representedObject",
-       "request",
-       "requestHeaderFieldsWithCookies:",
-       "requestIsCacheEquivalent:toRequest:",
-       "requestStreamForTransmission",
-       "requestUserAttention:",
-       "requestWithURL:",
-       "requestWithURLCString:",
-       "requestedURLString",
-       "requiredFileType",
-       "requiredMinSize",
-       "requiredMinSizeFor:",
-       "requiredThickness",
-       "requiresDirectKeyValueCodingCall",
-       "reservedSpaceLength",
-       "reset",
-       "resetAdditionalClip",
-       "resetButtonDefaultLabel",
-       "resetCancelButtonCell",
-       "resetCursorRect:inView:",
-       "resetCursorRects",
-       "resetDateFormats",
-       "resetDisplayDisableCount",
-       "resetFlushDisableCount",
-       "resetMeasurements:forInterpolatedResolutionData:",
-       "resetMeasurements:forResolutionData:withWidth:height:onlyIntegerSizes:",
-       "resetQueryForChangedAttributes:",
-       "resetSearchButtonCell",
-       "resetState",
-       "resetToolbarToDefaultConfiguration:",
-       "resetTrackingRect",
-       "reshape",
-       "resignFirstResponder",
-       "resignKeyWindow",
-       "resignMainWindow",
-       "resize:",
-       "resizeDownCursor",
-       "resizeEdgeForEvent:",
-       "resizeFlags",
-       "resizeIncrements",
-       "resizeIndicatorRect",
-       "resizeLeftCursor",
-       "resizeLeftRightCursor",
-       "resizeRightCursor",
-       "resizeSubviewsWithOldSize:",
-       "resizeToScreenWithEvent:",
-       "resizeUpCursor",
-       "resizeUpDownCursor",
-       "resizeWithDelta:fromFrame:beginOperation:endOperation:",
-       "resizeWithEvent:",
-       "resizeWithOldSuperviewSize:",
-       "resizedColumn",
-       "resizingMask",
-       "resolve",
-       "resolveMarkerToPlaceholder:binding:",
-       "resolveNamespaceForName:",
-       "resolvePrefixForNamespaceURI:",
-       "resolvedKeyDictionary",
-       "resolvesAliases",
-       "resourceData",
-       "resourceDataUsingCache:",
-       "resourceLoadDelegate",
-       "resourceLoaderRunLoop",
-       "resourceNamed:",
-       "resourcePath",
-       "resourceSpecifier",
-       "respectStandardStyleKeyEquivalents",
-       "respondToChangedContents",
-       "respondToChangedSelection",
-       "respondsTo:",
-       "respondsToSelector:",
-       "response",
-       "restOfKeyPathIfContainedByValueForKeyPath:",
-       "restartNullEvents",
-       "restore",
-       "restoreAttributes:",
-       "restoreAttributesOfTextStorage:",
-       "restoreDefaults",
-       "restoreDocumentState",
-       "restoreGraphicsState",
-       "restoreParameter:from:",
-       "restorePortState:",
-       "restoreSavedSettings",
-       "restoreWindowOnDockDeath",
-       "restoreWindowOnDockReincarnation",
-       "resultAtIndex:",
-       "resultCount",
-       "resumeExecutionWithResult:",
-       "resumeInformation",
-       "resumeWithScriptCommandResult:",
-       "resumeWithSuspensionID:",
-       "retain",
-       "retainArguments",
-       "retainCaches",
-       "retainCount",
-       "retainIconForURL:",
-       "retainOrCopyIfNeeded",
-       "retainWireCount",
-       "retainedXmlInfoForRelationship:",
-       "retryAfterAuthenticationFailure:",
-       "retryAfterTLSFailure",
-       "retryWithRedirectedURLAndResultCode:",
-       "returnDisconnectedBindingsOfObject:",
-       "returnResult:exception:sequence:imports:",
-       "returnType",
-       "reverseObjectEnumerator",
-       "reverseTransformedValue:",
-       "reversedSortDescriptor",
-       "revert:",
-       "revertDocumentToSaved:",
-       "revertToContentsOfURL:ofType:error:",
-       "revertToSavedFromFile:ofType:",
-       "reviewUnsavedDocumentsWithAlertTitle:cancellable:delegate:didReviewAllSelector:contextInfo:",
-       "rightChild",
-       "rightExpression",
-       "rightIndentMarkerWithRulerView:location:",
-       "rightMargin",
-       "rightMouseDown:",
-       "rightMouseDragged:",
-       "rightMouseUp:",
-       "rightSplitItem",
-       "rightTabMarkerWithRulerView:location:",
-       "rightTruncateString:toWidth:withFont:",
-       "rightView",
-       "role",
-       "roleDescription",
-       "rollback",
-       "rollbackChanges",
-       "rollbackTransaction",
-       "rolloverXLocation",
-       "root",
-       "rootDocument",
-       "rootElement",
-       "rootEntity",
-       "rootNode",
-       "rootObject",
-       "rootObjectClasses",
-       "rootObjectStore",
-       "rootProxy",
-       "rotateByAngle:",
-       "rotateByDegrees:",
-       "rotated",
-       "rotation",
-       "roundingBehavior",
-       "roundingMode",
-       "row",
-       "rowAtPoint:",
-       "rowForItem:",
-       "rowForObjectID:",
-       "rowForObjectID:after:",
-       "rowForUpdate",
-       "rowHeight",
-       "rowSpan",
-       "rowsInRect:",
-       "ruler",
-       "rulerAccessoryViewForTextView:paragraphStyle:ruler:enabled:",
-       "rulerAttributesInRange:",
-       "rulerMarkersForTextView:paragraphStyle:ruler:",
-       "rulerView:didAddMarker:",
-       "rulerView:didMoveMarker:",
-       "rulerView:didRemoveMarker:",
-       "rulerView:handleMouseDown:",
-       "rulerView:shouldAddMarker:",
-       "rulerView:shouldMoveMarker:",
-       "rulerView:shouldRemoveMarker:",
-       "rulerView:willAddMarker:atLocation:",
-       "rulerView:willMoveMarker:toLocation:",
-       "rulerView:willRemoveMarker:",
-       "rulerView:willSetClientView:",
-       "rulerViewClass",
-       "rulersVisible",
-       "run",
-       "run:",
-       "runAsModalDialogWithChallenge:",
-       "runAsSheetOnWindow:withChallenge:",
-       "runCustomizationPalette:",
-       "runInitialization",
-       "runJavaScriptAlertPanelWithMessage:",
-       "runJavaScriptConfirmPanelWithMessage:",
-       "runJavaScriptTextInputPanelWithPrompt:defaultText:returningText:",
-       "runLoop",
-       "runLoopModesForAnimating",
-       "runModal",
-       "runModalForCarbonWindow:",
-       "runModalForDirectory:file:",
-       "runModalForDirectory:file:types:",
-       "runModalForDirectory:file:types:relativeToWindow:",
-       "runModalForSavePanel:",
-       "runModalForSavePanel:withFilepath:",
-       "runModalForTypes:",
-       "runModalForWindow:",
-       "runModalForWindow:relativeToWindow:",
-       "runModalOpenPanel:forTypes:",
-       "runModalPageLayoutWithPrintInfo:delegate:didRunSelector:contextInfo:",
-       "runModalPrintOperation:delegate:didRunSelector:contextInfo:",
-       "runModalSavePanel:withAccessoryView:",
-       "runModalSavePanelForSaveOperation:delegate:didSaveSelector:contextInfo:",
-       "runModalSession:",
-       "runModalWithPrintInfo:",
-       "runMode:beforeDate:",
-       "runOpenPanelForFileButtonWithResultListener:",
-       "runOperation",
-       "runOperationModalForWindow:delegate:didRunSelector:contextInfo:",
-       "runPageLayout:",
-       "runPoof",
-       "runPoofAtPoint:withSize:callbackInfo:",
-       "runToolbarCustomizationPalette:",
-       "runUntilDate:",
-       "sampleTextForTriplet:",
-       "samplerOptionForKey:",
-       "samplerOptions",
-       "samplerWithImage:",
-       "samplerWithImage:keysAndValues:",
-       "samplesPerPixel",
-       "sansSerifFontFamily",
-       "saturationComponent",
-       "save",
-       "save:",
-       "saveAllDocuments:",
-       "saveAndSetPortState",
-       "saveAndSetPortStateForUpdate:",
-       "saveChanges",
-       "saveChanges:",
-       "saveConfigurationUsingName:",
-       "saveDefaults",
-       "saveDocument:",
-       "saveDocumentAs:",
-       "saveDocumentState",
-       "saveDocumentState:",
-       "saveDocumentToPageCache",
-       "saveDocumentToPageCache:",
-       "saveDocumentToPath:",
-       "saveDocumentWithDelegate:didSaveSelector:contextInfo:",
-       "saveFavoritesToDefaults",
-       "saveFontCollection:",
-       "saveFrameUsingName:",
-       "saveGraphicsState",
-       "saveImageNamed:andShowWarnings:",
-       "saveList:",
-       "saveMetadata:",
-       "saveMorphedGlyphs:",
-       "saveNumVisibleRows",
-       "saveOptions",
-       "savePanel",
-       "saveParameter:to:",
-       "savePreviewHeightInDefaults:",
-       "saveRecipeChanges",
-       "saveResource",
-       "saveResourceWithCachedResponse:",
-       "saveRoot",
-       "saveToDocument:removeBackup:errorHandler:",
-       "saveToFile:saveOperation:delegate:didSaveSelector:contextInfo:",
-       "saveToPath:",
-       "saveToURL:error:",
-       "saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:",
-       "saveToURL:ofType:forSaveOperation:error:",
-       "saveWithGlyphOrigin:",
-       "scale",
-       "scaleBy:",
-       "scaleRegionOf:destRect:userInfo:",
-       "scaleTo::",
-       "scaleUnitSquareToSize:",
-       "scaleXBy:yBy:",
-       "scalesWhenResized",
-       "scanCharactersFromSet:intoString:",
-       "scanDecimal:",
-       "scanDouble:",
-       "scanFloat:",
-       "scanHexInt:",
-       "scanInt:",
-       "scanLocation",
-       "scanLongLong:",
-       "scanString:intoString:",
-       "scanUpToCharactersFromSet:intoString:",
-       "scanUpToString:intoString:",
-       "scannerWithString:",
-       "schedule",
-       "scheduleDelayedUpdate",
-       "scheduleInRunLoop:forMode:",
-       "scheduleShowRolloverWindow",
-       "scheduleUpdate",
-       "scheduledTimerWithTimeInterval:invocation:repeats:",
-       "scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:",
-       "scheme",
-       "scopeButtonAction:",
-       "screen",
-       "screenFont",
-       "screenFontWithRenderingMode:",
-       "screens",
-       "scriptCommand",
-       "scriptErrorNumber",
-       "scriptErrorString",
-       "scriptingBeginsWith:",
-       "scriptingContains:",
-       "scriptingEndsWith:",
-       "scriptingIsEqualTo:",
-       "scriptingIsGreaterThan:",
-       "scriptingIsGreaterThanOrEqualTo:",
-       "scriptingIsLessThan:",
-       "scriptingIsLessThanOrEqualTo:",
-       "scriptingProperties",
-       "scroll:",
-       "scrollBarColor",
-       "scrollCellToVisibleAtRow:column:",
-       "scrollClipView:toPoint:",
-       "scrollColumnToVisible:",
-       "scrollColumnsLeftBy:",
-       "scrollColumnsRightBy:",
-       "scrollDown",
-       "scrollItemAtIndexToTop:",
-       "scrollItemAtIndexToVisible:",
-       "scrollLineDown:",
-       "scrollLineUp:",
-       "scrollOverflowInDirection:granularity:",
-       "scrollOverflowWithScrollWheelEvent:",
-       "scrollPageDown:",
-       "scrollPageUp:",
-       "scrollPoint",
-       "scrollPoint:",
-       "scrollRangeToVisible:",
-       "scrollRect:by:",
-       "scrollRectToVisible:",
-       "scrollRectToVisible:inScrollView:animate:",
-       "scrollRowToVisible:",
-       "scrollToAnchor:",
-       "scrollToAnchorWithURL:",
-       "scrollToBeginningOfDocument:",
-       "scrollToEndOfDocument:",
-       "scrollToPoint:",
-       "scrollToSelected",
-       "scrollUp",
-       "scrollViaScroller:",
-       "scrollView",
-       "scrollViewDidTile",
-       "scrollWheel:",
-       "scrollerWidth",
-       "scrollerWidthForControlSize:",
-       "searchButtonCell",
-       "searchButtonRectForBounds:",
-       "searchFieldCellOrControlDidClearRecents:",
-       "searchFor:direction:caseSensitive:wrap:",
-       "searchForBrowsableDomains",
-       "searchForLabels:beforeElement:",
-       "searchMenuTemplate",
-       "searchScopeDisplayName",
-       "searchTextRectForBounds:",
-       "searchableIndexIntroduction",
-       "secondOfMinute",
-       "secondaryInvocation",
-       "secondarySelectedControlColor",
-       "secondsFromGMT",
-       "secondsFromGMTForDate:",
-       "seedPrimaryKeyInt:",
-       "seedPrimaryKeys",
-       "seekToFileOffset:",
-       "segmentCount",
-       "segmentWithIndex:parent:",
-       "segmentedCell",
-       "selectAll",
-       "selectAll:",
-       "selectAllInView:selectionOnly:",
-       "selectAllInView:selectionOnly:fontFamily:font:characterStyle:paragraphStyle:",
-       "selectCell:",
-       "selectCellAtRow:column:",
-       "selectColumn:byExtendingSelection:",
-       "selectColumnIndexes:byExtendingSelection:",
-       "selectDefaultRange",
-       "selectDraggedFileNode:",
-       "selectFarthestRangeForward:",
-       "selectItem:",
-       "selectItemAtIndex:",
-       "selectItemWithObjectValue:",
-       "selectItemWithTag:",
-       "selectItemWithTitle:",
-       "selectKeyViewFollowingView:",
-       "selectKeyViewPrecedingView:",
-       "selectNext:",
-       "selectNextKeyView:",
-       "selectNextRangeForward:",
-       "selectNextTabViewItem:",
-       "selectNode:",
-       "selectPrevious:",
-       "selectPreviousKeyView:",
-       "selectRow:byExtendingSelection:",
-       "selectRow:inColumn:",
-       "selectRowIndexes:byExtendingSelection:",
-       "selectRowsWithFetchRequest:",
-       "selectSegmentWithTag:",
-       "selectTabViewItem:",
-       "selectTabViewItemAtIndex:",
-       "selectText:",
-       "selectTextAtRow:column:",
-       "selectWithFrame:inView:editor:delegate:start:length:",
-       "selectWord:",
-       "selectableItemIdentifiers",
-       "selectableScopeLocationNodes",
-       "selectedAttributedString",
-       "selectedAttributes",
-       "selectedCell",
-       "selectedCellInColumn:",
-       "selectedCells",
-       "selectedColorSpace",
-       "selectedColumn",
-       "selectedColumnEnumerator",
-       "selectedControlColor",
-       "selectedControlTextColor",
-       "selectedDOMRange",
-       "selectedFontChangedTo:",
-       "selectedIndex",
-       "selectedIndexAndQuality:",
-       "selectedItem",
-       "selectedItemIdentifier",
-       "selectedKnobColor",
-       "selectedMenuItemColor",
-       "selectedMenuItemTextColor",
-       "selectedName",
-       "selectedNavNode",
-       "selectedNodes",
-       "selectedObjects",
-       "selectedRange",
-       "selectedRanges",
-       "selectedResolvedNodes",
-       "selectedRow",
-       "selectedRowEnumerator",
-       "selectedRowInColumn:",
-       "selectedRowIndexes",
-       "selectedScopeLocationNodes",
-       "selectedSegment",
-       "selectedString",
-       "selectedTabViewItem",
-       "selectedTextAttributes",
-       "selectedTextBackgroundColor",
-       "selectedTextColor",
-       "selectionAffinity",
-       "selectionColor",
-       "selectionGranularity",
-       "selectionImage",
-       "selectionIndexPaths",
-       "selectionIndexes",
-       "selectionRangeForProposedRange:granularity:",
-       "selectionRect",
-       "selectionShouldChangeInOutlineView:",
-       "selectionShouldChangeInTableView:",
-       "selectionStartHasStyle:",
-       "selectionState",
-       "selector",
-       "selectorForCommand:",
-       "selectsAllWhenSettingContent",
-       "selectsInsertedObjects",
-       "self",
-       "send",
-       "sendAction",
-       "sendAction:to:",
-       "sendAction:to:from:",
-       "sendActionOn:",
-       "sendActivateEvent:",
-       "sendBeforeDate:components:from:reserved:",
-       "sendBeforeDate:msgid:components:from:reserved:",
-       "sendBeforeTime:sendReplyPort:",
-       "sendBeforeTime:streamData:components:from:msgid:",
-       "sendBeforeTime:streamData:components:to:from:msgid:reserved:",
-       "sendCarbonProcessHICommandEvent:",
-       "sendCarbonUpdateHICommandStatusEvent:withMenuRef:andMenuItemIndex:",
-       "sendConsumedMouseUpIfNeeded",
-       "sendContextMenuEvent:",
-       "sendDoubleAction",
-       "sendEvent:",
-       "sendInvocation:",
-       "sendModifierEventWithKeyCode:character:",
-       "sendMouseUpActionForDisabledCell:atRow:column:",
-       "sendNotification",
-       "sendNullEvent",
-       "sendOpenEventFor:",
-       "sendPort",
-       "sendReleasedProxies",
-       "sendResizeEvent",
-       "sendResponseAvailableCallback",
-       "sendScrollEvent",
-       "sendSelectionChangedNotification",
-       "sendSuperEvent:",
-       "sendSynchronousRequest:returningResponse:error:",
-       "sendTimerEvent",
-       "sendUpdateEvent",
-       "sendWireCountForTarget:port:",
-       "sender",
-       "senderDidBecomeActive:",
-       "senderDidResignActive:",
-       "sendsActionOnEndEditing",
-       "sendsSearchStringImmediately",
-       "sendsWholeSearchString",
-       "separatesColumns",
-       "separatorColor",
-       "separatorItem",
-       "serialize:length:",
-       "serializeAlignedBytes:length:",
-       "serializeAlignedBytesLength:",
-       "serializeData:",
-       "serializeDataAt:ofObjCType:context:",
-       "serializeInt:",
-       "serializeInt:atIndex:",
-       "serializeList:",
-       "serializeListItemIn:at:",
-       "serializeObject:",
-       "serializeObjectAt:ofObjCType:intoData:",
-       "serializePListKeyIn:key:value:",
-       "serializePListValueIn:key:value:",
-       "serializePropertyList:",
-       "serializePropertyList:intoData:",
-       "serializeString:",
-       "serializeToData",
-       "serializedRepresentation",
-       "serifFontFamily",
-       "server",
-       "serviceError:error:",
-       "serviceListener",
-       "servicesInfoIdentifier:",
-       "servicesMenu",
-       "servicesMenuData:forUser:",
-       "servicesProvider",
-       "set",
-       "setAbsorbedCount:forIndex:",
-       "setAcceptsColorDrops:",
-       "setAcceptsGlyphInfo:",
-       "setAcceptsMouseMovedEvents:",
-       "setAccessoryView:",
-       "setAction:",
-       "setActionName:",
-       "setActivated:sender:",
-       "setActivationEventNumber:",
-       "setActiveColorSpace:",
-       "setActsLikeButton:",
-       "setAdditionalClip:",
-       "setAdditionalPatternPhase:",
-       "setAdvance:forIndex:",
-       "setAffectedStores:",
-       "setAfterEntityLookup:",
-       "setAlertStyle:",
-       "setAlignment:",
-       "setAlignment:range:",
-       "setAllDestinations:",
-       "setAllHTTPHeaderFields:",
-       "setAllHeaderFields:",
-       "setAllowedFileTypes:",
-       "setAllowsAnimatedImageLooping:",
-       "setAllowsAnimatedImages:",
-       "setAllowsBranchSelection:",
-       "setAllowsColumnReordering:",
-       "setAllowsColumnResizing:",
-       "setAllowsColumnSelection:",
-       "setAllowsEditingMultipleValuesSelection:",
-       "setAllowsEditingTextAttributes:",
-       "setAllowsEmptySelection:",
-       "setAllowsExpandingMultipleDirectories:",
-       "setAllowsFloats:",
-       "setAllowsIncrementalSearching:",
-       "setAllowsMixedState:",
-       "setAllowsMultipleSelection:",
-       "setAllowsOtherFileTypes:",
-       "setAllowsScrolling:",
-       "setAllowsTickMarkValuesOnly:",
-       "setAllowsToolTipsWhenApplicationIsInactive:",
-       "setAllowsUndo:",
-       "setAllowsUserCustomization:",
-       "setAlpha:",
-       "setAlphaValue:",
-       "setAltIncrementValue:",
-       "setAlternate:",
-       "setAlternateImage:",
-       "setAlternateMnemonicLocation:",
-       "setAlternateTitle:",
-       "setAlwaysPresentsApplicationModalAlerts:",
-       "setAlwaysUsesMultipleValuesMarker:",
-       "setAnimates:",
-       "setAnimationBlockingMode:",
-       "setAnimationDelay:",
-       "setAppleMenu:",
-       "setArgument:atIndex:",
-       "setArgumentBinding:",
-       "setArguments:",
-       "setArray:",
-       "setArrowPosition:",
-       "setArrowsPosition:",
-       "setAsMainCarbonMenuBar",
-       "setAspectRatio:",
-       "setAssociatedInputManager:",
-       "setAttachment:",
-       "setAttachmentCell:",
-       "setAttachmentSize:forGlyphRange:",
-       "setAttribute::",
-       "setAttributeKeys:andValues:",
-       "setAttributeSlot:withObject:",
-       "setAttributeType:",
-       "setAttributedAlternateTitle:",
-       "setAttributedString:",
-       "setAttributedStringForNil:",
-       "setAttributedStringForNotANumber:",
-       "setAttributedStringForZero:",
-       "setAttributedStringValue:",
-       "setAttributedTitle:",
-       "setAttributes:",
-       "setAttributes:Values:ValueSizes:Count:",
-       "setAttributes:range:",
-       "setAttributesInTextStorage:",
-       "setAutoAddExtensionToNextInput:",
-       "setAutodisplay:",
-       "setAutoenablesItems:",
-       "setAutohidesScrollers:",
-       "setAutorecalculatesKeyViewLoop:",
-       "setAutorepeat:",
-       "setAutoresizesAllColumnsToFit:",
-       "setAutoresizesSubviews:",
-       "setAutoresizingMask:",
-       "setAutosaveName:",
-       "setAutosaveTableColumns:",
-       "setAutosavedContentsFileURL:",
-       "setAutosaves:",
-       "setAutosavesConfiguration:",
-       "setAutoscroll:",
-       "setAutovalidates:",
-       "setAvoidableSpecifier:path:",
-       "setAvoidsEmptySelection:",
-       "setBackgroundColor:",
-       "setBackgroundLayoutEnabled:",
-       "setBaseAffineTransform:",
-       "setBaseSpecifier:",
-       "setBaseURL:",
-       "setBaseWritingDirection:",
-       "setBaseWritingDirection:range:",
-       "setBecomesKeyOnlyIfNeeded:",
-       "setBezelStyle:",
-       "setBezeled:",
-       "setBidiLevels:forGlyphRange:",
-       "setBinderSpecificFlag:atIndex:",
-       "setBinding:",
-       "setBitmap:rowBytes:bounds:format:",
-       "setBitsPerSample:",
-       "setBool:forKey:",
-       "setBoolParameterValue:to:",
-       "setBoolParameterValue:to:inResolutionData:",
-       "setBorderColor:",
-       "setBorderColor:forEdge:",
-       "setBorderType:",
-       "setBorderWidth:",
-       "setBordered:",
-       "setBottomCornerRounded:",
-       "setBottomMargin:",
-       "setBounds:",
-       "setBoundsOrigin:",
-       "setBoundsRect:forTextBlock:glyphRange:",
-       "setBoundsSize:",
-       "setBoxType:",
-       "setBrightness:",
-       "setBrowser:",
-       "setBulletCharacter:",
-       "setBundle:",
-       "setBundlePath:",
-       "setButtonBordered:",
-       "setButtonID:",
-       "setButtonType:",
-       "setCGCompositeOperation:inContext:",
-       "setCGCompositeOperationFromString:inContext:",
-       "setCGContext:",
-       "setCTM:",
-       "setCacheDepthMatchesImageDepth:",
-       "setCacheHint:",
-       "setCacheMode:",
-       "setCachePolicy:",
-       "setCachedChildren:",
-       "setCachedChildren:forObservedNode:",
-       "setCachedSQLiteStatement:",
-       "setCachedSeparately:",
-       "setCalculatesAllSizes:",
-       "setCalendar:",
-       "setCalendarFormat:",
-       "setCanChooseDirectories:",
-       "setCanChooseFiles:",
-       "setCanClickDisabledFiles:",
-       "setCanCreateDirectories:",
-       "setCanCycle:",
-       "setCanHide:",
-       "setCanSelectHiddenExtension:",
-       "setCancelButtonCell:",
-       "setCancellationDelegate:wasCancelledSelector:contextInfo:",
-       "setCaseSensitive:",
-       "setCell:",
-       "setCellAttribute:to:",
-       "setCellBackgroundColor:",
-       "setCellClass:",
-       "setCellPrototype:",
-       "setCellSize:",
-       "setCertificatePolicyOnStream",
-       "setCharacterEncoding:",
-       "setCharacterIndex:forGlyphAtIndex:",
-       "setCharacterIndex:layoutManager:",
-       "setCharactersToBeSkipped:",
-       "setChildSpecifier:",
-       "setChildren:",
-       "setChildrenKeyPath:",
-       "setClassDescription:",
-       "setClearsFilterPredicateOnInsertion:",
-       "setClient:",
-       "setClientView:",
-       "setClip",
-       "setClippedItems:",
-       "setCocoaSubVersion:",
-       "setCocoaVersion:",
-       "setCollapsesBorders:",
-       "setColor:",
-       "setColor:forAttribute:",
-       "setColor:forKey:",
-       "setColorList:",
-       "setColorSpaceName:",
-       "setColumnAutoresizingStyle:",
-       "setColumnResizingType:",
-       "setColumnsAutosaveName:",
-       "setColumnsToFetch:",
-       "setCommandDescription:",
-       "setCompareSelector:",
-       "setCompletes:",
-       "setCompletionDelay:",
-       "setCompression:factor:",
-       "setConditionallySetsEditable:",
-       "setConditionallySetsEnabled:",
-       "setConditionallySetsHidden:",
-       "setConfiguratioName:",
-       "setConfigurationUsingName:",
-       "setConstrainedFrameSize:",
-       "setContainerClassDescription:",
-       "setContainerIsObjectBeingTested:",
-       "setContainerIsRangeContainerObject:",
-       "setContainerSize:",
-       "setContainerSpecifier:",
-       "setContainingWindow:",
-       "setContent:",
-       "setContentMaxSize:",
-       "setContentMinSize:",
-       "setContentSize:",
-       "setContentView:",
-       "setContentViewMargins:",
-       "setContentsNoCopy:length:freeWhenDone:isUnicode:",
-       "setContextHelp:forObject:",
-       "setContextHelpModeActive:",
-       "setContextMenuRepresentation:",
-       "setContinuous:",
-       "setContinuousGrammarCheckingEnabled:",
-       "setContinuousSpellCheckingEnabled:",
-       "setContinuouslyUpdatesValue:",
-       "setControl:",
-       "setControlSize:",
-       "setControlTint:",
-       "setControlView:",
-       "setController:",
-       "setController:retainController:",
-       "setConversationRequest:",
-       "setCookies:forURL:mainDocumentURL:",
-       "setCookies:forURL:policyBaseURL:",
-       "setCookies:whilePrivateBrowsing:",
-       "setCopiesOnScroll:",
-       "setCornerView:",
-       "setCountKeyPath:",
-       "setCreatesSortDescriptor:",
-       "setCredential:forProtectionSpace:",
-       "setCriticalValue:",
-       "setCssText:",
-       "setCurrListName:",
-       "setCurrent:",
-       "setCurrentAppleEventAndReplyEventWithSuspensionID:",
-       "setCurrentBrowsingNodePath:",
-       "setCurrentConstructionContext:",
-       "setCurrentContext:",
-       "setCurrentDirectoryNode:",
-       "setCurrentEntity:",
-       "setCurrentFrame:",
-       "setCurrentImageNumber:",
-       "setCurrentInputManager:",
-       "setCurrentItem:",
-       "setCurrentOperation:",
-       "setCurrentPage:",
-       "setCurrentPluginView:",
-       "setCurrentProgress:",
-       "setCurrentVoiceIdentifier:",
-       "setCursiveFontFamily:",
-       "setCursorPositionToIndex:inParagraph:",
-       "setCustomizationSheetWidth:",
-       "setDBSnapshot:",
-       "setDTD:",
-       "setDTDKind:",
-       "setData:",
-       "setData:forType:",
-       "setDataCell:",
-       "setDataRetained:",
-       "setDataSource:",
-       "setDatabaseOperator:",
-       "setDatabaseUUID:",
-       "setDatabaseVersion:",
-       "setDateFormat:",
-       "setDatePickerElements:",
-       "setDatePickerMode:",
-       "setDatePickerStyle:",
-       "setDateStyle:",
-       "setDateValue:",
-       "setDebugDefault:",
-       "setDecimalSeparator:",
-       "setDefaultAttachmentScaling:",
-       "setDefaultBorderColor:",
-       "setDefaultButtonCell:",
-       "setDefaultCredential:forProtectionSpace:",
-       "setDefaultFixedFontSize:",
-       "setDefaultFlatness:",
-       "setDefaultFontSize:",
-       "setDefaultFormatterBehavior:",
-       "setDefaultLineCapStyle:",
-       "setDefaultLineJoinStyle:",
-       "setDefaultLineWidth:",
-       "setDefaultMenu:",
-       "setDefaultMiterLimit:",
-       "setDefaultParagraphStyle:",
-       "setDefaultPlaceholder:forBinding:onObjectClass:",
-       "setDefaultPlaceholder:forMarker:withBinding:",
-       "setDefaultTabInterval:",
-       "setDefaultTextColor:",
-       "setDefaultTextEncoding:",
-       "setDefaultType:",
-       "setDefaultWindingRule:",
-       "setDeferSync:",
-       "setDefersCallbacks:",
-       "setDefersLoading:",
-       "setDelegate:",
-       "setDelegate:withNotifyingTextView:",
-       "setDeletedObjects:",
-       "setDeletesObjectsOnRemove:",
-       "setDepthLimit:",
-       "setDescriptor:forKeyword:",
-       "setDestination:",
-       "setDestination:allowOverwrite:",
-       "setDestinationEntityExternalName:",
-       "setDestinationOrigin:travelTimeInSeconds:",
-       "setDestinations:forRelationship:",
-       "setDictionary:",
-       "setDirectParameter:",
-       "setDirectory:",
-       "setDisabled:",
-       "setDisabledWhenInactive:",
-       "setDiskCapacity:",
-       "setDisplayMode:",
-       "setDisplayPattern:",
-       "setDisplayedContainerNodes:",
-       "setDisplayedStringsArray:",
-       "setDisplayedTitle:",
-       "setDisplaysTokenWhileEditing:",
-       "setDisplaysWithFocusAttributes:",
-       "setDocument:",
-       "setDocumentAttributes:",
-       "setDocumentCursor:",
-       "setDocumentEdited:",
-       "setDocumentState:",
-       "setDocumentView:",
-       "setDoubleAction:",
-       "setDoubleValue:",
-       "setDragAndDropCharRanges:",
-       "setDragWindowImage:",
-       "setDraggingImage:at:",
-       "setDrawingAttributes:",
-       "setDrawingStyle:",
-       "setDrawnInSelectedRow:",
-       "setDrawsBackground:",
-       "setDrawsGrid:",
-       "setDrawsOutsideLineFragment:forGlyphAtIndex:",
-       "setDrawsOutsideLineFragment:forGlyphRange:",
-       "setDrawsTrackAsColorScaleType:",
-       "setDropItem:dropChildIndex:",
-       "setDropRow:dropOperation:",
-       "setDynamicDepthLimit:",
-       "setEchosBullets:",
-       "setEditable:",
-       "setEditableIfEnabled:",
-       "setEdited:",
-       "setEditedFlag:",
-       "setElementName:",
-       "setEmpty",
-       "setEnableSelectionHighlightDrawing:",
-       "setEnableTextHighlightDrawing:",
-       "setEnabled",
-       "setEnabled:",
-       "setEnabled:forSegment:",
-       "setEnabledFileTypes:",
-       "setEncoding:userChosen:",
-       "setEnd::",
-       "setEndSpecifier:",
-       "setEndSubelementIdentifier:",
-       "setEndSubelementIndex:",
-       "setEndWhitespace:",
-       "setEntities:",
-       "setEntities:forConfiguration:",
-       "setEntity:",
-       "setEntityName:",
-       "setEntryType:",
-       "setError:info:fatal:",
-       "setErrorExpectedType:",
-       "setErrorNumber:",
-       "setErrorOffendingObjectDescriptor:",
-       "setEvaluationErrorNumber:",
-       "setEventHandler:andSelector:forEventClass:andEventID:",
-       "setExpanded:",
-       "setExpandedView:",
-       "setExtensionHidden:",
-       "setExternalName:",
-       "setExternalPrecision:",
-       "setExternalScale:",
-       "setExternalType:",
-       "setExtraLineFragmentRect:usedRect:textContainer:",
-       "setFBENode:",
-       "setFantasyFontFamily:",
-       "setFauxFilePackageTypes:",
-       "setFetchPredicate:",
-       "setFetchRequestTemplate:forName:",
-       "setFidelity:",
-       "setFieldEditor:",
-       "setFileAttributes:",
-       "setFileListMode:",
-       "setFileListOrderedByFileProperty:",
-       "setFileListOrderedByFileProperty:ascending:",
-       "setFileListOrderedByFileProperty:ascending:caseSensitive:",
-       "setFileModificationDate:",
-       "setFileName:",
-       "setFileType:",
-       "setFileURL:",
-       "setFilename:",
-       "setFill",
-       "setFilter:",
-       "setFilterPredicate:",
-       "setFindString:writeToPasteboard:updateUI:",
-       "setFireDate:",
-       "setFirstLineHeadIndent:",
-       "setFixedFontFamily:",
-       "setFixedWidthFont",
-       "setFlatness:",
-       "setFlipped:",
-       "setFloat:forKey:",
-       "setFloatParameterValue:forResolution:to:",
-       "setFloatParameterValue:to:inResolutionData:",
-       "setFloatValue:",
-       "setFloatValue:knobProportion:",
-       "setFloatingPanel:",
-       "setFloatingPointFormat:left:right:",
-       "setFocusRingStyle:radius:color:",
-       "setFocusRingType:",
-       "setFocusStack:",
-       "setFocusedColorChipIndex:",
-       "setFont:",
-       "setFontDescriptorKey:",
-       "setFontFamily:",
-       "setFontMenu:",
-       "setFontPanel:",
-       "setFontSize:",
-       "setFontStyle:",
-       "setFontWeight:",
-       "setForegroundColor:",
-       "setForeignEntityKeySlot:unsigned:",
-       "setForeignKeySlot:int64:",
-       "setForeignKeys:",
-       "setFormat:",
-       "setFormatter:",
-       "setFormatterBehavior:",
-       "setFrame:",
-       "setFrame:display:",
-       "setFrame:display:animate:",
-       "setFrameAutosaveName:",
-       "setFrameFromContentFrame:",
-       "setFrameFromString:",
-       "setFrameLoadDelegate:",
-       "setFrameOrigin:",
-       "setFrameRotation:",
-       "setFrameSize:",
-       "setFrameTopLeftPoint:",
-       "setFrameUsingName:",
-       "setFullMetadata:",
-       "setGlyphGenerator:",
-       "setGlyphID:forIndex:",
-       "setGlyphRange:characterRange:",
-       "setGridColor:",
-       "setGridStyleMask:",
-       "setGroupIdentifier:",
-       "setGroupName:",
-       "setGroupingSeparator:",
-       "setHTTPBody:",
-       "setHTTPContentType:",
-       "setHTTPMethod:",
-       "setHTTPReferrer:",
-       "setHTTPUserAgent:",
-       "setHandle:",
-       "setHandlesContentAsCompoundValue:",
-       "setHardInvalidation:forGlyphRange:",
-       "setHasBorder:",
-       "setHasFocus:",
-       "setHasHorizontalRuler:",
-       "setHasHorizontalScroller:",
-       "setHasPageCache:",
-       "setHasShadow:",
-       "setHasThousandSeparators:",
-       "setHasUndoManager:",
-       "setHasVerticalScroller:",
-       "setHeadIndent:",
-       "setHeader",
-       "setHeaderCell:",
-       "setHeaderLevel:",
-       "setHeaderView:",
-       "setHeightTracksTextView:",
-       "setHelpAnchor:",
-       "setHidden:",
-       "setHiddenUntilMouseMoves:",
-       "setHidesEmptyCells:",
-       "setHidesOnDeactivate:",
-       "setHighlightMode:",
-       "setHighlighted:",
-       "setHighlightedItemIndex:",
-       "setHighlightedTableColumn:",
-       "setHighlightsBy:",
-       "setHintCapacity:",
-       "setHistoryAgeInDaysLimit:",
-       "setHistoryItemLimit:",
-       "setHistoryProvider:",
-       "setHorizontal:",
-       "setHorizontalAlignment:",
-       "setHorizontalEdgePadding:",
-       "setHorizontalLineScroll:",
-       "setHorizontalPageScroll:",
-       "setHorizontalPagination:",
-       "setHorizontalScrollingMode:",
-       "setHorizontallyCentered:",
-       "setHorizontallyResizable:",
-       "setHyphenationFactor:",
-       "setIcon:",
-       "setIconURL:",
-       "setIconURL:withType:",
-       "setIdentifier:",
-       "setIgnoredWords:inSpellDocumentWithTag:",
-       "setIgnoresAlpha:",
-       "setIgnoresMouseEvents:",
-       "setIgnoresViewTransformations:",
-       "setImage:",
-       "setImage:dirtyRect:",
-       "setImage:forSegment:",
-       "setImageAlignment:",
-       "setImageFrameStyle:",
-       "setImageInterpolation:",
-       "setImageNamed:forView:",
-       "setImagePosition:",
-       "setImageRep:",
-       "setImageRep:forImage:",
-       "setImageRep:forItemIdentifiers:",
-       "setImageScaling:",
-       "setImplementor:atIndex:",
-       "setImportsGraphics:",
-       "setInContext:",
-       "setInDrawingMachinery:",
-       "setInPalette:",
-       "setIncrement:",
-       "setIndentationLevel:",
-       "setIndentationPerLevel:",
-       "setIndeterminate:",
-       "setIndex:",
-       "setIndexReferenceModelObjectArray:clearAllModelObjectObserving:",
-       "setInformativeText:",
-       "setInitialFirstResponder:",
-       "setInitialGState:",
-       "setInitialValues:",
-       "setInnerHTML:",
-       "setInsertedObjects:",
-       "setInsertionClassDescription:",
-       "setInsertionGlyphIndex:",
-       "setInsertionPointColor:",
-       "setInsertsNullPlaceholder:",
-       "setIntAttribute:value:forGlyphAtIndex:",
-       "setIntParameterValue:to:",
-       "setIntParameterValue:to:inResolutionData:",
-       "setIntValue:",
-       "setInteger:forKey:",
-       "setIntercellSpacing:",
-       "setInterfaceStyle:",
-       "setIsActive:",
-       "setIsClosable:",
-       "setIsContainer:",
-       "setIsEmptyColumn:",
-       "setIsFileListOrderedAscending:",
-       "setIsFileListOrderedCaseSensitive:",
-       "setIsFileProperty:displayed:",
-       "setIsResizable:",
-       "setIsSelected:",
-       "setIsSelected:forView:",
-       "setIsTargetItem:",
-       "setIsUp:",
-       "setItemHeight:",
-       "setJavaEnabled:",
-       "setJavaScriptCanOpenWindowsAutomatically:",
-       "setJavaScriptEnabled:",
-       "setJobDisposition:",
-       "setJobStyleHint:",
-       "setJoinSemantic:",
-       "setJoins:",
-       "setKey:",
-       "setKeyBindingManager:",
-       "setKeyCell:",
-       "setKeyEquivalent:",
-       "setKeyEquivalentFont:",
-       "setKeyEquivalentModifierMask:",
-       "setKeyPath:",
-       "setKeyboardFocusRingNeedsDisplayIfNeededInRect:",
-       "setKeyboardFocusRingNeedsDisplayInRect:",
-       "setKeys:triggerChangeNotificationsForDependentKey:",
-       "setKnobThickness:",
-       "setLabel:",
-       "setLabel:forSegment:",
-       "setLanguage:",
-       "setLanguageModel:",
-       "setLastColumn:",
-       "setLastEditedStringValue:",
-       "setLaunchPath:",
-       "setLayoutAlgorithm:",
-       "setLayoutManager:",
-       "setLayoutRect:forTextBlock:glyphRange:",
-       "setLeadingOffset:",
-       "setLeaf:",
-       "setLeafKeyPath:",
-       "setLeftChild:",
-       "setLeftMargin:",
-       "setLength:",
-       "setLevel:",
-       "setLineBreakMode:",
-       "setLineCapStyle:",
-       "setLineDash:count:phase:",
-       "setLineFragmentPadding:",
-       "setLineFragmentRect:forGlyphRange:usedRect:",
-       "setLineFragmentRect:forGlyphRange:usedRect:baselineOffset:",
-       "setLineHeightMultiple:",
-       "setLineJoinStyle:",
-       "setLineScroll:",
-       "setLineSpacing:",
-       "setLineWidth:",
-       "setLinkInWindow:string:delegate:",
-       "setLinkTextAttributes:",
-       "setLoadType:",
-       "setLoaded:",
-       "setLoadsImagesAutomatically:",
-       "setLocale:",
-       "setLocaleListForDefaultFontFallback:",
-       "setLocalizationDictionary:",
-       "setLocalizesFormat:",
-       "setLocation:forStartOfGlyphRange:",
-       "setLocation:forStartOfGlyphRange:coalesceRuns:",
-       "setLocation:withAdvancements:forStartOfGlyphRange:",
-       "setLoopMode:",
-       "setMIMEToDescriptionDictionary:",
-       "setMIMEToExtensionsDictionary:",
-       "setMIMEType:",
-       "setMainDocumentURL:",
-       "setMainMenu:",
-       "setMaintainsBackForwardList:",
-       "setManagedObjectContext:",
-       "setMapData:",
-       "setMark:",
-       "setMarkDOMRange:",
-       "setMarkedText:selectedRange:",
-       "setMarkedTextAttributes:",
-       "setMarkedTextDOMRange:",
-       "setMarkerFormatInWindow:delegate:",
-       "setMarkerLocation:",
-       "setMarkers:",
-       "setMasterObjectRelationship:",
-       "setMasterObjectRelationship:refreshDetailContent:",
-       "setMatchedColor:",
-       "setMatrixClass:",
-       "setMax:",
-       "setMaxContentSize:",
-       "setMaxCount:",
-       "setMaxDate:",
-       "setMaxSize:",
-       "setMaxValue:",
-       "setMaxVisibleColumns:",
-       "setMaxWidth:",
-       "setMaximum:",
-       "setMaximumLength:",
-       "setMaximumLineHeight:",
-       "setMaximumRecents:",
-       "setMemoryCapacity:",
-       "setMenu:",
-       "setMenu:forSegment:",
-       "setMenuChangedMessagesEnabled:",
-       "setMenuFormRepresentation:",
-       "setMenuItem:",
-       "setMenuRepresentation:",
-       "setMenuView:",
-       "setMessage:",
-       "setMessageText:",
-       "setMinColumnWidth:",
-       "setMinContentSize:",
-       "setMinCount:",
-       "setMinDate:",
-       "setMinSize:",
-       "setMinValue:",
-       "setMinWidth:",
-       "setMinimum:",
-       "setMinimumFontSize:",
-       "setMinimumLineHeight:",
-       "setMinimumLogicalFontSize:",
-       "setMiterLimit:",
-       "setMixedStateImage:",
-       "setMnemonicLocation:",
-       "setMode:",
-       "setMonoCharacterSeparatorCharacters:usualPunctuation:",
-       "setMovableByWindowBackground:",
-       "setMovie:",
-       "setMsgid:",
-       "setMultipleCharacterSeparators:",
-       "setMutableAttributedString:",
-       "setName:",
-       "setNameFieldLabel:",
-       "setNames:",
-       "setNamespaces:",
-       "setNavNodeClass:",
-       "setNeedsDisplay:",
-       "setNeedsDisplayForItemAtIndex:",
-       "setNeedsDisplayForResponderChange",
-       "setNeedsDisplayIfSelectionNeedsToRedraw",
-       "setNeedsDisplayInRect:",
-       "setNeedsDisplayInRect:avoidAdditionalLayout:",
-       "setNeedsLayout:",
-       "setNeedsReapplyStyles",
-       "setNeedsResyncWithDefaultVoice:",
-       "setNeedsSizing:",
-       "setNeedsToApplyStyles:",
-       "setNegativeFormat:",
-       "setNewAvailableData:",
-       "setNextKeyView:",
-       "setNextResponder:",
-       "setNextState",
-       "setNextUndoManager:",
-       "setNilSymbol:",
-       "setNilValueForKey:",
-       "setNode:",
-       "setNode:displayState:",
-       "setNode:isDirectory:displayState:",
-       "setNotANumberSymbol:",
-       "setNotShownAttribute:forGlyphAtIndex:",
-       "setNotShownAttribute:forGlyphRange:",
-       "setNotationName:",
-       "setNotificationCenterSerializeRemoves:",
-       "setNumRowsToToggleVisible:",
-       "setNumberOfColumns:",
-       "setNumberOfMajorTickMarks:",
-       "setNumberOfTickMarks:",
-       "setNumberOfVisibleItems:",
-       "setObject:forKey:",
-       "setObject:forKey:inDomain:",
-       "setObjectBeingTested:",
-       "setObjectClass:",
-       "setObjectForCurrentRecognition:",
-       "setObjectID:",
-       "setObjectValue:",
-       "setObjectValuePreservingEntitiesForNode:string:",
-       "setObjectZone:",
-       "setObscured:",
-       "setObservationInfo:",
-       "setObservedObject:",
-       "setObservingBinder:",
-       "setObservingToModelObjectsRange:",
-       "setOffStateImage:",
-       "setOffset:",
-       "setOnStateImage:",
-       "setOneShot:",
-       "setOpaque:",
-       "setOptimizableColumn:",
-       "setOption:forKey:",
-       "setOptional:",
-       "setOptions:",
-       "setOptionsAttributes:string:",
-       "setOptionsDictionary:",
-       "setOrientation:",
-       "setOrigin:",
-       "setOriginOffset:",
-       "setOriginalURLString:",
-       "setOutline:",
-       "setOutlineTableColumn:",
-       "setOutputFormat:",
-       "setPackage:",
-       "setPage:",
-       "setPageOrder:",
-       "setPaletteLabel:",
-       "setPanel:",
-       "setPanelFont:isMultiple:",
-       "setPaperName:",
-       "setPaperSize:",
-       "setParagraphGlyphRange:separatorGlyphRange:",
-       "setParagraphSpacing:",
-       "setParagraphSpacingBefore:",
-       "setParagraphStyle:",
-       "setParamDescriptor:forKeyword:",
-       "setParameter:forOption:",
-       "setParent:",
-       "setParentCrayonRow:",
-       "setParentCrayonView:",
-       "setParentNode:",
-       "setParentStore:",
-       "setParentWindow:",
-       "setParsesCocoaElements:",
-       "setPath:",
-       "setPathSeparator:",
-       "setPausedActions:",
-       "setPerformsContentDecoding:",
-       "setPeriodicDelay:interval:",
-       "setPersistentDomain:forName:",
-       "setPersistentStoreCoordinator:",
-       "setPhase:",
-       "setPixelsHigh:",
-       "setPixelsWide:",
-       "setPlaceholder:forMarker:isDefault:",
-       "setPlaceholderAttributedString:",
-       "setPlaceholderString:",
-       "setPlaysEveryFrame:",
-       "setPlaysSelectionOnly:",
-       "setPlugInsEnabled:",
-       "setPlugin:",
-       "setPluginDescription:",
-       "setPluginPointer:",
-       "setPluginsEnabled:",
-       "setPolicyDelegate:",
-       "setPoolCountHighWaterMark:",
-       "setPoolCountHighWaterResolution:",
-       "setPopulatingMenu:",
-       "setPositiveFormat:",
-       "setPostsBoundsChangedNotifications:",
-       "setPostsFrameChangedNotifications:",
-       "setPredicate:",
-       "setPredicateName:",
-       "setPredicateOperator:",
-       "setPredicateString:",
-       "setPreferences:",
-       "setPreferredEdge:",
-       "setPreferredFilename:",
-       "setPreservesContentDuringLiveResize:",
-       "setPreservesSelection:",
-       "setPreviewNode:",
-       "setPreviousItem:",
-       "setPrimaryKeyGeneration:",
-       "setPrimaryKeys:",
-       "setPrimitiveValue:forKey:",
-       "setPrintInfo:",
-       "setPrintPanel:",
-       "setPrinter:",
-       "setPriority:forFlavor:",
-       "setPrompt:",
-       "setPropagatesDeletesAtEndOfEvent:",
-       "setProperties:",
-       "setProperty:",
-       "setProperty:::",
-       "setProperty:forKey:inRequest:",
-       "setProperty:withValue:",
-       "setPropertyList:forType:",
-       "setPropertyMappings:",
-       "setProps:forIndex:",
-       "setProtocolForProxy:",
-       "setPrototype:",
-       "setProvisionalDataSource:",
-       "setProvisionalItem:",
-       "setProxyPropertiesForURL:onStream:",
-       "setPublicID:",
-       "setPullsDown:",
-       "setQueryNode:",
-       "setQuoteBinding:",
-       "setQuotingWithSingleQuote:double:",
-       "setROISelector:",
-       "setRaisesForNotApplicableKeys:",
-       "setRangeContainerClassDescription:",
-       "setRanges:",
-       "setRate:",
-       "setReadLimit:",
-       "setReadOnly:",
-       "setRealDelegate:",
-       "setReceiversSpecifier:",
-       "setRecentSearches:",
-       "setRecentsAutosaveName:",
-       "setRefusesFirstResponder:",
-       "setRefusesToBeShown:",
-       "setRegistryClass:",
-       "setRegistryString:",
-       "setRelatedIDs:forKey:options:",
-       "setRelativePosition:",
-       "setReleasedWhenClosed:",
-       "setReleasesAfterPoofing:",
-       "setRememberedSnapToIndex:",
-       "setRemovable:",
-       "setRenderPart:",
-       "setReplyTimeout:",
-       "setRepresentedFilename:",
-       "setRepresentedObject:",
-       "setRequestError:",
-       "setRequestTimeout:",
-       "setRequestURL:",
-       "setRequiredFileType:",
-       "setRequiresDirectKeyValueCodingCall:partialControllerKey:partialObjectKey:",
-       "setReservedThicknessForAccessoryView:",
-       "setReservedThicknessForMarkers:",
-       "setResizable",
-       "setResizeIncrements:",
-       "setResizingMask:",
-       "setResolvesAliases:",
-       "setResourceLoadDelegate:",
-       "setResourceLocator:",
-       "setResponseHeader:",
-       "setResponseHeaderUsingHTTPResponse:",
-       "setResponseURL:",
-       "setReturnValue:",
-       "setRichText:",
-       "setRightChild:",
-       "setRightMargin:",
-       "setRoot:",
-       "setRootElement:",
-       "setRootNode:",
-       "setRootObject:",
-       "setRootObjectStore:",
-       "setRootPath:",
-       "setRoundingBehavior:",
-       "setRoundingMode:",
-       "setRowForUpdate:",
-       "setRowHeight:",
-       "setRulerVisible:",
-       "setRulersVisible:",
-       "setRunLoop:",
-       "setSQLString:",
-       "setSRRecognitionSystem:",
-       "setSRRecognizer:",
-       "setSamplerOption:forKey:",
-       "setSamplerOptionsFromDictionary:",
-       "setSansSerifFontFamily:",
-       "setSaveWeighting:",
-       "setScalesWhenResized:",
-       "setScanLocation:",
-       "setScopeLocationNodes:",
-       "setScriptCommand:",
-       "setScriptErrorNumber:",
-       "setScriptErrorString:",
-       "setScriptingProperties:",
-       "setScrollBarsSuppressed:repaintOnUnsuppress:",
-       "setScrollPoint:",
-       "setScrollView:",
-       "setScrollable:",
-       "setScrollbarsVisible:",
-       "setScrollingMode:",
-       "setSearchButtonCell:",
-       "setSearchMenuTemplate:",
-       "setSearchScopeDisplayName:",
-       "setSegmentCount:",
-       "setSelectable:",
-       "setSelected:forSegment:",
-       "setSelectedAttributes:isMultiple:",
-       "setSelectedDOMRange:affinity:",
-       "setSelectedFont:isMultiple:",
-       "setSelectedIndexPaths:",
-       "setSelectedItemIdentifier:",
-       "setSelectedRange:",
-       "setSelectedRange:affinity:stillSelecting:",
-       "setSelectedRanges:",
-       "setSelectedRanges:affinity:stillSelecting:",
-       "setSelectedScopeLocationNodes:",
-       "setSelectedSegment:",
-       "setSelectedTextAttributes:",
-       "setSelectionByRect:",
-       "setSelectionFrom:to:anchor:highlight:",
-       "setSelectionFromDroppedNode:selectionHelper:",
-       "setSelectionFromNone",
-       "setSelectionFromPasteboard:selectionHelper:",
-       "setSelectionGranularity:",
-       "setSelectionIndex:",
-       "setSelectionIndexPaths:",
-       "setSelectionIndexes:",
-       "setSelectionToDragCaret",
-       "setSelector:",
-       "setSelectsAllWhenSettingContent:",
-       "setSelectsInsertedObjects:",
-       "setSendsActionOnEndEditing:",
-       "setSendsWholeSearchString:",
-       "setSerifFontFamily:",
-       "setServicesMenu:",
-       "setServicesProvider:",
-       "setSet:",
-       "setShadowBlurRadius:",
-       "setShadowColor:",
-       "setShadowOffset:",
-       "setShadowState:",
-       "setShouldAntialias:",
-       "setShouldCloseDocument:",
-       "setShouldCreateRenderers:",
-       "setShouldCreateUI:",
-       "setShouldPrintBackgrounds:",
-       "setShouldPrintExceptions:",
-       "setShouldResolveExternalEntities:",
-       "setShowPanels:",
-       "setShownAboveComboBox:",
-       "setShowsBorderOnlyWhileMouseInside:",
-       "setShowsControlCharacters:",
-       "setShowsFirstResponder:",
-       "setShowsGetInfoButton:",
-       "setShowsHelp:",
-       "setShowsHiddenFiles:",
-       "setShowsInvisibleCharacters:",
-       "setShowsLogonButton:",
-       "setShowsPreviews:",
-       "setShowsPrintPanel:",
-       "setShowsProgressPanel:",
-       "setShowsResizeIndicator:",
-       "setShowsRollover:",
-       "setShowsStateBy:",
-       "setSimpleCommandsArray:",
-       "setSimpleQueryString:",
-       "setSingleTableEntity:",
-       "setSize:",
-       "setSizeLimit:",
-       "setSizeMode:",
-       "setSliderType:",
-       "setSmartInsertDeleteEnabled:",
-       "setSortDescriptorPrototype:",
-       "setSortDescriptors:",
-       "setSound:",
-       "setSource:",
-       "setSpacing:inWindow:delegate:",
-       "setSpeakingSpeechFeedbackServices:",
-       "setSpeakingString:",
-       "setSpeechChannelWithVoiceCreator:voiceID:",
-       "setSpeechChannelWithVoiceIdentifier:",
-       "setSpeechFeedbackServicesTimer:",
-       "setSpeechFinishedSuccessfully:",
-       "setSpoolPath:",
-       "setStandalone:",
-       "setStandardFontFamily:",
-       "setStandardInput:",
-       "setStandardOutput:",
-       "setStart::",
-       "setStartSpecifier:",
-       "setStartSubelementIdentifier:",
-       "setStartSubelementIndex:",
-       "setState:",
-       "setStateToSelected",
-       "setStateToUnselected",
-       "setStatusBar:",
-       "setStatusBarVisible:",
-       "setStatusCode:",
-       "setStatusMenu:",
-       "setStatusText:",
-       "setStoreMetadata:",
-       "setString:",
-       "setString:forType:",
-       "setStringIndex:forIndex:",
-       "setStringParameterValue:to:",
-       "setStringValue:",
-       "setStringValue:resolvingEntities:",
-       "setStroke",
-       "setSubentities:",
-       "setSubentityColumn:",
-       "setSubentityID:",
-       "setSubmenu:",
-       "setSubmenu:forItem:",
-       "setSubmenuRepresentedObjectsAreStale",
-       "setSuperentity:",
-       "setSupermenu:",
-       "setSuppressLayout:",
-       "setSuspended:",
-       "setSynthesizerIsRetained:",
-       "setSystemCharacterProperties:",
-       "setSystemID:",
-       "setTXTRecordData:",
-       "setTabKeyTraversesCells:",
-       "setTabStops:",
-       "setTableColumn:",
-       "setTableView:",
-       "setTag:",
-       "setTag:forSegment:",
-       "setTailIndent:",
-       "setTakesTitleFromPreviousColumn:",
-       "setTarget:",
-       "setTearOffMenuRepresentation:",
-       "setTemporaryID:",
-       "setTest:",
-       "setTestedObjectClassDescription:",
-       "setText:",
-       "setTextAlign:",
-       "setTextAttributesForNegativeValues:",
-       "setTextAttributesForNil:",
-       "setTextAttributesForNotANumber:",
-       "setTextAttributesForPositiveValues:",
-       "setTextAttributesForZero:",
-       "setTextBlocks:",
-       "setTextColor:",
-       "setTextColor:whenObjectValueIsUsed:",
-       "setTextContainer:",
-       "setTextContainer:forGlyphRange:",
-       "setTextDecoration:",
-       "setTextLists:",
-       "setTextShadow:",
-       "setTextSizeMultiplier:",
-       "setTextStorage:",
-       "setTextView:",
-       "setThousandSeparator:",
-       "setTickMarkPosition:",
-       "setTighteningFactorForTruncation:",
-       "setTimeInterval:",
-       "setTimeIntervalSince1970:",
-       "setTimeStyle:",
-       "setTimeZone:",
-       "setTimeoutInterval:",
-       "setTimer",
-       "setTimestampToNow",
-       "setTitle:",
-       "setTitle:andDefeatWrap:",
-       "setTitle:andMessage:",
-       "setTitle:ofColumn:",
-       "setTitleAlignment:",
-       "setTitleBaseWritingDirection:",
-       "setTitleCell:",
-       "setTitleColor:",
-       "setTitleFont:",
-       "setTitleNoCopy:",
-       "setTitlePosition:",
-       "setTitleWidth:",
-       "setTitleWithMnemonic:",
-       "setTitled:",
-       "setTokenStyle:",
-       "setTokenizingCharacterSet:",
-       "setToolTip:",
-       "setToolTip:forCell:",
-       "setToolTip:forSegment:",
-       "setToolTip:forView:cell:",
-       "setToolTipForView:rect:displayDelegate:displayInfo:",
-       "setToolTipForView:rect:owner:userData:",
-       "setToolTipString:",
-       "setToolbar:",
-       "setToolbarsVisible:",
-       "setTopLevelObject:",
-       "setTopMargin:",
-       "setTrackingMode:",
-       "setTrailingOffset:",
-       "setTransformStruct:",
-       "setTransparent:",
-       "setTransparentBackground:",
-       "setTreatsDirectoryAliasesAsDirectories:",
-       "setTreatsFilePackagesAsDirectories:",
-       "setType:",
-       "setTypes:onPasteboard:",
-       "setTypesetter:",
-       "setTypesetterBehavior:",
-       "setTypingAttributes:",
-       "setTypingStyle:",
-       "setURI:",
-       "setURL:",
-       "setURLString:",
-       "setUndoActionName:",
-       "setUndoManager:",
-       "setUniqueID:",
-       "setUnquotedStringCharacters:lowerCaseLetters:upperCaseLetters:digits:",
-       "setUnquotedStringStartCharacters:lowerCaseLetters:upperCaseLetters:digits:",
-       "setUpFieldEditorAttributes:",
-       "setUpForChallenge:",
-       "setUpGState",
-       "setUpPrintOperationDefaultValues",
-       "setUpSourceForData:",
-       "setUpdatedObjects:",
-       "setUseSSLOnly:forKey:",
-       "setUserColumnResizingAutoresizesWindow:",
-       "setUserInfo:",
-       "setUserStyleSheetEnabled:",
-       "setUserStyleSheetLocation:",
-       "setUsesDataSource:",
-       "setUsesFeedbackWindow:",
-       "setUsesFontLeading:",
-       "setUsesFontPanel:",
-       "setUsesGroupingSeparator:",
-       "setUsesItemFromMenu:",
-       "setUsesRuler:",
-       "setUsesScreenFonts:",
-       "setUsesThreadedAnimation:",
-       "setUsesUserKeyEquivalents:",
-       "setUsingDefaultVoice:",
-       "setValidateSize:",
-       "setValidatesImmediately:",
-       "setValue:",
-       "setValue:forBinding:atIndex:error:",
-       "setValue:forBinding:atIndexPath:error:",
-       "setValue:forBinding:error:",
-       "setValue:forHTTPHeaderField:",
-       "setValue:forKey:",
-       "setValue:forKeyPath:",
-       "setValue:forUndefinedKey:",
-       "setValue:inObject:",
-       "setValue:type:forDimension:",
-       "setValueTransformer:",
-       "setValueTransformer:forName:",
-       "setValueTransformerName:",
-       "setValueWraps:",
-       "setValues:forParameter:",
-       "setValuesForKeysWithDictionary:",
-       "setVersion:",
-       "setVertical:",
-       "setVerticalAlign:",
-       "setVerticalAlignment:",
-       "setVerticalLineScroll:",
-       "setVerticalPageScroll:",
-       "setVerticalPagination:",
-       "setVerticalScrollingMode:",
-       "setVerticallyCentered:",
-       "setVerticallyResizable:",
-       "setView:",
-       "setViewAnimations:",
-       "setViewKind:",
-       "setViewOfPickerIsLoaded:",
-       "setViewScale:",
-       "setViewSize:",
-       "setViewsNeedDisplay:",
-       "setVisibilityPriority:",
-       "setVisible:",
-       "setVisualFrame:",
-       "setVoice:",
-       "setVolatileDomain:forName:",
-       "setVolume:",
-       "setWantsNotificationForMarkedText:",
-       "setWarningValue:",
-       "setWebFrameView:",
-       "setWebView:",
-       "setWhitespace:",
-       "setWidget:",
-       "setWidth:",
-       "setWidth:forSegment:",
-       "setWidth:ofColumn:",
-       "setWidth:type:forLayer:",
-       "setWidth:type:forLayer:edge:",
-       "setWidthTracksTextView:",
-       "setWillLoadImagesAutomatically:",
-       "setWindingRule:",
-       "setWindow:",
-       "setWindowContentRect:",
-       "setWindowController:",
-       "setWindowFrame:",
-       "setWindowFrameAutosaveName:",
-       "setWindowFrameForAttachingToRect:onScreen:preferredEdge:popUpSelectedItem:",
-       "setWindowIfNecessary",
-       "setWindowIsResizable:",
-       "setWindowsMenu:",
-       "setWindowsNeedUpdate:",
-       "setWithArray:",
-       "setWithCapacity:",
-       "setWithObjects:",
-       "setWithSet:",
-       "setWordWrap:",
-       "setWorksWhenModal:",
-       "setWraps:",
-       "setZeroSymbol:",
-       "settings",
-       "setupAttributes",
-       "setupCarbonMenuBar",
-       "setupForNoMenuBar",
-       "setupGuessesBrowser",
-       "setupLoadedNib",
-       "shadeColorWithDistance:towardsColor:",
-       "shadowBlurRadius",
-       "shadowColor",
-       "shadowOffset",
-       "shadowState",
-       "shadowWithLevel:",
-       "shapeWindow",
-       "shapeWithCGSRegion:",
-       "shapeWithRect:",
-       "sharedAEDescriptorTranslator",
-       "sharedAdapter",
-       "sharedAppleEventManager",
-       "sharedApplication",
-       "sharedBridge",
-       "sharedCoercionHandler",
-       "sharedColorPanel",
-       "sharedColorPanelExists",
-       "sharedController",
-       "sharedCredentialStorage",
-       "sharedDocumentController",
-       "sharedDragManager",
-       "sharedEditingDelegate",
-       "sharedFactory",
-       "sharedFileInfoCache",
-       "sharedFocusState",
-       "sharedFontManager",
-       "sharedFontOptions",
-       "sharedFontPanel",
-       "sharedFontPanelExists",
-       "sharedFrameLoadDelegate",
-       "sharedGenerator",
-       "sharedGlyphGenerator",
-       "sharedHTTPAuthenticator",
-       "sharedHTTPCookieStorage",
-       "sharedHandler",
-       "sharedHeartBeat",
-       "sharedHelpManager",
-       "sharedIconDatabase",
-       "sharedInfoPanel",
-       "sharedInstance",
-       "sharedKeyBindingManager",
-       "sharedMagnifier",
-       "sharedMappings",
-       "sharedNetworkSettings",
-       "sharedPolicyDelegate",
-       "sharedPrintInfo",
-       "sharedRegistry",
-       "sharedResourceLoadDelegate",
-       "sharedScriptExecutionContext",
-       "sharedScriptSuiteRegistry",
-       "sharedScriptingAppleEventHandler",
-       "sharedServiceMaster",
-       "sharedSpellChecker",
-       "sharedSpellCheckerExists",
-       "sharedSystemTypesetterForBehavior:",
-       "sharedTableOptions",
-       "sharedTextFinder",
-       "sharedTextRulerOptions",
-       "sharedToolTipManager",
-       "sharedToolTipStringDrawingLayoutManager",
-       "sharedTracer",
-       "sharedTypesetter",
-       "sharedTypographyPanel",
-       "sharedUIDelegate",
-       "sharedURLCache",
-       "sharedUserDefaultsController",
-       "sharedWorkspace",
-       "sheetDidEnd:returnCode:contextInfo:",
-       "shiftIndexesStartingAtIndex:by:",
-       "shiftModifySelection:",
-       "shortTimeFormat",
-       "shortValue",
-       "shortVersion",
-       "shouldAllowUserColumnResizing",
-       "shouldAlwaysUpdateDisplayValue",
-       "shouldAntialias",
-       "shouldBeTreatedAsInkEvent:",
-       "shouldBecomeAETEPropertyDeclaration",
-       "shouldBeginEditing:",
-       "shouldBreakLineByHyphenatingBeforeCharacterAtIndex:",
-       "shouldBreakLineByWordBeforeCharacterAtIndex:",
-       "shouldBufferTextDrawing",
-       "shouldCascadeWindows",
-       "shouldChangePrintInfo:",
-       "shouldChangeTextInRange:replacementString:",
-       "shouldChangeTextInRanges:replacementStrings:",
-       "shouldCloseDocument",
-       "shouldCloseWindowController:",
-       "shouldCloseWindowController:delegate:shouldCloseSelector:contextInfo:",
-       "shouldCollapseAutoExpandedItemsForDeposited:",
-       "shouldCreateRenderers",
-       "shouldCreateUI",
-       "shouldDelayWindowOrderingForEvent:",
-       "shouldDrawColor",
-       "shouldDrawInsertionPoint",
-       "shouldEdit:inRect:ofView:",
-       "shouldEndEditing:",
-       "shouldIgnoreAction:",
-       "shouldPersist",
-       "shouldPrintBackgrounds",
-       "shouldPrintExceptions",
-       "shouldPropagateDeleteForObject:inEditingContext:forRelationshipKey:",
-       "shouldProvideSortDescriptor:optionsAdvertisingOnly:",
-       "shouldRefresh",
-       "shouldRunSavePanelWithAccessoryView",
-       "shouldShowPreviewColumn:",
-       "shouldSubstituteCustomClass",
-       "shouldSuppressNotificationFromObject:keyPath:",
-       "shouldUseEnabledTextColor",
-       "shouldUseInvalidationForObject:",
-       "showAttachmentCell:atPoint:",
-       "showAttachmentCell:inRect:characterIndex:",
-       "showCMYKView:",
-       "showContextHelpForObject:locationHint:",
-       "showController:adjustingSize:",
-       "showDeminiaturizedWindow",
-       "showFeaturesPanel:",
-       "showGotoWithInitialFilename:",
-       "showGreyScaleView:",
-       "showGuessPanel:",
-       "showHSBView:",
-       "showHelp:",
-       "showInfoPanel:",
-       "showModalPreferencesPanelForOwner:",
-       "showNode:inDirectory:selectIfEnabled:",
-       "showNodeInCurrentDirectoryWithDisplayNamePrefix:selectIfEnabled:",
-       "showNodeInCurrentDirectoryWithFilename:selectIfEnabled:",
-       "showNodeInDirectory:withDisplayNamePrefix:selectIfEnabled:caseSensitiveCompare:",
-       "showPackedGlyphs:length:glyphRange:atPoint:font:color:printingAdjustment:",
-       "showPanel:andNotify:with:",
-       "showPopup",
-       "showPreferencesPanelForOwner:",
-       "showPrimarySelection",
-       "showRGBView:",
-       "showRelativeToView:",
-       "showRolloverWindow",
-       "showToolbar:",
-       "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",
-       "sidebarVolumesNode",
-       "signal",
-       "signature",
-       "signatureWithObjCTypes:",
-       "signedPublicKeyAndChallengeStringWithStrengthIndex:challenge:pageURL:",
-       "significantText",
-       "simpleCommandsArray",
-       "simpleQueryString",
-       "singleLineTypesetter",
-       "size",
-       "sizeCreditsView",
-       "sizeForDisplayingAttributedString:",
-       "sizeForKey:inTable:",
-       "sizeForMagnification:",
-       "sizeHeightToFit",
-       "sizeLastColumnToFit",
-       "sizeLimit",
-       "sizeMode",
-       "sizeOfLabel:",
-       "sizeOfString:",
-       "sizeOfTitlebarButtons",
-       "sizeOfTitlebarButtons:",
-       "sizeOfTitlebarToolbarButton",
-       "sizeToCells",
-       "sizeToFit",
-       "sizeToFitAndAdjustWindowHeight",
-       "sizeToFitWidth",
-       "sizeValue",
-       "sizeWhenSizedToFit",
-       "sizeWidthToFit",
-       "sizeWithAttributes:",
-       "sizeWithBehavior:usesFontLeading:baselineDelta:",
-       "sizeWithColumns:rows:",
-       "skipDescendents",
-       "sleepUntilDate:",
-       "slide:",
-       "slideDraggedImageTo:",
-       "slideImage:from:to:",
-       "sliderType",
-       "slot",
-       "slotForKey:",
-       "smallSystemFontSize",
-       "smallestEncoding",
-       "smartDeleteRangeForProposedRange:",
-       "smartInsertAfterStringForString:replacingRange:",
-       "smartInsertBeforeStringForString:replacingRange:",
-       "smartInsertDeleteEnabled",
-       "smartInsertForString:replacingRange:beforeString:afterString:",
-       "smemapROI:forRect:",
-       "snapshotForSourceGlobalID:relationshipName:after:",
-       "snapshots",
-       "socketType",
-       "sortDescriptorPrototype",
-       "sortDescriptors",
-       "sortIndicatorRectForBounds:",
-       "sortUsingDescriptors:",
-       "sortUsingFunction:context:",
-       "sortUsingSelector:",
-       "sortedArrayUsingDescriptors:",
-       "sortedArrayUsingFunction:context:",
-       "sortedArrayUsingFunction:context:hint:",
-       "sortedArrayUsingSelector:",
-       "sortedClassDescriptions:",
-       "sortsChildrenEfficiently",
-       "sound",
-       "sound:didFinishPlaying:",
-       "soundNamed:",
-       "soundUnfilteredFileTypes",
-       "source",
-       "sourceAttributeName",
-       "sourceEntity",
-       "sourceFrame",
-       "sourceKey",
-       "sourceNode",
-       "spaceForScrollbarAndScrollViewBorder",
-       "speakString:",
-       "speakingString",
-       "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",
-       "spherePullROI:forRect:",
-       "splitCell:range:",
-       "splitCells",
-       "splitView:canCollapseSubview:",
-       "splitView:constrainMaxCoordinate:ofSubviewAt:",
-       "splitView:constrainMinCoordinate:maxCoordinate:ofSubviewAt:",
-       "splitView:constrainMinCoordinate:ofSubviewAt:",
-       "splitView:constrainSplitPosition:ofSubviewAt:",
-       "splitView:resizeSubviewsWithOldSize:",
-       "splitViewDidTrackOrResize:",
-       "splitViewDoubleClick:",
-       "splitViewWillTrackOrResize:",
-       "splitterWithIndex:parent:",
-       "spoolPath",
-       "spotlight:",
-       "spotlightColor",
-       "spotlightEdgeColor",
-       "sqlCore",
-       "sqlStatement",
-       "sqlString",
-       "sqlType",
-       "sqlTypeForExpressionConstantValue:",
-       "srRecognitionSystem",
-       "srRecognizer",
-       "src",
-       "stalenessInterval",
-       "standardFontFamily",
-       "standardPreferences",
-       "standardUserDefaults",
-       "standardWindowButton:",
-       "standardWindowButton:forStyleMask:",
-       "standardizedPath",
-       "standardizedURL",
-       "standardizedURLPath",
-       "start",
-       "start:",
-       "startAllPlugins",
-       "startAnimation:",
-       "startArchiving:",
-       "startAuthentication:window:",
-       "startCoalesceTextDrawing",
-       "startContainer",
-       "startDraggingImage:at:operation:event:sourceIsDHTML:DHTMLWroteData:",
-       "startInputStream:closeOnEnd:",
-       "startLoading",
-       "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:",
-       "startProgressiveLoad",
-       "startQuery",
-       "startRectForSheet:",
-       "startSpeaking:",
-       "startSpecifier",
-       "startStreamResponseURL:expectedContentLength:lastModifiedDate:MIMEType:",
-       "startStreamWithResponse:",
-       "startSubelementIdentifier",
-       "startSubelementIndex",
-       "startTextTimer",
-       "startTimer:userInfo:",
-       "startTimerForSpeaking",
-       "startTrackingAt:inView:",
-       "startTrackingWithEvent:inView:withDelegate:",
-       "startingColumn",
-       "startingRow",
-       "stashSize",
-       "state",
-       "stateImageOffset",
-       "stateImageRectForBounds:",
-       "stateImageWidth",
-       "statementClass",
-       "statistics",
-       "status",
-       "status:",
-       "statusBar",
-       "statusCode",
-       "statusMenu",
-       "stepKey:elements:number:state:",
-       "stepTowardsDestinationAtleastAsFarAs:",
-       "stop",
-       "stop:",
-       "stopAllPlugins",
-       "stopAllTimersForSpeaking",
-       "stopAnimation",
-       "stopAnimation:",
-       "stopAnimationsInView:",
-       "stopCoalescing",
-       "stopDeferringTimers",
-       "stopListening",
-       "stopLoading",
-       "stopLoading:",
-       "stopLoadingForPolicyChange",
-       "stopModal",
-       "stopModalWithCode:",
-       "stopNullEvents",
-       "stopObservingModelObjectAtReferenceIndex:",
-       "stopObservingModelObjectsAtReferenceIndexes:",
-       "stopObservingNode",
-       "stopObservingPreviewNode",
-       "stopObservingRelatedObject:",
-       "stopPeriodicEvents",
-       "stopSpeaking",
-       "stopSpeaking:",
-       "stopTextTimer",
-       "stopTimer",
-       "stopTimerForSpeaking",
-       "stopTracking:at:inView:mouseIsUp:",
-       "stopTrackingWithEvent:",
-       "stopUpdateInsertionAnimation",
-       "storagePolicy",
-       "store",
-       "storeCachedResponse:forRequest:",
-       "storeColorPanel:",
-       "storeCurrentBrowsingNodePath:",
-       "storeMetadata",
-       "storeMin:andMax:ofObject:",
-       "storeType",
-       "storedAttributes",
-       "storedValueForKey:",
-       "stores",
-       "stream:handleEvent:",
-       "strengthMenuItemTitles",
-       "strikethroughGlyphRange:strikethroughType:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:",
-       "string",
-       "string:",
-       "stringArrayForKey:",
-       "stringByAbbreviatingWithTildeInPath",
-       "stringByAddingPercentEscapes",
-       "stringByAddingPercentEscapesUsingEncoding:",
-       "stringByAppendingFormat:",
-       "stringByAppendingPathComponent:",
-       "stringByAppendingPathExtension:",
-       "stringByAppendingString:",
-       "stringByDeletingLastPathComponent",
-       "stringByDeletingPathExtension",
-       "stringByEvaluatingJavaScriptFromString:",
-       "stringByExpandingTildeInPath",
-       "stringByPaddingToLength:withString:startingAtIndex:",
-       "stringByReplacingPercentEscapesUsingEncoding:",
-       "stringByResolvingSymlinksInPath",
-       "stringByStandardizingPath",
-       "stringByTrimmingCharactersInSet:",
-       "stringForEditing",
-       "stringForKey:",
-       "stringForKey:inTable:",
-       "stringForObjectValue:",
-       "stringForRange:",
-       "stringForStringListID:andIndex:",
-       "stringForType:",
-       "stringFromDate:",
-       "stringListForKey:inTable:",
-       "stringMarkingUpcaseTransitionsWithDelimiter2:",
-       "stringParameterValue:",
-       "stringValue",
-       "stringValueForObject:",
-       "stringValueSubstitutingEntitiesForNode:ranges:names:objectValue:",
-       "stringWithCString:",
-       "stringWithCString:encoding:",
-       "stringWithCString:length:",
-       "stringWithCapacity:",
-       "stringWithCharacters:length:",
-       "stringWithContentsOfFile:",
-       "stringWithContentsOfURL:",
-       "stringWithData:textEncoding:",
-       "stringWithData:textEncodingName:",
-       "stringWithFileSystemRepresentation:length:",
-       "stringWithFormat:",
-       "stringWithSavedFrame",
-       "stringWithString:",
-       "stringWithUTF8String:",
-       "stringWithoutAmpersand",
-       "stringsByAppendingPathComponent:",
-       "stringsByAppendingPaths:",
-       "stripDiacriticsFromString:",
-       "stroke",
-       "strokeLineFromPoint:toPoint:",
-       "strokeRect:",
-       "style",
-       "styleMask",
-       "styleSheetForPrinting",
-       "subNodeAtIndex:",
-       "subNodes",
-       "subarrayWithRange:",
-       "subdataWithRange:",
-       "subdivideBezierWithFlatness:startPoint:controlPoint1:controlPoint2:endPoint:",
-       "subentities",
-       "subentitiesByName",
-       "subentityColumn",
-       "subentityID",
-       "subentityKey",
-       "subentityMaxID",
-       "subexpression",
-       "subframeArchives",
-       "submenu",
-       "submenuAction:",
-       "submenuRepresentedObjects",
-       "submenuRepresentedObjectsAreStale",
-       "submitButtonDefaultLabel",
-       "subpredicate",
-       "subpredicates",
-       "subresourceForURL:",
-       "subresources",
-       "subscript:",
-       "subscriptRange:",
-       "substituteFontForFont:",
-       "substituteGlyphsInRange:withGlyphs:",
-       "substitutedValueForPredicate:",
-       "substringFromIndex:",
-       "substringToIndex:",
-       "substringWithRange:",
-       "subtractRect:",
-       "subtractRegion:",
-       "subtype",
-       "subviews",
-       "suggestedFilename",
-       "suiteDescriptionFromPropertyListDeclaration:bundle:",
-       "suiteDescriptions",
-       "suiteName",
-       "suiteRegistry",
-       "sum:",
-       "superClass",
-       "superclass",
-       "superclassDescription",
-       "superentity",
-       "supermenu",
-       "superscript:",
-       "superscriptRange:",
-       "superview",
-       "superviewFrameChanged:",
-       "supportedImageMIMETypes",
-       "supportedMIMETypes",
-       "supportsCommand:",
-       "supportsMode:",
-       "supportsMutableFBENode",
-       "supportsSortingByFileProperties",
-       "supportsTableEditing",
-       "supportsTextEncoding",
-       "suppressAllNotificationsFromObject:",
-       "suppressSpecificNotificationFromObject:keyPath:",
-       "surfaceID",
-       "suspend",
-       "suspendCurrentAppleEvent",
-       "suspendExecution",
-       "suspended",
-       "swapGlyph:withIndex:",
-       "swatchWidth",
-       "switchCell",
-       "switchImage:",
-       "switchToListNamed:",
-       "symbol",
-       "symbolCharacterSet",
-       "symbolicLinkDestination",
-       "symbolicTraits",
-       "sync",
-       "syncLoadResourceWithURL:customHeaders:postData:finalURL:responseHeaders:statusCode:",
-       "syncToView:",
-       "syncToViewUnconditionally",
-       "syncWithRemoteToolbars",
-       "synchronize",
-       "synchronizeTableViewSelectionWithText:",
-       "synchronizeTitleAndSelectedItem",
-       "synchronizeWindowTitleWithDocumentName",
-       "synthesizerIsRetained",
-       "systemCharacterProperties",
-       "systemColorsDidChange:",
-       "systemDefaultPortNameServer",
-       "systemFontOfSize:",
-       "systemFontSize",
-       "systemFontSizeForControlSize:",
-       "systemID",
-       "systemLanguage",
-       "systemLanguageContext",
-       "systemLocale",
-       "systemTabletID",
-       "systemVersion",
-       "tabKeyTraversesCells",
-       "tabState",
-       "tabStopType",
-       "tabStops",
-       "tabView",
-       "tabView:didSelectTabViewItem:",
-       "tabView:shouldSelectTabViewItem:",
-       "tabView:willSelectTabViewItem:",
-       "tabViewAdded",
-       "tabViewDidChangeNumberOfTabViewItems:",
-       "tabViewItemAtIndex:",
-       "tabViewItemAtPoint:",
-       "tabViewItems",
-       "tabViewRemoved",
-       "tabViewType",
-       "table",
-       "tableAction:",
-       "tableColumn:didChangeToWidth:",
-       "tableColumn:willDisplayCell:row:",
-       "tableColumnWithIdentifier:",
-       "tableColumns",
-       "tableName",
-       "tableOptionsPanel:",
-       "tableParameters",
-       "tableRow:ofTableView:",
-       "tableView",
-       "tableView:acceptDrop:row:dropOperation:",
-       "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:",
-       "tableViewSelectionIsChanging:",
-       "tabletEvent",
-       "tabletID",
-       "tabletPoint:",
-       "tabletProximity:",
-       "tabsToLinks",
-       "tag",
-       "tagForSegment:",
-       "tagName",
-       "tailIndent",
-       "take",
-       "takeColorFrom:",
-       "takeColorSpaceFrom:",
-       "takeFindStringFromSelection:",
-       "takeFindStringFromView:",
-       "takeStoredValue:forKey:",
-       "takeStoredValuesFromDictionary:",
-       "takeValue:forKey:",
-       "takeValue:forKeyPath:",
-       "takeValuesFromDictionary:",
-       "tangentialPressure",
-       "target",
-       "targetAndArgumentsAcceptable",
-       "targetAndArgumentsAcceptableAtIndex:",
-       "targetAndArgumentsAcceptableAtIndexPath:",
-       "targetAndArgumentsAcceptableForPerformAction",
-       "targetAnimationRect",
-       "targetForAction:",
-       "targetForAction:to:from:",
-       "targetOrigin",
-       "targetWithQObject:member:",
-       "targetWithQTimer:",
-       "tearOffMenuRepresentation",
-       "tellQuickTimeToChill",
-       "temporaryAttributesAtCharacterIndex:effectiveRange:",
-       "temporaryID",
-       "temporaryObjectIDWithEntity:",
-       "terminate",
-       "terminate:",
-       "terminateForClient:",
-       "test",
-       "testPart:",
-       "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",
-       "textDidChange:",
-       "textDidEndEditing:",
-       "textEncoding",
-       "textEncodingName",
-       "textLists",
-       "textObjectToSearchIn",
-       "textPasteboardTypes",
-       "textShadowForButtonState:",
-       "textShouldBeginEditing:",
-       "textShouldEndEditing:",
-       "textSizeMultiplier",
-       "textStorage",
-       "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: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",
-       "textWithStringValue:",
-       "textureIsDestination:name:userInfo:",
-       "textureROI:forRect:",
-       "thickness",
-       "thicknessRequiredInRuler",
-       "thousandSeparator",
-       "threadDictionary",
-       "tickMarkPosition",
-       "tickMarkValueAtIndex",
-       "tickMarkValueAtIndex:",
-       "tightenKerning:",
-       "tightenThresholdForTruncation",
-       "tighteningFactorForTruncation",
-       "tile",
-       "tileAndSetWindowShape:",
-       "tileForView:",
-       "tileIfNecessary",
-       "tileInRect:fromPoint:context:",
-       "tileVertically",
-       "tilt",
-       "tiltX",
-       "tiltY",
-       "timeInterval",
-       "timeIntervalSince1970",
-       "timeIntervalSinceDate:",
-       "timeIntervalSinceNow",
-       "timeIntervalSinceReferenceDate",
-       "timeZone",
-       "timeZoneForSecondsFromGMT:",
-       "timeZoneWithAbbreviation:",
-       "timeZoneWithName:",
-       "timeoutInterval",
-       "timer:",
-       "timerFired",
-       "timerFired:",
-       "timerWithTimeInterval:target:selector:userInfo:repeats:",
-       "timestamp",
-       "timestampForKey:",
-       "title",
-       "titleBarFontOfSize:",
-       "titleButtonOfClass:",
-       "titleCell",
-       "titleColor",
-       "titleFont",
-       "titleForIdentifier:",
-       "titleFrameOfColumn:",
-       "titleHeight",
-       "titleOfSelectedItem",
-       "titlePosition",
-       "titleRect",
-       "titleRectForBounds:",
-       "titleWidth",
-       "titleWidth:",
-       "titlebarRect",
-       "tmpNameFromPath:extension:",
-       "toManyRelationshipKeys",
-       "toOneRelationship",
-       "toOneRelationshipKeys",
-       "toggleBaseWritingDirection:",
-       "toggleContinuousGrammarChecking:",
-       "toggleContinuousSpellChecking:",
-       "toggleExpanded:",
-       "toggleIsExpanded:",
-       "toggleKeepVisibleToolbarItem:",
-       "togglePlatformInputSystem:",
-       "togglePreview:",
-       "toggleRuler:",
-       "toggleSmartInsertDelete:",
-       "toggleToolbarShown:",
-       "toggleTraditionalCharacterShape:",
-       "toggleUsingSmallToolbarIcons:",
-       "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:",
-       "topLevelNode",
-       "topLevelObject",
-       "topLevelObjectClassDescription",
-       "topMargin",
-       "topUndoObject",
-       "totalNumberOfItemViewersAndSeparators",
-       "touch",
-       "trace",
-       "traceWithFlavor:priority:format:arguments:",
-       "trackKnob:",
-       "trackMagnifierForPanel:",
-       "trackMarker:withMouseEvent:",
-       "trackMouse:adding:",
-       "trackMouse:inRect:ofView:atCharacterIndex:untilMouseUp:",
-       "trackMouse:inRect:ofView:untilMouseUp:",
-       "trackMouseForPopupMenuFormRepresentation:",
-       "trackPagingArea:",
-       "trackScrollButtons:",
-       "trackWithEvent:",
-       "trackWithEvent:inView:withDelegate:",
-       "trackingMode",
-       "trackingNumber",
-       "trailingOffset",
-       "traitsOfFont:",
-       "transactionDidBegin",
-       "transactionDidCommit",
-       "transactionDidRollback",
-       "transform",
-       "transform:",
-       "transformBy:interior:",
-       "transformPoint:",
-       "transformRect:",
-       "transformStruct",
-       "transformUsingAffineTransform:",
-       "transformedImage:",
-       "transformedValue:",
-       "transformedValueClass",
-       "translateOriginToPoint:",
-       "translateTo::",
-       "translateXBy:yBy:",
-       "transparentBackground",
-       "treatNilValuesLikeEmptyCollections",
-       "treatsDirectoryAliasesAsDirectories",
-       "treatsFilePackagesAsDirectories",
-       "tryDHTMLCopy",
-       "tryDHTMLCut",
-       "tryDHTMLPaste",
-       "tryLock",
-       "tryNewColorListNameSheetDidEnd:returnCode:context:",
-       "tryNextChallengeForWindow:",
-       "tryToPerform:with:",
-       "turnObject:intoFaultWithContext:",
-       "turnOffKerning:",
-       "turnOffLigatures:",
-       "type",
-       "typeCodeValue",
-       "typeDescription",
-       "typeDescriptions",
-       "typeForContentsOfURL:error:",
-       "typeForKey:",
-       "typeForParameter:",
-       "typeFromFileExtension:",
-       "typeSelectNodeInTypeSelectDirectoryWithKeyDownEvent:recursively:",
-       "typeStringForColumn:",
-       "typeToUnixName:",
-       "typefaceInfoForFontDescriptor:",
-       "typefaceInfoForKnownFontDescriptor:",
-       "typefaceInfoForPostscriptName:",
-       "types",
-       "typesFilterableTo:",
-       "typesetter",
-       "typesetterBehavior",
-       "typesetterLaidOneGlyph:",
-       "typingAttributes",
-       "typingStyle",
-       "unableToSetNilForKey:",
-       "unarchiveObjectWithData:",
-       "unarchiveObjectWithFile:",
-       "unarchiver:cannotDecodeObjectOfClassName:originalClasses:",
-       "unarchiver:didDecodeObject:",
-       "unarchiver:willReplaceObject:withObject:",
-       "unarchiverDidFinish:",
-       "unarchiverWillFinish:",
-       "unbind:",
-       "unbindNSView:",
-       "undefined",
-       "underline:",
-       "underlineGlyphRange:underlineType:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:",
-       "underlineThickness",
-       "undo",
-       "undo:",
-       "undoActionName",
-       "undoEdit",
-       "undoEditing:",
-       "undoManager",
-       "undoManagerForTextView:",
-       "undoManagerForWebView:",
-       "undoManagerForWindow:",
-       "undoMenuItemTitle",
-       "undoMenuTitleForUndoActionName:",
-       "undoNestedGroup",
-       "undoRedo:",
-       "unfocusView:",
-       "unfocusWindow",
-       "unhide",
-       "unhide:",
-       "unhideAllApplications:",
-       "unhideWithoutActivation",
-       "unionSet:",
-       "unionWith:",
-       "unionWithRect:",
-       "uniqueID",
-       "uniqueKey:",
-       "uniqueNameWithBase:",
-       "uniqueNodeForIndexes:count:indexPath:",
-       "uniqueSpellDocumentTag",
-       "unixToTypeName:",
-       "unload",
-       "unloadNib:",
-       "unloadWithoutShutdown",
-       "unlock",
-       "unlockDocument",
-       "unlockFocus",
-       "unlockFocusInRect:",
-       "unlockObjectStore",
-       "unlockParentStore",
-       "unlockTopMostReader",
-       "unlockWithCondition:",
-       "unmarkText",
-       "unpackROI:forRect:",
-       "unreachableURL",
-       "unregisterDragTypesForWindow:",
-       "unregisterDraggedTypes",
-       "unregisterForEnclosingClipViewNotifications",
-       "unregisterForPropertyChangedNotifications",
-       "unregisterForWindowNotifications",
-       "unregisterObjectWithServicePath:",
-       "unscript:",
-       "unscriptRange:",
-       "unsignedCharValue",
-       "unsignedIntValue",
-       "unsignedLongLongValue",
-       "unsignedLongValue",
-       "unsignedShortValue",
-       "unsupportedTextMIMETypes",
-       "unsuppressAllNotificationsFromObject:",
-       "unsuppressSpecificNotificationFromObject:keyPath:",
-       "untrashedLeafFileLocationComponentWithLocator:",
-       "unvalidatedPath",
-       "unvalidatedSpecifier",
-       "update",
-       "updateAndSetWindow",
-       "updateCacheForStreamDisposal",
-       "updateCell:",
-       "updateCellInside:",
-       "updateCellOrControl:forMaxValue:",
-       "updateCellOrControl:forMinValue:",
-       "updateChangeCount:",
-       "updateColorOptionsUI",
-       "updateConnectionForResponse:",
-       "updateCurGlyphOffset",
-       "updateCurrentBrowsingNodePathWithCurrentDirectoryNode:",
-       "updateDragTypeRegistration",
-       "updateDynamicServices:",
-       "updateFavoritesFromDefaults",
-       "updateFavoritesUI",
-       "updateFocusDisplay",
-       "updateFontPanel",
-       "updateFrameColors:",
-       "updateFromPath:",
-       "updateFromPrintInfo",
-       "updateHeartBeatState",
-       "updateInputContexts",
-       "updateInsertionPointStateAndRestartTimer:",
-       "updateInvalidatedFont:forObject:",
-       "updateInvalidatedObjectValue:forObject:",
-       "updateInvalidatedTextColor:forObject:",
-       "updateLabel",
-       "updateLineSpacingUI",
-       "updateNib",
-       "updateOptions:",
-       "updateOptionsUI",
-       "updateOptionsWithApplicationIcon:",
-       "updateOptionsWithApplicationName:",
-       "updateOptionsWithCopyright:",
-       "updateOptionsWithCredits:",
-       "updateOptionsWithMarketingVersion:",
-       "updateOptionsWithVersion:",
-       "updateOutlineColumnDataCell:forDisplayAtIndexPath:",
-       "updateOutlineColumnOutlineCell:forDisplayAtIndexPath:",
-       "updatePoofAnimation",
-       "updateQueryNode:",
-       "updateReferenceIndexesToReflectInsertionAtIndex:",
-       "updateReferenceIndexesToReflectInsertionAtIndexes:",
-       "updateReferenceIndexesToReflectRemovalAtIndex:",
-       "updateReferenceIndexesToReflectRemovalAtIndexes:",
-       "updateRoot",
-       "updateRow:",
-       "updateRuler",
-       "updateScroller",
-       "updateScrollers",
-       "updateSearchFieldWithPredicate:",
-       "updateSpellingPanelWithMisspelledWord:",
-       "updateSubmenu:",
-       "updateSwatch",
-       "updateTableColumnDataCell:forDisplayAtIndex:",
-       "updateTextAttributes:",
-       "updateTextColor",
-       "updateUI",
-       "updateWindows",
-       "updateWindowsItem:",
-       "updateWithFocusRing",
-       "updateWithFocusRingForWindowKeyChange",
-       "updatedObjects",
-       "uppercaseLetterCharacterSet",
-       "uppercaseString",
-       "url",
-       "usage",
-       "use",
-       "useAllLigatures:",
-       "useCredential:forAuthenticationChallenge:",
-       "useDisabledEffectForState:",
-       "useHighlightEffectForState:",
-       "useMap",
-       "useOptimizedDrawing:",
-       "useSSLOnlyForKey:",
-       "useStandardKerning:",
-       "useStandardLigatures:",
-       "useStoredAccessor",
-       "usedRectForTextContainer:",
-       "usedSize",
-       "user",
-       "userAgent",
-       "userAgentForURL:",
-       "userColumnResizingAutoresizesWindow",
-       "userData",
-       "userFixedPitchFontOfSize:",
-       "userFontOfSize:",
-       "userHomeNode",
-       "userInfo",
-       "userKeyEquivalent",
-       "userKeyEquivalentModifierMask",
-       "userSpaceScaleFactor",
-       "userStyleSheetEnabled",
-       "userStyleSheetLocation",
-       "usesAlternatingRowBackgroundColors",
-       "usesButtons",
-       "usesDataSource",
-       "usesEPSOnResolutionMismatch",
-       "usesFeedbackWindow",
-       "usesFindPanel",
-       "usesFontLeading",
-       "usesFontPanel",
-       "usesGroupingSeparator",
-       "usesItemFromMenu",
-       "usesMenuFormRepresentationInDisplayMode:",
-       "usesRuler",
-       "usesScreenFonts",
-       "usesUnnamedArguments",
-       "usesUserKeyEquivalents",
-       "usingDefaultVoice",
-       "validAttributesForMarkedText",
-       "validModesForFontPanel:",
-       "validRequestorForSendType:returnType:",
-       "validRows",
-       "validStartCharacter:",
-       "validate",
-       "validateAndCommitValueInEditor:editingIsEnding:errorUserInterfaceHandled:",
-       "validateEditing",
-       "validateFindPanelAction:forClient:",
-       "validateForDelete:",
-       "validateForInsert:",
-       "validateForUpdate:",
-       "validateItem:",
-       "validateMenuItem:",
-       "validateObjectValue:",
-       "validateRename",
-       "validateTakeValue:forKeyPath:",
-       "validateToolbarItem:",
-       "validateUserInterfaceItem:",
-       "validateValue:forKey:",
-       "validateValue:forKey:error:",
-       "validateValue:forKeyPath:error:",
-       "validateVisibleItems",
-       "validatesImmediately",
-       "validationPredicates",
-       "validationWarnings",
-       "value",
-       "value:withObjCType:",
-       "valueAtIndex:",
-       "valueAtIndex:inPropertyWithKey:",
-       "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:",
-       "valueOfAttribute:forResultAtIndex:",
-       "valueTransformer",
-       "valueTransformerForBinding:",
-       "valueTransformerForName:",
-       "valueTransformerName",
-       "valueTransformerNames",
-       "valueTypeDescriptionFromName:declaration:",
-       "valueTypeForDimension:",
-       "valueWithBytes:objCType:",
-       "valueWithName:inPropertyWithKey:",
-       "valueWithNonretainedObject:",
-       "valueWithPoint:",
-       "valueWithPointer:",
-       "valueWithRange:",
-       "valueWithRect:",
-       "valueWithSize:",
-       "valueWithUniqueID:inPropertyWithKey:",
-       "valueWraps",
-       "values",
-       "values:forResolutions:withCount:fromArrayOrNumber:",
-       "valuesForKeys:",
-       "variable",
-       "variableExpression",
-       "variant",
-       "vectorWithString:",
-       "vectorWithValues:count:",
-       "vectorWithX:",
-       "vectorWithX:Y:",
-       "vectorWithX:Y:Z:",
-       "vectorWithX:Y:Z:W:",
-       "vendor1",
-       "vendor2",
-       "vendor3",
-       "vendorDefined",
-       "vendorID",
-       "vendorPointerType",
-       "vendorPointingDeviceType",
-       "verifyWithDelegate:",
-       "version",
-       "versionForClassName:",
-       "versionForClassNamed:",
-       "versionString",
-       "verticalAlignment",
-       "verticalLineScroll",
-       "verticalPageScroll",
-       "verticalPagination",
-       "verticalRulerView",
-       "verticalScroller",
-       "verticalScrollingMode",
-       "view",
-       "view:customToolTip:drawInView:displayInfo:",
-       "view:customToolTip:fadeOutAllowedForToolTipWithDisplayInfo:",
-       "view:customToolTip:frameForToolTipWithDisplayInfo:",
-       "view:stringForToolTip:point:userData:",
-       "viewBoundsChanged:",
-       "viewDidEndLiveResize",
-       "viewDidLiveResizeFromRect:",
-       "viewDidMoveToHostWindow",
-       "viewDidMoveToSuperview",
-       "viewDidMoveToWindow",
-       "viewFactory",
-       "viewForCharacterIndex:layoutManager:",
-       "viewForJavaAppletWithFrame:attributeNames:attributeValues:baseURL:",
-       "viewForObject:",
-       "viewForPluginWithURL:attributeNames:attributeValues:MIMEType:",
-       "viewForPreferenceNamed:",
-       "viewFrameChanged:",
-       "viewHasMoved:",
-       "viewSize",
-       "viewSizeChanged:",
-       "viewWillDealloc",
-       "viewWillMoveToHostWindow:",
-       "viewWillMoveToSuperview:",
-       "viewWillMoveToWindow:",
-       "viewWillResetCursorRects",
-       "viewWillStartLiveResize",
-       "viewWithFrame:forView:characterIndex:layoutManager:",
-       "viewWithTag:",
-       "visibilityPriority",
-       "visibleFrame",
-       "visibleItems",
-       "visibleRect",
-       "visibleSelectionRect",
-       "visitPredicate:",
-       "visitPredicateExpression:",
-       "visitPredicateOperator:",
-       "visitor",
-       "visualFrame",
-       "visualRootNode",
-       "voiceIdentifierForVoiceCreator:voiceID:",
-       "volatileDomainForName:",
-       "wait",
-       "waitForDataInBackgroundAndNotifyForModes:",
-       "waitInterval:",
-       "wakeup:",
-       "wantsDefaultClipping",
-       "wantsDoubleBuffering",
-       "wantsNotificationForMarkedText",
-       "wantsPeriodicDraggingUpdates",
-       "wantsScrollWheelEvent:",
-       "wantsToDelayTextChangeNotifications",
-       "wantsToDrawIconInDisplayMode:",
-       "wantsToDrawIconIntoLabelAreaInDisplayMode:",
-       "wantsToDrawLabelInDisplayMode:",
-       "wantsToHandleMouseEvents",
-       "wantsToInterpretAllKeystrokes",
-       "wantsToTrackMouse",
-       "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:",
-       "webView:didCancelClientRedirectForFrame:",
-       "webView:didChangeLocationWithinPageForFrame:",
-       "webView:didCommitLoadForFrame:",
-       "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:",
-       "webView:resource:didReceiveAuthenticationChallenge:fromDataSource:",
-       "webView:resource:didReceiveContentLength:fromDataSource:",
-       "webView:resource:didReceiveResponse:fromDataSource:",
-       "webView:resource:willSendRequest:redirectResponse:fromDataSource:",
-       "webView:runJavaScriptAlertPanelWithMessage:",
-       "webView:runJavaScriptConfirmPanelWithMessage:",
-       "webView:runJavaScriptTextInputPanelWithPrompt:defaultText:",
-       "webView:runOpenPanelForFileButtonWithResultListener:",
-       "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:",
-       "webViewDidBeginEditing:",
-       "webViewDidChange:",
-       "webViewDidChangeSelection:",
-       "webViewDidChangeTypingStyle:",
-       "webViewDidEndEditing:",
-       "webViewFirstResponder:",
-       "webViewFocus:",
-       "webViewFooterHeight:",
-       "webViewFrame:",
-       "webViewHeaderHeight:",
-       "webViewIsResizable:",
-       "webViewIsStatusBarVisible:",
-       "webViewPrint:",
-       "webViewShow:",
-       "webViewsInSetNamed:",
-       "weightOfFont:",
-       "whiteColor",
-       "whiteComponent",
-       "whitespace",
-       "whitespaceAndNewlineCharacterSet",
-       "whitespaceCharacterSet",
-       "widget",
-       "widgetInView:withButtonID:action:",
-       "width",
-       "widthAdjustLimit",
-       "widthForLayer:edge:",
-       "widthForSegment:",
-       "widthOfString:",
-       "widthTracksTextView",
-       "widthValueTypeForLayer:edge:",
-       "willAccessValueForKey:",
-       "willBeDisplayed",
-       "willCacheResponse:",
-       "willChange:valuesAtIndexes:forKey:",
-       "willChangeExpandedNodes",
-       "willChangeValueForKey:",
-       "willChangeValueForKey:withSetMutation:usingObjects:",
-       "willChangeValuesForArrangedKeys:objectKeys:indexKeys:",
-       "willForwardSelector:",
-       "willHaveItemsToDisplayForItemViewers:",
-       "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:",
-       "windowControllerWillLoadNib:",
-       "windowControllers",
-       "windowDidBecomeKey:",
-       "windowDidBecomeKeyNotification:",
-       "windowDidDeminiaturize:",
-       "windowDidEnableToolTipCreationAndDisplay",
-       "windowDidLoad",
-       "windowDidMiniaturize:",
-       "windowDidResignKey:",
-       "windowDidResignKeyNotification:",
-       "windowDidResize:",
-       "windowDidUpdate:",
-       "windowForSheet",
-       "windowFrame",
-       "windowFrameAutosaveName",
-       "windowFrameColor",
-       "windowFrameOutlineColor",
-       "windowFrameTextColor",
-       "windowID",
-       "windowIsResizable",
-       "windowIsSpellingPanel:",
-       "windowNibName",
-       "windowNibPath",
-       "windowNumber",
-       "windowObjectCleared",
-       "windowProperties",
-       "windowRef",
-       "windowResignedKey:",
-       "windowScriptNPObject",
-       "windowScriptObject",
-       "windowShouldClose:",
-       "windowShouldZoom:toFrame:",
-       "windowTitle",
-       "windowTitleForDocumentDisplayName:",
-       "windowTitlebarLinesSpacingWidth",
-       "windowTitlebarLinesSpacingWidth:",
-       "windowTitlebarTitleLinesSpacingWidth",
-       "windowTitlebarTitleLinesSpacingWidth:",
-       "windowWillClose:",
-       "windowWillCloseNotification:",
-       "windowWillLoad",
-       "windowWillResize:toSize:",
-       "windowWillReturnFieldEditor:toObject:",
-       "windowWillReturnUndoManager:",
-       "windowWillUseStandardFrame:defaultFrame:",
-       "windowWithWindowNumber:",
-       "windows",
-       "wordMovementHandler",
-       "wordWrap",
-       "workQueue",
-       "worksWhenModal",
-       "wrapMode",
-       "wrapROI:forRect:",
-       "wraps",
-       "writablePasteboardTypes",
-       "writableTypes",
-       "writableTypesForSaveOperation:",
-       "write:len:buffer:",
-       "writeAlignedDataSize:",
-       "writeAttachment:",
-       "writeBackgroundColor",
-       "writeBaselineOffset:",
-       "writeBody",
-       "writeCharacterAttributes:previousAttributes:",
-       "writeCharacterShape:",
-       "writeColor:type:",
-       "writeColorTable",
-       "writeColors",
-       "writeData:",
-       "writeData:length:",
-       "writeDate:",
-       "writeDateDocumentAttribute:withRTFKeyword:",
-       "writeDefaultTabInterval",
-       "writeDelayedInt:for:",
-       "writeDocument:pbtype:filename:",
-       "writeEscapedUTF8String:",
-       "writeExpansion:",
-       "writeFont:",
-       "writeFontTable",
-       "writeGlyphInfo:",
-       "writeHeader",
-       "writeHyphenation",
-       "writeImageToPasteboard:types:",
-       "writeInfo",
-       "writeInt:",
-       "writeKern:",
-       "writeKeywordsDocumentAttribute",
-       "writeLigature:",
-       "writeLinkInfo:",
-       "writeListTable",
-       "writeLock",
-       "writeObliqueness:",
-       "writePaperSize",
-       "writeParagraphStyle:",
-       "writePath:docInfo:errorHandler:remapContents:hardLinkPath:",
-       "writePath:docInfo:errorHandler:remapContents:markBusy:hardLinkPath:",
-       "writePrintInfo",
-       "writeProperty:forKey:",
-       "writeRTF",
-       "writeRoomForInt:",
-       "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:",
-       "writeToURL:atomically:",
-       "writeToURL:ofType:error:",
-       "writeToURL:ofType:forSaveOperation:originalContentsURL:error:",
-       "writeURLs:andTitles:toPasteboard:",
-       "writeUnderlineStyle:allowStrikethrough:",
-       "writeUnlock",
-       "writeWithBackupToFile:ofType:saveOperation:",
-       "xHeight",
-       "xmlInfoForAttribute:",
-       "xmlNode",
-       "yearOfCommonEra",
-       "yellowColor",
-       "yellowComponent",
-       "zero",
-       "zeroOrMoreDescriptionsForSubelementName:",
-       "zeroSymbol",
-       "zone",
-       "zoom:",
-       "zoomButton"
+// Automatically generated. Do not edit.
+static const char * const _objc_builtin_selectors[] = {
+    "_fillsClipViewHeight",
+    NULL,
+    "accessibilityIsTitleAttributeSettable",
+    "theaterNumberOfAudioChannels",
+    "_makeHistory",
+    "setIgnoredWords:inSpellDocumentWithTag:",
+    "birthdayFieldPresent",
+    "contextID",
+    "rolloverMenuForCardProxy",
+    "errorExpectedTypeDescriptor",
+    "searchButtonRectForBounds:",
+    "_constrainColorIndexToVisibleBounds:dirtyIfNeeded:",
+    "objectGraphDescription",
+    NULL,
+    "installScrollValuesToScrollView:",
+    "_audioLevelsForPropertyID:",
+    "_cursorOfDividerAtIndex:position:dragConstraints:",
+    NULL,
+    NULL,
+    "initWithStartingColor:endingColor:",
+    "setAppleMenu:",
+    "maximumAdvancement",
+    "handleSwitchToCardAndColumnsFrom:animate:",
+    "kickYourSelfIntoMotion",
+    "textureColorSpace",
+    "supportsPlaying",
+    NULL,
+    "setCropInfo:",
+    "itemMatrix",
+    "_editSubgraph:",
+    "newChildObject",
+    "rateChangePreservesPitch",
+    "addTrackingRectForToolTip:reuseExistingTrackingNum:",
+    NULL,
+    NULL,
+    "_changeDrawerKeyState",
+    NULL,
+    "touchCachedImageForEmail:",
+    "allocateBatch:count:",
+    "notificationCenterForType:",
+    "setCurrentSelection:",
+    "objectID",
+    "target",
+    "_lockCachedImage",
+    "_setContentType:",
+    "setBaseWritingDirection:",
+    "initWithCSR:clHandle:",
+    "_listenForProxySettingChanges",
+    "setCoreUIWindowType:",
+    "_invalidateGlyphsForCharacterRange:editedCharacterRange:changeInLength:actualCharacterRange:",
+    "_setDelegate:",
+    "setGlyphGenerator:",
+    "setUsesRuler:",
+    "write",
+    "_indexForMoveRight",
+    "setMyButton:",
+    "_setKeyBindingMonitor:",
+    "_setURI:",
+    "asRef",
+    "setUpdateMovieBoxWhileResizing:",
+    "_installTrackingRect:assumeInside:userData:trackingNum:",
+    "_scriptingCount",
+    "addFirst:",
+    "_canGuaranteeOrderOfContentObjects",
+    "textView:doCommandBySelector:",
+    "_yesterdayString",
+    "_getSelectorForType:",
+    "_postpone",
+    "isContinuousSpellCheckingEnabled",
+    "_outputAudioSampleBuffer:fromConnection:",
+    "_restoreMode",
+    "layoutPopupViews",
+    "_growCachedRectArrayToSize:",
+    "setShowsSuppressionButton:",
+    "isHorizontal",
+    "saveQuery",
+    "isKeyExcludedFromWebScript:",
+    "CA_isAbsolutePath:",
+    NULL,
+    NULL,
+    "setShowsInvisibleCharacters:",
+    "_componentsOfInterestToDatePickerFromDate:",
+    "retainedFigSampleBuffer",
+    NULL,
+    "_setTrust:",
+    "resetToolbarToDefaultConfiguration:",
+    "nts_RestoreFromMetaDataIfNeeded",
+    "_arrangeObjectsWithSelectedObjects:avoidsEmptySelection:operationsMask:useBasis:",
+    "_ignoreForKeyViewLoop",
+    "bogusbogus",
+    "substringFromIndex:",
+    "accessibilityIsWindowsAttributeSettable",
+    "blurHorizontalPass3ROI:destRect:",
+    "charactersToBeSkipped",
+    "initWithKey:type:isReadOnly:appleEventCode:isLocationRequiredToCreate:",
+    "_spellingGuessesForRange:",
+    "initForWritingWithMutableData:",
+    "delayWindowOrdering",
+    "_defaultObjectClass",
+    "removeDocument:",
+    NULL,
+    "initWithTimeIntervalSinceReferenceDate:",
+    "addressBookWillDealloc:",
+    "rowsPerScreen",
+    "words",
+    "hasVerticalScroller",
+    "_NSNibPathForNibID:",
+    NULL,
+    "_intercellSpace",
+    "_setSelected:",
+    NULL,
+    "fontDescriptor",
+    "_clearRawPropertiesWithHint:",
+    "setUIController:",
+    "setSaveWeighting:",
+    "chapterlist",
+    "fauxFilePackageTypes",
+    "invalidateAnimatedCellsArrayCache",
+    "_dotMacEmailEncryptionUsage",
+    NULL,
+    NULL,
+    "_releaseURIArray",
+    "closeFileHandler",
+    "setUsesItemFromMenu:",
+    "cgContext",
+    NULL,
+    "peopleWithScreenName:",
+    "addEffectWithDictionary:",
+    "moveAnnotationToEnd:",
+    NULL,
+    "selectCell:",
+    "beginRenderTexture:colorSpace:virtualScreen:",
+    "clearShadow",
+    "_scheduleAnimationContextStackFlush",
+    "initWithRuns:glyphOrigin:lineFragmentWidth:elasticWidth:usesScreenFonts:isRTL:",
+    "_invalidLabelSize",
+    "systemDefaultPortNameServer",
+    "growBuffer:current:end:factor:",
+    "preferredPlaceholderForMarker:",
+    "processNode:permutations:path:replacingNode:subtreeWith:into:",
+    "alignmentRect",
+    "_setTexturedBackground:",
+    "_startAutoExpandingItemFlash",
+    "writeProperty:forKey:",
+    "_updatedState:",
+    "sortedArrayUsingFunction:context:",
+    "_updateOverlay",
+    "yTranslation",
+    "saveOptionCanUseFileType:",
+    "encodeWithCoder:",
+    "cStringUsingEncoding:",
+    "_hasKeyFocus",
+    "importFactor",
+    "unquiesce",
+    NULL,
+    "operationWasAborted",
+    "pixelFormatKYMC8",
+    "openListFromFile:",
+    NULL,
+    "processEventQ",
+    "_closeInlinePreview",
+    "headerView",
+    "_moveDown:",
+    "colorForProperty:",
+    "_resetCurrentSearchIndex",
+    "_selectWindow:",
+    "_drawCustomTrackWithTrackRect:inView:",
+    "setDatabaseUUID:",
+    "compressedSizeForOriginalSize:",
+    "pixelFormatRGB16",
+    "controlSize",
+    "imageBrowser:didMoveItemsAtIndexes:",
+    "setContinuous:",
+    "_validateSpecifier",
+    "resizeDisplayView:",
+    "cancelScheduledEndOfSearch",
+    "standardItemWithItemIdentifier:",
+    "shouldCreateIvarPorts",
+    "preservesAspectRatio",
+    "_setDrawsOwnDescendants:",
+    "addCancelButton",
+    "sessionFinished:",
+    "_sendDataSourceWriteDragDataWithIndexes:toPasteboard:",
+    "isPolicySpecificStatusCode:",
+    "gotoPreviousItem:",
+    NULL,
+    "stopClearSearchTimer",
+    "_flushAllCachedChildren",
+    "setImageLayer:originalLayer:mode:",
+    "_send:",
+    "_copyCGImageAndRect:forDrawingInRect:inReferenceContext:",
+    NULL,
+    "notActiveWindowFrameColor",
+    "needsDisplay",
+    "applyFontTraits:range:",
+    "lockFocusIfCanDrawInContext:",
+    "_setAlignmentRectInNormalizedCoordinates:",
+    "scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:",
+    "setConditionallySetsEditable:",
+    NULL,
+    "_assertFilterRestrictsInsertionOfObjects:atArrangedObjectIndexes:",
+    "mediaBrowserView",
+    "_getATSTypesetterGuts",
+    "_setDocumentEdited:",
+    NULL,
+    "launchQCPickerWithParent:withDelegate:fromView:centerPoint:onScreen:currentQCIdentifier:",
+    "originalURL",
+    NULL,
+    "highestMipmapItem",
+    "makeKeyAndOrderFrontWithEffect:",
+    "_isHidden",
+    "_getExternalData:",
+    "handlePrintScriptCommand:",
+    "commitChanges:",
+    "characterSetCoveredByFont:language:",
+    "shouldEdit:inRect:ofView:",
+    "tickMarkValueAtIndex",
+    "cropPRSFromCropRegion:cropSize:originalImageSize:",
+    "_updateForDocumentEdited:",
+    "setCurrentInputManager:",
+    "validateMenuItem:",
+    "internals",
+    "systemTabletID",
+    "systemVersion",
+    "trustSettingsDomain",
+    "codecType",
+    "removeAppleUseCoreUIAtIndexes:",
+    "setNeedsDisplayInRect:avoidAdditionalLayout:",
+    "fillColor",
+    "deselectMemberRow:subrow:",
+    "_invalidateExecutionMode",
+    "_enableRefreshOnWindow:",
+    "componentRemoveNotification:",
+    "discardMarkedText",
+    "indexFromURL:",
+    "isRegularFile",
+    "removeCurrentSchedule",
+    "valueClass:forBinding:",
+    "initWithPreview:forView:",
+    "initWithCIImage:options:",
+    "_registerMenuItemForKeyEquivalentUniquing:",
+    "setPreloadRange:",
+    "_fetchAllInstancesFromStore:intoContext:underlyingException:",
+    "accessibilityIsMainAttributeSettable",
+    "addNormalAndDownAppearanceWithStateToDictionaryRef:",
+    "ancestorsStartingWith:",
+    "insertBacktab:",
+    "insertROI:destRect:",
+    "iconForItem:",
+    NULL,
+    "setThemeFrameWidgetState:",
+    "deselectGroup:",
+    "getAttributeFromBuffer:allowBinary:",
+    "_animatePulse",
+    "indexOfCurrentSlideshowItem",
+    "_verticalDistanceForPageScroll",
+    "_invalidateBezierPathsForKeyFrame:",
+    NULL,
+    "_CAAdminEmailAddress",
+    "selfDidResize:",
+    "shouldRunSavePanelWithAccessoryView",
+    "isGatheringResults",
+    "isBusy",
+    "directoryTraversalOperation:shouldProceedAfterError:",
+    "_keyBindingMonitor",
+    "ibIsInDesignMode",
+    "_stateUpdated:",
+    "nts_UniqueId",
+    "_newLazyIconRefRepresentation:ofSize:",
+    "initWithContentRect:styleMask:backing:defer:drawer:",
+    "multiply:by:",
+    "_dayOfWeekForDate:",
+    "allowsExpandingMultipleDirectories",
+    "vertBlur2ROI:destRect:",
+    "_validateMultipleValue:forKeyPath:atIndex:error:",
+    NULL,
+    "firstUnlaidCharacterIndex",
+    "_remove:",
+    "autovalidates",
+    "_redoLayout:",
+    "_setEventDelegate:",
+    "allowsDragging",
+    "file",
+    "_interviewPadding",
+    NULL,
+    "contentDidChangeAtIndexes:",
+    "invalidateParagraphStyles",
+    "_initWithRTFSelector:argument:documentAttributes:",
+    "initWithPosition:objectSpecifier:",
+    "registerModelKeyPath:",
+    "copyPublicRecordsForClass:withDatabaseImpls:inAddressBook:",
+    "_reCalcTextButton",
+    "raise",
+    "_userDeselectColumn:",
+    "appendParameterDeclarationsToAETEData:",
+    "_updateTextSize",
+    NULL,
+    NULL,
+    "_getPartStruct:numberOfParts:withInnerBounds:",
+    "_opacityAtPoint:inBitmapImageRep:",
+    "isFBOSupported",
+    "discardThumbnail",
+    "action:",
+    "_setSortDescriptorsNoCopy:",
+    NULL,
+    "_isSettingSubmenuForOldMenu:",
+    "_certPanelSheetDidEnd:returnCode:contextInfo:",
+    "_setCurrentAttachmentRect:index:",
+    "selectionFromTopToPoint:",
+    "_isConnectionKeyInUse:",
+    "clearsDepthBuffer",
+    "drawsCellBackground",
+    "_captureVisibleIntoLiveResizeCache",
+    "_setKeyCellAtRow:column:",
+    "frameForPlusButton:atIndex:",
+    "askDiscardChangesWithFile:",
+    "_updateNodeList:byRemovingNode:sendPrepareMessageWithParentNode:",
+    "_setExplicitlyCannotAdd:insert:remove:",
+    "setKnobProportion:",
+    NULL,
+    "_pluginClassWithObject:",
+    "showInspector:",
+    "timeLimit",
+    "_applyStylesheet:arguments:error:",
+    "_clickedInExpansionTriangle:",
+    "DSQueryString",
+    "resumeInformation",
+    "endDisplay",
+    "_similarFontWithName:",
+    "PDFViewPerformFind:",
+    "isFlashMovie",
+    "removeObjectForKey:inDomain:",
+    "_openDocumentFileAt:display:",
+    "_fallbackLoadPreview:",
+    "_activateDocumentPreview:",
+    "figFormatDescription",
+    "clipViewBoundsChanged:",
+    NULL,
+    "_NSNibIDForNibPath:",
+    "_filterRestrictsInsertion",
+    "autoAdaptDuration",
+    "largerButton",
+    "_convertRectToSuperview:",
+    "lineFragmentRectForGlyphAtIndex:effectiveRange:",
+    "getAttribute:index:",
+    "pageColor",
+    "_coreUICircularValue:",
+    "standardizedURLPath",
+    "import",
+    "drawHelpIcon:inContext:",
+    "cellFrameForTextContainer:proposedLineFragment:glyphPosition:characterIndex:",
+    "associate:with:",
+    NULL,
+    "handleDelegateClickedFauxDisabledNode:",
+    "_checkSpellingForRange:excludingRange:",
+    NULL,
+    "_addCursorRect:cursor:forView:",
+    "loadArchive:",
+    NULL,
+    "currentTaskDictionary",
+    "iconSize",
+    "_popNamespaces",
+    "handleResponseSubnode:",
+    "openDescendantCount",
+    "_color",
+    "_newLineForLibXML2ElementNode:",
+    "quartzFilterManager:didRemoveFilter:",
+    "columnsAutosaveName",
+    "setDraggable:",
+    "_savePanelAccessoryViewForWritableTypes:defaultType:",
+    "addButtonWithTitle:",
+    "setAutofillColor:",
+    "preferredLanguages",
+    "_cfurlcredential",
+    NULL,
+    "control:textView:completions:forPartialWordRange:indexOfSelectedItem:",
+    "expire",
+    "__hierarchyControlAction:",
+    "isOneShot",
+    NULL,
+    "_setNeedsDisplayForTargetRow:column:operation:",
+    "CAJS_timerWithTimeInterval:function:repeats:",
+    "customRect:",
+    "listDictionary",
+    "_hasRowHeaderColumn",
+    "clearStopAnimation",
+    "setGroupIdentifier:",
+    "useTableViewLook",
+    "_setComposition:context:",
+    "_saveRequestForStore:originalRequest:andOptimisticLocking:",
+    "dateRangeExtendedWithDate:",
+    "setDeferred:",
+    "liveImportCell:",
+    "_gray136Color",
+    "_selectRange::::",
+    "accessibilityIsSearchButtonAttributeSettable",
+    "_guaranteeStorageInDictionary:addBinding:",
+    "encodeBool:forKey:",
+    "stores",
+    "_baselineOffsetForUILayout",
+    "_defaultLineHeightForUILayout",
+    "nts_ValueForProperty:row:",
+    "_addContent",
+    "creationDateYear",
+    "initWithCharacters:length:",
+    "fetchPredicate",
+    "nodeWithPath:",
+    "databaseUUID",
+    "infos",
+    "_isContextualMenu",
+    "selectedDirectories",
+    "_drawRowHeaderSeparatorAsSurface",
+    "criteriaSlices",
+    NULL,
+    NULL,
+    "panelShouldHaveSingleIndexPageButton",
+    "recordToOutputFileURL:bufferDestination:",
+    "_generateSQLForVariableExpression:inContext:",
+    "_presentAlertPanelForError:responder:responderCandidate:",
+    "convertToDictionary",
+    "shadowColor",
+    "appendCharacters:length:",
+    "computeMargin",
+    "lineWidthForType:",
+    "unregisterCallbackObserver:",
+    "initWithPatch:dataSource:",
+    NULL,
+    "positionOfGlyph:struckOverRect:metricsExist:",
+    "_refreshLinkedDevicesAttributeFromCallback",
+    "updateSearchHilight",
+    "createFTPReadStream",
+    "setMenuItem:",
+    "drawGroupsOverlays",
+    "cardsFromGroup",
+    "_addUpdatesToDatabaseOp:forManyToMany:",
+    "_moveInDirection:",
+    "dividerStyle",
+    "_layoutRightHandButtons",
+    "_oldStyleTypeNameForIdentifier:",
+    "childWithKey:",
+    "initWithKeyOptions:valueOptions:capacity:",
+    "windowEffectDidTerminate:",
+    "labelFontOfSize:",
+    "defaultClassPath",
+    NULL,
+    "hasTag:",
+    "currentFrameAsNSImage",
+    "dataWithBytesNoCopy:length:",
+    "datePickerStyle",
+    "indexSheetStatus",
+    "_setImpl:",
+    "copyDataToPasteboard:",
+    "sendEvent:",
+    "_allocateDatePickerCellExtraIvars",
+    "setManagedObjectClassName:",
+    "tintedImageWithColor:operation:",
+    "parentWillDie:",
+    "scrollerWidth",
+    "saveFrameUsingName:",
+    "_dirtyRect",
+    "configureForCanChooseFiles:",
+    "_startBatchWindowAccumulation:",
+    "setSimpleQueryString:withAdvancedQueryString:",
+    "storeNSBitmapImageRep:glID:offset:",
+    "_web_defaultsDidChange",
+    "focusImageAtIndex:",
+    "printingAdjustmentInLayoutManager:forNominallySpacedGlyphRange:packedGlyphs:count:",
+    "_responder",
+    NULL,
+    "viewWillMoveToSuperview:",
+    "_supportsMinAndMax",
+    "nts_FindMemberUID:inArray:",
+    "broadcast",
+    "_getTiffImage:ownedBy:",
+    "setNoDepthBuffer:",
+    "initWithOffset:",
+    "_blockClassForBlock:",
+    "_hasFocusRingInView:",
+    "configureForShowsPreviews:",
+    "_changeAllDrawersMainState",
+    NULL,
+    "associateSourceInstance:withDestinationInstance:forEntityMapping:",
+    "originalBodyStream",
+    "setCanGoNext:",
+    "supportedPixelBufferFormatsForManager:",
+    "setMipmapVMUsagePolicy:",
+    "slideshowSwitchToFullScreen:",
+    "hasChildNodes",
+    NULL,
+    NULL,
+    "indexOfSelectedItem",
+    "_setLiveResize:",
+    "_installAutoreleasePoolsOnCurrentThreadIfNecessary",
+    "menu:willHighlightItem:",
+    "deletePerson:",
+    NULL,
+    "_updateUserKEsAfterActivation:",
+    "initWithColorSpace:components:count:",
+    "addIndexes:",
+    "removeMipmapDataInfoWithUID:",
+    "dataRepresentation",
+    "_redisplay",
+    "fadeHUDIn",
+    "bindIntoRAMScheduleStep",
+    "_currentBorderIsTable",
+    NULL,
+    "cacheRetainCount",
+    "scheduleTrickleSyncRetry:",
+    "loadTidy",
+    "_turnOnVerticalScroller",
+    "mode",
+    "_transparency",
+    "_setFrame:updateBorderViewSize:",
+    "_preloadingEnded",
+    "dateYear",
+    "renderContext",
+    "initWithNodes:count:",
+    "invalidateAllCachedPropertyValues",
+    "subcacheMatchingMd5List:forIndices:count:",
+    "alwaysPresentsApplicationModalAlertsWithBinding:",
+    "updateInvalidatedFont:forObject:",
+    "imageCropView:keyDown:",
+    "outputFileURL",
+    "_addIndexedEntity:",
+    NULL,
+    NULL,
+    "setLegendVisible:",
+    "minimalParseCert:",
+    "initWithPreviousContext:",
+    "integrateReferenceInstance:",
+    NULL,
+    "_vCardKeyForGenericLabel:",
+    NULL,
+    "_isDocumentAddedToIPhoto:",
+    "usageInMovie",
+    "compare:options:range:",
+    "replaceSelectedPagesWithPageRange:drawNow:",
+    "faultHandler",
+    "entryViewForEntry:",
+    "allocForSQLEntity:",
+    "nts_ImportTipCards",
+    NULL,
+    "isDirectoryNode:",
+    "addErrorMessage:",
+    "_lookForDisplayBundles",
+    "drawCell:",
+    "titleWidth:",
+    "fileHandleWithStandardError",
+    NULL,
+    "_finishWritingFileAtPath:byTakingContentsFromFileAtPath:addingAttributes:usingTemporaryDirectoryAtPath:keepingBackupFile:error:",
+    "descriptorWithBoolean:",
+    "autoenablesItems",
+    "setSizeNeedsUpdate:",
+    "writeDateValue",
+    "CI_initWithRect:",
+    "_consistencyCheck:",
+    NULL,
+    "_hasTableWithName:",
+    "__finalize_QCPickerSelectionLayer",
+    "__oldnf_replaceFirstAppearanceOfString:withString:",
+    "removeAttribute:",
+    "ABIsAddressBook",
+    "setUpDataSources",
+    "maximumAvailableMemoryOfType:rendererID:",
+    "createPixelBufferFromProvider:withFormat:transformation:bounds:colorSpace:options:",
+    "setValue:type:forDimension:",
+    "filesystemItemRemoveOperation:shouldProceedAfterError:removingItemAtPath:",
+    "setRecursive:",
+    "setEndSubelementIdentifier:",
+    "_readFileListMode",
+    "selectedColorSpace",
+    "_bind:toController:withKeyPath:valueTransformerName:options:existingNibConnectors:connectorsToRemove:connectorsToAdd:",
+    "stretchImageHorizontalROI:forRect:userInfo:",
+    "dismissPopUp",
+    "_selectDownstream:",
+    "accessibilityPostNotification:withNotificationElement:",
+    "fileProperty",
+    "_selectCorrectScopeButton",
+    "horizontalLineScroll",
+    "_editParentGraph:",
+    "hackQueryForManyToManyPrefetching:andSourceObjectIDs:",
+    "drawBorderImage:middleImage:borderImage:inRect:withOrientation:flipped:",
+    "imageManagerDefaultOptions",
+    "userInfoForKey:",
+    "inputTopLine",
+    NULL,
+    NULL,
+    NULL,
+    "initWithPredicateOperator:leftKeyPath:rightKeyPath:",
+    "initPointersForResolutionData:",
+    "clearRecents:",
+    "_setQNamesAreResolved:",
+    "configureForInactiveState",
+    "mainOperation",
+    "_viewHandlesEvents",
+    "spellServer:didForgetWord:inLanguage:",
+    "people",
+    "redisplay",
+    "setAnimateCompositions:",
+    "serializeInt:atIndex:",
+    "_reestablishInternalCFCachedURLResponse:",
+    "_leftBezelToTitleOrImageHorizontalOffset",
+    "scaleUnitSquareToSize:",
+    "_setWindowNeedsDisplayInViewsDrawableRect",
+    "_replySequenceNumber:ok:",
+    "initWithColorSyncInfo:",
+    NULL,
+    "_relatedNodes",
+    NULL,
+    "selectDown",
+    "_calcMarginSize:operation:",
+    "fadeFromNormalToBlack:wait:",
+    "_baseString",
+    "modifyFontTrait:",
+    "setUpTrackingRects",
+    "_setDirection:",
+    "arrayByApplyingSelector:",
+    "setSpeakingSpeechFeedbackServices:",
+    NULL,
+    "_drawOptimizedRectFills",
+    "deserializeInts:count:atIndex:",
+    "setCity:",
+    "addNormalAppearanceWithStateToDictionaryRef:",
+    "_zeroScreenHeight",
+    "addOptionsToDictionaryRef:",
+    "_setDropHighilightColorIfSelected:",
+    "_getAttributesInNode:fromBuffer:listReference:count:includeValues:allowBinary:",
+    "newColor:",
+    "computeRowsCount",
+    "adjustAndDisplay:",
+    "_sizeToFitForUserColumnResize",
+    "_rangeOfPrefixFittingWidth:withAttributes:",
+    "initWithRanges:count:",
+    "windowDidChangeNumber:",
+    "cancelQueries:",
+    "uniqueProxyPortKeyFromName:",
+    "typeCodeValue",
+    "readFromFile:ofType:",
+    "countByEnumeratingWithState:objects:count:",
+    "_initializeICUStructuresWithLocale:andOptions:",
+    NULL,
+    "textureFlipped",
+    "setDirectoriesSubrowDelegate:",
+    NULL,
+    "_storeTypeForStore:",
+    "_hasSourceListBackground",
+    "_initWithSourceEntityDescription:destinationEntityDescription:",
+    "_getITypeFor:",
+    "_requestEditableState:",
+    "accessibilityShouldUseUniqueId",
+    "deleteForward:",
+    "_registerUndoForModifiedObjects:",
+    "cellPrototype",
+    "qcComposition",
+    "indexOfMember:inSortedMembers:",
+    "_fillInBlock:forElement:backgroundColor:extraMargin:extraPadding:isTable:",
+    "_runGarbageCollection",
+    "accessibilitySelectedAttribute",
+    "newCreatePrimaryKeyTableStatement",
+    "_members",
+    NULL,
+    "setAutoAdaptDuration:",
+    "_canCreateCollapsedSpecifierFromAbsolutePositionRecord:",
+    "setupTooltipViewForPoint:inNode:bounds:tooltipBounds:",
+    "_handleKeyEquivalent:",
+    "initOffScreenWithPixelFormat:size:colorSpace:patch:",
+    "sharedSyncManager",
+    "standaloneMonthSymbols",
+    "removeBinding:fromObject:",
+    "isMainWindow",
+    "setSubitems:",
+    "convertPoint:fromPage:",
+    "customAttributes",
+    NULL,
+    "writePaneGeometryToDefaults",
+    "isMemberOfClass:",
+    "maximumRecentDocumentCount",
+    "textObjectToSearchIn",
+    "displayedProperty",
+    "acquireLock:lockMode:",
+    "operationHasEnded:",
+    "initWithCarbonWindowRef:takingOwnership:disableOrdering:forNSViewHosting:",
+    "page",
+    "initWithClassDescription:",
+    "_oldFontSetWithName:",
+    "hudFadeInTimerElapsed:",
+    "cracklibDictionarylocation",
+    "_setTimelineColor:",
+    "observedNodesSet",
+    "hideToolbar:",
+    "_initWithDestinationName:valueExpression:",
+    "_dataEnciphermentUsage",
+    "indexPathFromSelectionInBrowser:upToColumn:",
+    "boundsForSelectedPages",
+    "initWithDefaults:initialValues:",
+    "setSelectionFromGUIDs:",
+    "addControlPointAtTime:withValue:",
+    "_undoableSetEffectsWithDisplay:",
+    "_resizeCursorForTableColumn:",
+    "colorUsingColorSpaceName:device:",
+    "_keyPathIfAffectedByValueForKey:exactMatch:",
+    "recalcOutsideShadow:forResolutionData:",
+    "_delegateDoesNotCreateRowsInMatrix",
+    "endDisplayAndComplete:",
+    "scrollPoint:fromView:",
+    "cellIndexAtPosition:",
+    "_resizedTargetImageRect:",
+    "_updateWindowFrame:",
+    "_controlColor",
+    "_setContextMenuTarget:",
+    "stopLiveCapture",
+    "_saveFrameUsingName:domain:",
+    "_titleToBezelOrIndicatorPadding",
+    "_drawMatrix",
+    "setScrollsDynamically:",
+    NULL,
+    "_prepareSynchronizationOfEditedFieldForColumnWidthChange",
+    "_addColumnWithIdentifier:title:dataCell:sortable:",
+    "_availableFontFamiliesForCollectionName:",
+    "removeObjectsFromIndices:numIndices:",
+    "_setAcceptsFirstResponder:",
+    "_validateValue:forKeyPath:ofObjectAtIndexPath:error:",
+    "_currentPoint",
+    "__oldnf_decimalIsNotANumber:",
+    "undoManagerForOperation:",
+    "timeSlider:didClickOnButtonWithTag:",
+    "allocWithEntity:",
+    "clipRect:",
+    "representedObject",
+    NULL,
+    "_pointFromColor:",
+    "exportCurrentItemToiPhoto",
+    "_buildSupportUnitsForVideoInputConnection:error:",
+    "isCDATA",
+    "needsAction",
+    "animationManager",
+    "writeBackgroundColor",
+    "depthLimit",
+    "registerPixelFormat:",
+    NULL,
+    "_setUndoManager:",
+    "_deleteNodeFromEntityCache:",
+    "keyframeStartTime:",
+    "fileModificationDate",
+    "setSizeMode:",
+    "initWithContainerClassDescription:containerSpecifier:key:name:",
+    "_updateKnownNotVisibleAppleMenu:",
+    "rulerView:handleMouseDown:",
+    "buildAlertStyle:title:message:first:second:third:oldStyle:args:",
+    "setSubrowSelection:",
+    "reply",
+    "rootDocument",
+    "initWithTransform:",
+    NULL,
+    "isOrScoped",
+    "_allocAuxiliary:",
+    "movie:shouldChangeController:",
+    NULL,
+    "_resolveTypeAlias:",
+    "colorWithDeviceHue:saturation:brightness:alpha:",
+    "initWithImageProvider:size::format:colorSpace:options:",
+    "_endCustomizationPalette:",
+    "metadataForPersistentStoreOfType:URL:error:",
+    "_disableChangeSync",
+    "drawAtPoint:",
+    "setButton:enabled:",
+    "windowFrameOutlineColor",
+    "_itemMenuInPaletteForEvent:",
+    "objectDidTriggerDoubleClickAction:",
+    "_updateDragInsertionIndicatorWith:",
+    "setJavaScriptCanOpenWindowsAutomatically:",
+    "_toolbarView",
+    "cacheFaultingStatement:",
+    "_writeDocumentProperty:value:toString:",
+    "registerForHardwareNotification",
+    "_collapseRootEntry:clearExpandState:",
+    "_invalidateGroupRowsIfNeeded",
+    "cellMargin",
+    "startImportVisibleCells",
+    "pointerAtIndex:",
+    "subsampling",
+    "targetHref",
+    "object",
+    NULL,
+    NULL,
+    NULL,
+    "cellFont",
+    "_web_parseRFC822HeaderFields",
+    "_getOriginalNSImageWithOriginalData",
+    "dispatchInstructions",
+    "_needsToRemoveFieldEditor",
+    NULL,
+    "doBilateralPass:points:weights:sums:slope:",
+    "initWithDir:",
+    "updateUI",
+    "_emailProtectionUsage",
+    "_calculateSelectedSegmentForPoint:",
+    NULL,
+    "_getPassword:",
+    "pushActiveListAnalyzer:",
+    "_textFont",
+    "_markerForMarkerFormat:itemNumber:isNumbered:substitutionStart:end:specifierStart:end:",
+    "setUseCleanAperture:",
+    "canExportToApplication:",
+    "initWithAssignmentVariable:expression:",
+    "setDrawsGrid:",
+    "setAppliesImmediately:",
+    "setInsertedObjects:",
+    "setDataCallback:",
+    NULL,
+    "_setAdditionalThingsFromEvent:",
+    "fullTitle",
+    "fontDescriptorByAddingAttributes:",
+    NULL,
+    "_readFromFileWrapper:ofType:",
+    "netServiceBrowser:didRemoveService:moreComing:",
+    "addLast:",
+    "frameDidChange:",
+    "_hiddenStateWithMode:",
+    "changeFieldLabel:",
+    "sourcePosition",
+    "setTopMargin:",
+    "splitterFrame",
+    NULL,
+    "dataSourceIndex",
+    "selectedColor",
+    "removeInfoForKey:",
+    "setLineFragmentPadding:",
+    "addToWindow:flags:",
+    "setAnimationDuration:",
+    "_separatorRectForInactiveWindow",
+    "defaultPortNameServer",
+    "_removePrivateAttributes",
+    "defaultAnimationForKey:",
+    NULL,
+    "plugInClassIsValid:",
+    "initWithCGLayer:options:",
+    "_restoreLevelAfterRunningModal",
+    "eventQueue",
+    "databaseWasReset:",
+    "_writeSelectionToState:fromPoint:",
+    NULL,
+    "managedObjectContext",
+    "removeFileAtURL:andReturnResultCode:",
+    "selectedDirectoryResultsSubrows",
+    "globalID",
+    "resizeByMovingKnob:toPoint:",
+    "filename",
+    "_endWiringNibConnections",
+    "_resolvedDecompressionOptionsForInputConnection:alsoRequiresDeviceNative:",
+    "_syncScrollerSizeOfColumn:",
+    "reloadMembers",
+    "initWithLimit:inScope:",
+    "intersectWith:",
+    "applyInContext:",
+    "__setTimeBase:",
+    "lock",
+    "invalidateCacheSinceIndex:",
+    "_determineIsSameTargetForDragInfo:",
+    "attachPopUpWithFrame:inView:",
+    "descendantNodeAtIndexPath:",
+    "getDrawingTransformForBox:",
+    "setWhiteBackground:",
+    "_loadFontFiles",
+    "raise:toPower:",
+    "_bitmapImageRepFromArbitraryImageRep:pixelsWide:pixelsHigh:",
+    "_setDNSName:",
+    "_windowTitlebarXResizeBorderThickness",
+    "pageNumber",
+    "updateTrackingAreas",
+    "originalPort",
+    "initWithDecimal:",
+    "setBackgroundColor:",
+    "expectedContentLength",
+    "_bottomCornerSize",
+    "_setInt:ifNoAttributeForKey:",
+    "tokenFieldCell:shouldUseDrawingAttributes:forRepresentedObject:",
+    "rulerAccessoryViewForTextView:paragraphStyle:ruler:enabled:",
+    "_validateError:forPresentationMethod:",
+    "_recentDocumentRecordsKeyForMenuTag:",
+    "shouldBeginDrag:",
+    "addRemoveOperationWithIndex:",
+    "outlookWebAccessServer",
+    "_buttonsRect",
+    "setZoom:",
+    "addItemWithTitle:andIdentifier:",
+    "didPostNotificationForNodeEventKind:notification:",
+    "setCriteria:andDisplayValues:forRowAtIndex:",
+    "_lockButtonOrigin",
+    "IKIPImageWithMaxSize:",
+    "_thumbnailWithSize:antialiased:qualityRequested:qualityProduced:",
+    "updateFormData",
+    "presentableNameForName:",
+    NULL,
+    "_cgsEventTime",
+    "_updateButtonsWithReadOnly:",
+    "MIMEType",
+    "grabFocusIfNeeded",
+    "_sortedSubentities",
+    "accessibilityMainAttribute",
+    "expressionWithFormat:arguments:",
+    "isInPriorityList",
+    "lineFragmentRectForProposedRect:remainingRect:",
+    "pointSize",
+    "_addPeople:usingAddressBook:",
+    "isWordInUserDictionaries:caseSensitive:",
+    "selectionIndexPaths",
+    "applicationShouldOpenUntitledFile:",
+    "_rowCacheForIndex:",
+    "invalidXMLCharacterSet",
+    "setRoundedEdges:",
+    NULL,
+    "_saveCollections",
+    "noteDirectoriesSelectionChanged",
+    "_uniqueNameForNewSubdocument:",
+    "setOnOpenGLContext:unit:",
+    "_undoUpdates:",
+    "_recursiveGenerateFormattingDictionaryPlistForItem:rowType:intoArray:withPriorValues:hasSiblings:",
+    "addElement:",
+    "inverseToOne",
+    "_convertRange:toPosition:",
+    "takeColorSpaceFrom:",
+    "_configureCell:forItemAtIndex:",
+    "setRunLoopModes:",
+    "setClassName:",
+    "_useSquareToolbarSelectionHighlight",
+    NULL,
+    "addBindVariable:",
+    "_forceSetLastEditedStringValue:",
+    NULL,
+    "_setKeyAgreementUsage:",
+    "paragraphCharacterRange",
+    "sendBeforeTime:streamData:components:from:msgid:",
+    "externalName",
+    "updateDisplayedViewWithTransition:",
+    NULL,
+    "scanString:intoString:",
+    NULL,
+    "_totalTabsLength:overlap:",
+    NULL,
+    "maxFormattedDisplayLabelWidth",
+    "setSupermenu:",
+    "handleGoIntoSelectedDirectory",
+    "setIndices:",
+    "computeInterpolatedResolution:data:",
+    "formatWidth",
+    "iconForFiles:",
+    "URL:resourceDataDidBecomeAvailable:",
+    "saveState:",
+    "drawColor:",
+    NULL,
+    "memberOfInputExtent:",
+    "privateSliderDidChanged:",
+    "_image",
+    "_propertyDescriptionsOfClass:fromImplDeclarations:presoDeclarations:suiteName:className:",
+    "enterFullscreen:",
+    "_enableChangeSync",
+    "_setModalInCache:forWindow:",
+    "systemCharacterProperties",
+    "_rowHeaderColumn",
+    "_setLayerTreeRenderer:",
+    "_infoSession",
+    "_imageNamed:",
+    "IKAccelerationCoefiscient",
+    "stringByAppendingPathExtension:",
+    "credentialWithKeychainItem:",
+    "initWithValue:label:property:addressBook:",
+    "changeFont:",
+    NULL,
+    "_fillToken:withString:position:",
+    "tokenFieldCell:completionsForSubstring:indexOfToken:indexOfSelectedItem:",
+    "addGroupView",
+    "sharedTracer",
+    "matchingFontDescriptorWithMandatoryKeys:",
+    "_sendCarbonNotificationFor:tags:withValuePtrs:andSizes:",
+    "_updateDetailLevelWidths",
+    "deviceSystem",
+    "eMapResultForMaterial:",
+    "displayedURL",
+    "preferencesNibName",
+    "filterGeneratorWithContentsOfURL:",
+    "_rulerOrigin",
+    "readTimeOut",
+    "ABBogus:",
+    "bitmapImageRepForCachingDisplayInRect:",
+    "_updateLayerMasksToBoundsFromView",
+    "screenRectForResource",
+    "canAddField:",
+    "_endScrolling",
+    "convertImageRectToViewRect:",
+    "initWithCharacterIdentifier:collection:baseString:",
+    "_installRulerAccViewForParagraphStyle:ruler:enabled:",
+    "nts_ReopenDatabaseForAddressBook:",
+    "_checkDisplayDelegate:",
+    "_setShadowParameters",
+    "_setKeyFrameEditor:",
+    "directoryListQuery",
+    "attachment",
+    "_enable",
+    "setIsUp:",
+    "_currentSuiteName",
+    "qualityChanged:",
+    "setPreviousText:",
+    "initWithImage:hotSpot:",
+    "_resetImage",
+    "sendBeforeDate:msgid:components:from:reserved:",
+    "setSelectedRanges:affinity:stillSelecting:",
+    "contentRectForBounds:",
+    "_accessibilityUIElementPathForChild:",
+    "compositionRenderer",
+    "trackingArea",
+    "getCString:maxLength:encoding:",
+    "lightPaperBackgroundUsingTexture:",
+    "_NSNavFilePropertyCompare:",
+    "hyphenGlyphForLanguage:",
+    "_fillGrayRect:with:",
+    "_removeOrRename:",
+    "_validateForSave:",
+    "transformFromRect:windowWidth:windowHeight:",
+    "_doUpdate:",
+    "magentaComponent",
+    "_raiseIfInvalidURL:",
+    "setDocument:",
+    "boundingBoxForControlGlyphAtIndex:forTextContainer:proposedLineFragment:glyphPosition:characterIndex:",
+    NULL,
+    "_currentChildOperation",
+    "setSelectedItemsReordering:",
+    "removeObservedKey:",
+    "__ivar_getTrackingCell",
+    "initWithMutableData:forDebugging:languageEncoding:nameEncoding:textProc:errorProc:",
+    "_postQueryStartedNotification",
+    "_editClickedCell:",
+    NULL,
+    "numberOfVisibleItems",
+    "levelsOfDetail",
+    "toolbarItemClicked:",
+    "pointingDeviceID",
+    "ISS__ay_performSelector:withObject:withObject:inThread:",
+    "showPools",
+    "issueChangePropertiesCommand",
+    "_newLineForElement:",
+    "_fetchConfigsWithURL:",
+    "_resetErrorInfo",
+    "_flushCurrentDocument",
+    "setPanTiltSpeed:",
+    "isMainThread",
+    "info",
+    "_parseHalf:intoArray:isValue:errorDescription:",
+    "noteMembersListChanged",
+    "startingColumn",
+    "setLastColumn:",
+    "fontDescriptorWithFace:",
+    "note",
+    "_imagesHaveAlpha",
+    "cyanComponent",
+    "_setSingleValue:forKeyPath:",
+    "isListChoice",
+    "updateCurGlyphOffset",
+    "deserializePList:",
+    "isGreaterThanOrEqualTo:",
+    "dragImage:fromWindow:at:offset:event:pasteboard:source:slideBack:",
+    "setIsContainer:",
+    "supportedRenderFormatsForContext:",
+    "_forKey:getType:andSuite:",
+    "sendAppleEventSetup:",
+    "_addOption:",
+    "_ensureSubviewNextKeyViewsAreSubviews",
+    "drawOverlayRect:",
+    "_loadFromDOMRange",
+    "setAlwaysPresentsApplicationModalAlerts:",
+    "nts_Save",
+    "_nameWithRequiredExtensionCheck:",
+    "uniqueMembersInSelectedGroups",
+    "imageScaling",
+    "_createLayer",
+    "draggingPasteboard",
+    "scrollSelectionToView",
+    "searchElementForConjunction:children:",
+    "defaultDepthLimit",
+    "_windowTitlebarYResizeBorderThickness",
+    "_abCompareWithinIntervalAroundTodayYearless:",
+    "_initWithObservances:count:",
+    "_windowBorderGradientFromGrayValue:toGrayValue:colorSpace:",
+    "decomposedStringWithCanonicalMapping",
+    "removeObjectsAtArrangedObjectIndexes:",
+    "setLongitude:latitude:",
+    "_startServer",
+    NULL,
+    "reservedSpaceLength",
+    "_focusRingVisibleRect",
+    "_doStopDrawer",
+    "getLineFragmentInsertionPointArraysForCharacterAtIndex:inDisplayOrder:positions:characterIndexes:count:alternatePositions:characterIndexes:count:",
+    "_findInCacheMapWithRadius:strokeColor:fillColor:mode:lineWidth:",
+    "childNodes",
+    "noteGroupsListChanged",
+    "standardWindowButton:",
+    "setScriptErrorNumber:",
+    "updateComponentState",
+    "_updateRulerlineForRuler:oldPosition:newPosition:vertical:",
+    "_registerUnitWithName:abbreviation:unitToPointsConversionFactor:stepUpCycle:stepDownCycle:",
+    "exit",
+    "_wasReshapingEnabled",
+    "backgroundComposition",
+    "unsuppressAllNotifications",
+    "setVCardField:isPrivate:",
+    "addIMValueTo:",
+    "_disable",
+    "entityNamed:",
+    "selectedTag",
+    "isItemShownInPopupIfSoleEntry:",
+    "bestPixelFormatWithCompatibility:forProvider:usingColorSpace:",
+    "_setNeedsDisplayInRect:",
+    "setAttributes:Values:ValueSizes:Count:",
+    NULL,
+    "suiteDescriptionFromPropertyListDeclaration:bundle:",
+    "pathsForResourcesOfType:inDirectory:forLocalization:",
+    "registerLayerWithView:",
+    "_ikMainThreadInvoke",
+    "rootLayer",
+    "_resizeSelectedTabViewItem",
+    "_targetAndArgumentsAcceptableForMode:",
+    "drawFragmentationInRect:fromPosition:andLength:",
+    NULL,
+    "startPrefetchThumbnails",
+    "_isEventInContentView:",
+    "elementAt:",
+    "masterTemplateHasChanged:",
+    "performFindPanelAction:forClient:",
+    "_initWithCGEvent:eventRef:",
+    "_resizeDeltaFromPoint:toEvent:",
+    "nts_PopulateWithDictionary:includeCoreProperties:addressBook:",
+    "returnDisconnectedBindingsOfObject:",
+    "_recursiveEnsureSubviewNextKeyViewsAreSubviewsOf:",
+    "setValueWraps:",
+    "initWithNodeClass:",
+    "setDeadKeyProcessingEnabled:",
+    "URLWithString:relativeToURL:",
+    "getMaximumAscender:minimumDescender:",
+    "_lastKeyView",
+    "_removeProperty:",
+    "setIsRuleGrouping:",
+    "enforceParameter:interpolatedValue:",
+    NULL,
+    "_dynamicToolTipManagerClass",
+    "portClassFromParameterInfo:",
+    "setSyncState:keychain:",
+    "installGRLPerformCallbacks",
+    "isReferenceToReferenceFile",
+    "addItemWithRecentPicture:",
+    NULL,
+    "bindTextureToContext:textureUnit:applyMatrix:savedState:",
+    "setCalculationMode:",
+    "invalidateCachedDrawingImage",
+    "_suspendLoading",
+    "_startLiveResizeCacheOK:",
+    "wrapperWithValue:",
+    "_removeObserver:forProperty:",
+    "subpaths",
+    "setRelationshipKeyPathsForPrefetching:",
+    "initWithView:className:",
+    "_updateURLsToCache",
+    "_coreUIDrawTab:withState:inRect:",
+    "familyName",
+    "menuFontOfSize:",
+    "_fixHeaderAndCornerViews",
+    "allBundles:",
+    "updateGroups",
+    "relatedIDsForKey:",
+    NULL,
+    "insertContainerBreak:",
+    "_modelAndProxyKeys",
+    "gotoPreviousSelectionPoint:",
+    "_expandRep:expandImageContentNow:",
+    "expressionForVariable:",
+    "removeObjectForKey:",
+    "setNestingMode:",
+    NULL,
+    "importVisibleCellsProgress",
+    "_parseCharacterAttributes",
+    NULL,
+    "inputBottomLineParams",
+    "_finalizeStatement",
+    "layerAtLocation:",
+    "setURLs:currentIndex:preservingDisplayState:",
+    "image",
+    "hasBackingStore",
+    "_suggestGuessesForWord:inLanguage:",
+    "_menuFormRepresentationChanged",
+    "balance",
+    "graphViewClass",
+    "windowWillReturnUndoManager:",
+    "abWords",
+    "_keyListForKeyNode:",
+    "_blockRowRangeForGlyphRange:",
+    "textBlocks",
+    "principalClass",
+    "nonSelectedColor",
+    "_invalidateLayoutForExtendedCharacterRange:isSoft:",
+    "maxValueForControlType:keyFrame:",
+    NULL,
+    NULL,
+    "_setCtrlAltForHelpDesired:",
+    "searchElement",
+    "orderFrontRegardless",
+    "_updateForEditedMovie:",
+    "_surfaceNeedsUpdate:",
+    "becomeMainWindow",
+    "indexOfMipmapItem:",
+    "newGroup:",
+    "pixelFormatRGBA16",
+    "connectionWithRegisteredName:host:usingNameServer:",
+    "_createCGImage:format:colorSpace:matrix:bounds:",
+    "calculateRowsAndColumnsForBlankSize:frameSize:",
+    "_validSize:force:",
+    NULL,
+    "documentPreviewViewForPreview:forView:forcedPreviewType:",
+    "preprocessorColor",
+    "_attributesAreEqualToAttributesInAttributedString:",
+    "processKeyword:option:keyTran:arg:argTran:quotedArg:",
+    "_allowedTypesFromSavePanelType",
+    "keyboardFocusIndicatorColor",
+    "_dataSource",
+    "closeWindowForPerson:",
+    "_usingToolbarShowHideWeightingOptimization",
+    "setTypingAttributes:",
+    "initWithLayer:",
+    "runSlideshowWithDataSource:inMode:options:",
+    "addMember:",
+    "conjoinedElementForProperties:value:withComparison:",
+    "stringColor",
+    "removeSubgroup:",
+    "_crackPoint:",
+    "removeFromContext:",
+    "_printSession",
+    "croppedImage",
+    "_pkinitServerAuthUsage",
+    "searchScopeDisplayName",
+    "_setCertAuthorityCertSigning:",
+    "setCaption:",
+    "pathForImageResource:",
+    "_hasDarkShadow",
+    "selectionForRect:",
+    "setNeedsResyncWithDefaultVoice:",
+    "truncationMode",
+    "drawSpellingUnderlineForGlyphRange:spellingState:inGlyphRange:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:",
+    "_setSinglePage:",
+    NULL,
+    "_bulletCharacter",
+    "conversationIdentifier",
+    "itemsForSearchString:withPartialResults:",
+    NULL,
+    "primaryKeys",
+    "sharedImageEditView",
+    "_setHighlightedRowsFromNodes:maintainFirstVisibleRow:",
+    "_enlargeVertically:",
+    "_keyboardUIActionForEvent:",
+    NULL,
+    "sortSubviewsUsingFunction:context:",
+    "removeTimer:forMode:",
+    "isFloatingPanel",
+    "contentSizeOfGrid:",
+    "_sendQueuedAction",
+    "setInformativeText:",
+    "suffix",
+    "_commonInitState",
+    "setDragHighlight:",
+    "_unregisterWindowNotifications",
+    "accessibilityDecodeOverriddenAttributes:",
+    "recentMenu",
+    NULL,
+    "alignCenter:",
+    "URLFromPasteboard:",
+    "setScope:",
+    "commit",
+    NULL,
+    "mediaDataReferenceEnumerator",
+    "_handleKeyUp:inNode:",
+    "cacheDisplayInRect:toBitmapImageRep:",
+    "_defaultTableHeaderReverseSortImage",
+    NULL,
+    "memberOfInputBottomLineParams:",
+    "updateTableColumnDataCell:forDisplayAtIndex:",
+    "setDisplaysWhenScreenProfileChanges:",
+    NULL,
+    "CI_affineTransform",
+    "positionOfGlyph:forLongCharacter:struckOverRect:",
+    "initWithStream:",
+    "clearFilterCache",
+    NULL,
+    "predicateName",
+    "initWithRegistryClass:andObjectClass:",
+    "_provideAllPromisedData:",
+    "_stopCacheTimeOutTimerIfNeeded",
+    "fileNameExtensionWasHiddenInLastRunSavePanel",
+    "_gradientImage",
+    "setDocumentView:",
+    "_selectableToolbarViews",
+    "initWithUIController:group:",
+    "selectNext:",
+    "containsTimer:forMode:",
+    "netServiceBrowser:didNotSearch:",
+    "copyIcon",
+    "languageChoices",
+    "initWithController:dataSource:",
+    "_singleValueForKey:",
+    "slideshowPlayStopped:",
+    "_doBidiProcessing",
+    "createCGImage:format:",
+    "_grestore",
+    "convertPointToBase:",
+    "serverFieldValue",
+    "activateIgnoringOtherApps:",
+    NULL,
+    "updateGrids",
+    "endDocument",
+    "_addKeyPathsFromPredicate:toSet:",
+    "_certificates",
+    "instantiateNibWithExternalNameTable:",
+    "glyphRangeForBoundingRect:inTextContainer:",
+    "glyphIndexForCharacterAtIndex:",
+    "_adjustSubviewsIfNecessary",
+    "nts_shouldUpdateDateRelatedSmartGroups",
+    "initWithObservedNode:",
+    "ISS__ay_performSelector:inThread:beforeDate:",
+    "_captureVisibleIntoImageCache",
+    "getNewIDForObject:",
+    "supportedPreviewTypes",
+    "performClick:",
+    "download:didReceiveAuthenticationChallenge:",
+    "containerSize",
+    "defaultsDictionary",
+    "_displaySomeWindowsIfNeeded:",
+    NULL,
+    "setAllowsDragging:",
+    "_registerToolbarInstance:",
+    "runModalPageLayoutWithPrintInfo:delegate:didRunSelector:contextInfo:",
+    NULL,
+    "evaluateWithObject:",
+    "_recursiveOrderOutSurfacesForHiddenViews",
+    "_applyAttributes:",
+    "_lightGrayRGBColor",
+    "maxTimeForControlType:keyFrame:inTimeLine:",
+    "isMakeHistoryEnabled",
+    "committedValuesForKeys:",
+    "setUsesArrowStyle:",
+    "_ignoringScrolling",
+    "valueWithPointer:",
+    "setDisplaysMarkupAnnotations:",
+    "isEditable",
+    "_createTextureBufferFromImageBuffer:target:bounds:needsClipping:flippedState:options:",
+    "_proceedGivenDBInfo:",
+    "extractSearchableAttributesFromResource:",
+    NULL,
+    "canCycle",
+    "drawAtPoint:inContext:",
+    "colorWithCalibratedHue:saturation:brightness:alpha:",
+    "_validateStrikethrough:",
+    "setReturnValue:",
+    "_setTopLevelObjects:",
+    "setShadowOpacity:",
+    "_setPreviousToolbarSizeAndDisplayMode:",
+    "_freeRef:",
+    "addFileWrapper:",
+    "_shortNameFor:",
+    "stringByReplacingOccurrencesOfString:withString:options:range:",
+    "_choosePart:",
+    "selector",
+    "persistenceStore",
+    "imageBrowser:getFreeFormLayoutAtIndex:position:scaleFactor:",
+    "writeToFile:ofType:",
+    "valueForKey:",
+    "_fullCacheUpdate",
+    "setQueuePriority:",
+    "_contextAuxiliary",
+    "activeSegment",
+    "saveConfigurationUsingName:",
+    "unsetOnOpenGLContext:",
+    "isSymbolicLink",
+    "supportedWindowDepths",
+    "configureForAllowsExpandingMultipleDirectories:",
+    "cancelPerformSelectorsWithTarget:",
+    "imageView",
+    "setModel:",
+    "_updateTooltip",
+    "aliasesByName",
+    "addStateGRL:",
+    "_resetDragMargins",
+    NULL,
+    "fulfillFault:withContext:",
+    NULL,
+    "_createLayerTreeRenderer",
+    "createAndCacheRowHeightSumsIfNecessary",
+    "setAllowsImageEditing:",
+    NULL,
+    "numberOfVisibleCols",
+    "editSelectedGroupWithUndo:",
+    "_makeAllCollectionsNonEditable",
+    "_initFlippableViewCacheLock",
+    "addActionToDictionaryRef:",
+    "_fileModificationDate",
+    "_cflastIndexOfObject:inRange:",
+    NULL,
+    "updateExtensions",
+    "attributesAtPath:traverseLink:",
+    "canSelectNext",
+    "_keyViewFollowingModalButtons",
+    "cgColor",
+    "applyAuthToRequest:",
+    "getThumbnail:",
+    "writeAlignedDataSize:",
+    "documentPreviewURL",
+    "getWhitePointVectorsR:g:b:",
+    "valueForKeyFrame:controlType:inTimeLine:",
+    "_disableEnablingKeyEquivalentForDefaultButtonCell",
+    "setPropertyMappings:",
+    "_cf2nsCookies:",
+    "_lockForReading",
+    NULL,
+    "_smallestEncodingInCFStringEncoding",
+    "objectWithUID:withResolution:withKey:",
+    "requestStreamForTransmission",
+    "accessibilitySelectedTextAttribute",
+    "isOneway",
+    "setOnMouseExited:",
+    NULL,
+    "_setMenuName:",
+    "_aquaScrollerVariantChanged:",
+    "trackingMode",
+    "_binderWithClass:withBinders:createAutoreleasedInstanceIfNotFound:",
+    "sendCancelToOwner",
+    "_calcScrollArrowHeight",
+    "startFreeTemporaryCache",
+    "_displayedView",
+    "setSeed:",
+    "_removeFromGroups:",
+    "isLinearX0:y0:x1:y1:x2:y2:",
+    "isDRMAuthorized",
+    "setDataCell:",
+    "sharedHeartBeat",
+    "_zeroPinnedResizeColumnsBySharingDelta:lastSharingColumn:resizeInfo:",
+    "_coreUISize:",
+    "multiStatusRequestWithURL:method:responseClass:",
+    "_sizeHorizontallyToFit",
+    "_beginSrcDragItemWithEvent:",
+    "togglePageMembershipInSelectedPages:drawNow:",
+    "layoutRectForTextBlock:glyphRange:",
+    "postOperation",
+    NULL,
+    "_setSound:",
+    "setMenuItemIndex:",
+    "_underlineStyleForArgument:",
+    "_sharedDateFormatter",
+    "setBitmap:rowBytes:bounds:format:",
+    "_dataFromBase64String:",
+    "removePersistentStore:error:",
+    "_keySegment",
+    NULL,
+    "changedValues",
+    "versionString",
+    "keyAtIndex:",
+    "_addCurrentDirectoryToRecentPlaces",
+    NULL,
+    "_imageRepsWithContentsOfFile:expandImageContentNow:",
+    "imageBrowserSelectionDidChange:",
+    "targetForAction:",
+    "itemTitleAtIndex:",
+    "positivePrefix",
+    "selectionShouldChangeInTableView:",
+    "viewForName:",
+    "_contentsOfHTMLData:encoding:strippingTagsSeparatedByString:",
+    "_validateCarbonCatalogInfo",
+    "_stopObservingSelectionIfNecessary",
+    "rotationAngle",
+    "nextPK64",
+    "_calibratedColorOK",
+    "setResourcePool:",
+    "_rawKeyEquivalent",
+    "delete:",
+    "requestIsCacheEquivalent:toRequest:",
+    NULL,
+    "playerViewWithFrame:forRepresentationInstance:forCell:",
+    "previewRange",
+    "_allowAnimated_setFrameCenterRotation:",
+    "setShowsFullscreenButton:",
+    "insertItem:atIndex:",
+    "initWithGlyphIndex:characterRange:",
+    "setMaximumFrameRate:",
+    "_providerThread:",
+    "blueControlTintColor",
+    "usedSpace",
+    "validateVisibleColumns",
+    "setMinimumSignificantDigits:",
+    NULL,
+    "ISS_classicPortForScheme:",
+    "deserializeIntAtIndex:",
+    "_setFontPanel:",
+    "rowHeightForRow:",
+    "waitForDataInBackgroundAndNotifyForModes:",
+    "_contentToFrameMaxXWidth",
+    "_rulerline::last:",
+    "updateColorOptionsUI",
+    "_type",
+    "pdfView",
+    "setImage:imageProperties:",
+    "_blockRowRangeForCharRange:",
+    "keyBackPointer",
+    "currentDirectory",
+    "expired",
+    "_setResourceForkReferenceNumber:",
+    "_addToGroups:ordered:",
+    "initWithImage:options:",
+    "lockDirectoryPath",
+    "urlAddresses",
+    NULL,
+    "_resetDisableCounts",
+    "_keyEquivalentVirtualKeyCode",
+    "attributedCertificateName:showsIssuer:selected:prefix:",
+    "setRows:",
+    "_drawOverlayRectSet:",
+    "_goneMultiThreaded",
+    "theaterStatus",
+    "localizedNameForFilterName:",
+    "drawAtPoint:withAttributes:",
+    "_clearPressedButtons",
+    "setInkListFromArray:",
+    "pageDownAndModifySelection:",
+    "controlFromPoint:",
+    "addressBookDatabaseFile",
+    "initWithProperty:withPopup:",
+    "setUserSpaceScaleFactor:",
+    "_popURLToCacheWithRequestIndex:",
+    "getPath",
+    "animationForKeyPath:",
+    "_makeTable:inNode:",
+    "firstName",
+    "dateWithTimeIntervalSince1970:",
+    NULL,
+    "isDownloading",
+    "setCursorForAreaOfInterest:",
+    "instantiateNodeWithName:",
+    "_adjustMinContentSizeForMinFrameSize:",
+    "takeStoredValuesFromDictionary:",
+    "_willPowerOff",
+    "setShowsHelp:",
+    "abArrayCombinedWithArray:",
+    "IKIPFrame:constrainedToScreen:",
+    "setFrameCount:",
+    "indentationMarkerFollowsCell",
+    "menuForEventDelegate:",
+    "addFilterToRegistry:properties:",
+    "runLoopModesForAnimating",
+    "_focusRingCGColor",
+    "_iLifeMediaBrowserFrameworkInstalled",
+    "setAttributeType:",
+    "saveGraphicsState",
+    "__delete:context:",
+    "setDraggingSourceOperationMask:forLocal:",
+    "setFlavor:",
+    "setSelectionFromDroppedNode:selectionHelper:",
+    "_isSidebarCollapsed",
+    "baseWindowWillClose:",
+    "vendorPointerType",
+    "locationForSubmenu:",
+    "destroyContext",
+    "initWithFilter:connectionID:",
+    "parseContentsOfURL:",
+    "attachToAudioMixerNode:element:scope:isReadOnly:",
+    "setBoundsRotation:",
+    "_performDragForSlice:withEvent:",
+    NULL,
+    "initWithIndex:parent:",
+    "indexOfItemContainingDataSource:inArray:arrayIsIndexed:newIndexIs:uidToIndexCache:",
+    "_distributeAvailableSpaceIfNecessary:toFlexibleSizedItems:lastItemIsRightAligned:",
+    "addAnnotationControl:",
+    "activateNextAnnotation:",
+    "resizeComponents",
+    "isEditingAtIndex:withObject:",
+    "startRunning",
+    "controlPointsCount",
+    "titleRect",
+    "writeToFile:error:",
+    "canInsert",
+    NULL,
+    "dockTile",
+    NULL,
+    "_isImageCache",
+    "_getInputRampParams",
+    "toggleRuler:",
+    "_outlineAction:",
+    "_forcesLeadingZeroes",
+    "currentDestination",
+    "pixelFormatRGBh",
+    "addFullScreenButton",
+    "setIsActive:",
+    "_setArrowsConfig:",
+    "parentCrayonView",
+    "_restoreValidation",
+    "waitWithTimeout:",
+    "fetchRequest",
+    "roughSizeEstimate",
+    "_getFSSpecForPath:",
+    "_topHandling",
+    "selectedSubrows",
+    NULL,
+    NULL,
+    NULL,
+    "_scriptingRealDescriptor",
+    "IKNSImageAdditionalPossibleExtensions",
+    "initWithGroup:person:properties:addressBook:",
+    "_addManyToManysToDatabaseOp:",
+    "newPrimaryKeyInitializeStatementForEntity:withInitialMaxPK:",
+    "_inlineSlideshowGoToNextItem:",
+    "registerPort:name:nameServerPortNumber:",
+    NULL,
+    NULL,
+    "indexCarbonMenu:resultGRLs:isRootMenu:systemHelpMenu:",
+    "decodeDownloadHeader:headerLength:modificationTime:filename:",
+    "readDataToEndOfFile",
+    "setSpeechChannelWithVoiceCreator:voiceID:",
+    "_stopAnimationWithWait:",
+    "animateCompositionsIfNeeded",
+    "compoundPredicateType",
+    "setPopup:",
+    "differenceParameter:new:old:into:",
+    NULL,
+    "isWellFormed",
+    NULL,
+    "setEnableTextHighlightDrawing:",
+    "_tryDrop:dropRow:dropOperation:",
+    "_initWithProperties:defaultSubcontainerAttributeKey:inverseRelationshipKeys:",
+    "fieldsIncludedAreCleared",
+    "_quotesForRange:useGermanApostrophes:useDutchApostrophes:",
+    "doPass:sums:",
+    "_scriptingShouldCheckObjectIndexes",
+    "ruleEditorSizeChangedForSearchController:",
+    "menuRepresentation",
+    "selectKeyViewFollowingView:",
+    "_count",
+    "rulerView:willSetClientView:",
+    "cellLabel",
+    "panel:willExpand:",
+    "setFormatString:",
+    "ejectButtonFrameForCellFrame:",
+    "_readVersion0:",
+    "performActionWithHighlightingForItemAtIndex:",
+    "removeListEnabled",
+    NULL,
+    "_maxRuleAreaRect",
+    "notificationPort",
+    "glyphGenerator",
+    "refreshDisplayedCard",
+    "_getFSRefForPath:",
+    NULL,
+    "_sheet:didEndWithResult:contextInfo:",
+    "_pathsForResourcesOfType:inDirectory:forRegion:",
+    NULL,
+    "setQueueLimit:",
+    "setEntityName:",
+    "_messageStringForType:",
+    "removePasswordView",
+    "updateChildNodesForKeyPath:",
+    "_adjustLineScroll",
+    "ab_smallestTimeIntervalAroundTodayYearLess",
+    "_isVisibleUsingCache:",
+    "_predicateRestrictingToSubentitiesForEntity:",
+    "sourceDimensions",
+    "_globalWindowNum",
+    "setDataLength:",
+    "_widthOfColumn:",
+    "_dictionaryForSavedConfiguration",
+    "_setFaultHandler:",
+    NULL,
+    "nts_ImportFromMetaKitDatabaseAtPath:andSave:",
+    NULL,
+    "setPlaysSelectionOnly:",
+    "patchIsInMacro:",
+    "descriptionWithCalendarFormat:locale:",
+    "_fileControlCallbackTimeout:",
+    NULL,
+    "propertyListFromInputValues",
+    "baseAddressForSkippedRows:skippedPixels:",
+    "fileAttributesToWriteToURL:ofType:forSaveOperation:originalContentsURL:error:",
+    "setAutosizesAndCenters:",
+    NULL,
+    "setMinimumFractionDigits:",
+    "setFields:",
+    "MD5",
+    "_removePersistentStore:",
+    "standardUserDefaults",
+    "loadCIImageWithName:",
+    "previewBounds",
+    "canMixDynamicAndStaticContent",
+    NULL,
+    "setHeaderLevel:",
+    "ISS__ay_postNotificationName:object:userInfo:inThread:",
+    NULL,
+    "abGlobalMailRecentAPIUnlockInFile:line:",
+    "screenRect",
+    "_indexOfItemWithPartialTitle:",
+    "systemFontSize",
+    "_containerRelativeFrameOfColumn:",
+    "protectionSpace",
+    "initWithSourcePath:andLocalDestination:",
+    "nts_imageNameForPerson",
+    "setShouldCloseWithWindow:",
+    "verticalAlignment",
+    "insertRow:",
+    "nodeActorForNode:",
+    "initWithDouble:",
+    "_setImageNumber:",
+    "setImportFactor:",
+    "hasControls",
+    "initWithSelector:",
+    "defaultRecentPictureWithImageWrapper:cropSize:",
+    "initWithFilter:options::",
+    "_handleHelpURL:",
+    "_initForURL:withContentsOfURL:ofType:error:",
+    "_windowDidHideToolbar",
+    "_deviceClosePath",
+    "_countByEnumeratingWithState:objects:count:forKeys:",
+    "_accessibilityPerformClickAction:",
+    "abGlobalAPIUnlockInFile:line:",
+    "hide:",
+    "movieUnfilteredPasteboardTypes",
+    "_openDialog:file:",
+    "replaceHeaderView",
+    "_needToPrefetchMipmap:",
+    "initWithBindingTarget:",
+    "_loopHit:row:col:",
+    "accessibilitySetFocusedAttribute:",
+    "dataRepresentationOfType:",
+    "_singleValueForKeyPath:",
+    "allowsReverseTransformation",
+    "appendWhereClauseToSQL",
+    "setConjunction:",
+    "initWithController:retainController:key:valueTransformer:binding:",
+    "qdCreatePortForWindow:",
+    "_informAffectedStoresOfInterestByChildContext:inObjectsWithObjectIDs:withSelector:",
+    "setGroupsByEvent:",
+    "_trashContainsOrIs:",
+    "_updateButtonState",
+    "stopListening",
+    "setStartSubelementIdentifier:",
+    "initWithKey:",
+    "collatorWithName:",
+    "_DAVUnlock",
+    NULL,
+    "_copyMetadataFromStore:toStore:migrationManager:",
+    "initWithOwner:mediaType:formatDescription:attributes:",
+    "_keyEquivalentGlyphWidth",
+    "propertyList:isValidForFormat:",
+    "imageUnfilteredTypes",
+    "shouldShowEffects",
+    "windowDidResignKeyNotification:",
+    "selectToMark:",
+    "_setUpdated:",
+    "subentityColumn",
+    "computeHighlight",
+    "initWithPerson:model:",
+    "startPlay",
+    NULL,
+    "findBundleResources:callingMethod:directory:languages:name:types:limit:",
+    "initWithShadow:",
+    "_newSortingLastName",
+    "_changeSizeStyle:",
+    "totalSpace",
+    "addImage:forDuration:atTime:withAttributes:",
+    "_initWithfeImage:",
+    NULL,
+    "dateWithDate:",
+    "pixelSamples",
+    "actionMenuFilter:",
+    "_atEndOfTextTableRow:atIndex:",
+    "_registerOrCollectSuiteDescription:",
+    "passes",
+    "_addDragTypesTo:",
+    "_buildUIDtoIndexCache:",
+    "setCacheHint:",
+    "_invalidateObjectValue",
+    "setupKeyboardNavigation:",
+    "transitionFrame",
+    "dateFormat",
+    "timeZoneNames",
+    "_revertAlertSheet:wasPresentedWithResult:inContext:",
+    "viewWillResetCursorRects",
+    "_setMenu:",
+    "_realStoreTypeForStoreWithType:URL:error:",
+    "nts_TracksModification",
+    "_setAvoidsActivation:",
+    "setZeroSymbol:",
+    "_updateUbertrustPopupValues:",
+    "unregisterServiceProviderNamed:",
+    NULL,
+    "_setControlView:",
+    "setUserAgent:",
+    "processElement:",
+    "setMinificationFilter:",
+    "_childrenByUniqueName",
+    "replaceNodeWithIdentifier:withDataFromDelegate:",
+    "rawValue",
+    "initWithRed:green:blue:alpha:",
+    "isByref",
+    "writeToURL:ofType:forSaveOperation:originalContentsURL:error:",
+    "certificateSheetDidEnd:returnCode:contextInfo:",
+    "setTitlePosition:",
+    "shadowMapCoordinatesForStrip",
+    "registerName:",
+    "bufferPixelFormat",
+    "_initializeRegisteredDefaults",
+    "setFrameSize:",
+    NULL,
+    "initializeDataSource:",
+    "initWithCString:noCopy:",
+    "setChildSpecifier:",
+    "initWithOperatorType:modifier:negate:",
+    "windowWillMiniaturize:",
+    "tokenField:completionsForSubstring:indexOfToken:",
+    "isLinear",
+    "inputExtent",
+    "_toolbarItemCommonInit",
+    NULL,
+    "_addMarker:",
+    NULL,
+    "toValue",
+    "setFilterTypes:orUTIs:",
+    "_focusOnCache:",
+    "defaultButtonCell",
+    "selectedUTType",
+    "installCGOverlay:",
+    "_currentPageBounds",
+    "_drawRowHeaderBackgroundInRect:",
+    "_putCellNoUpdate:atRow:column:",
+    "setLastNameNormalized:",
+    "selectWithFrame:inView:editor:delegate:start:length:",
+    "indexReferenceModelObjectArray",
+    "_executeSave:didCommitSuccessfully:actionSender:",
+    NULL,
+    "_localClassNameForClass",
+    "initWithNamespace:",
+    "_usesSourceListColors",
+    "components:fromDate:toDate:options:",
+    "hasUndoManager",
+    "scanDouble:",
+    "_updateInvalidatedObjectValue:",
+    "_visibleName",
+    "_getGaugeFrame",
+    "_titleCellHeight",
+    "_setFont:",
+    NULL,
+    NULL,
+    "tableView:portForRow:",
+    "prefetchDataForRecords:",
+    "composite:into:",
+    "_excludeObject:fromPropertyWithKey:andIndex:",
+    "movie:linkToURL:",
+    "_drawThemeProgressArea:",
+    "updateFontPanel",
+    "initWithFrame:delegate:",
+    "initForDeserializerStream:",
+    "setStringColor:",
+    "_willPresentCreationError:",
+    "hasDuration",
+    "initWithFunc:ivarOffset:",
+    "_adjustToMode",
+    "_backgroundColors",
+    "bestLocationRep:matchesBestLocationRep:",
+    "_show:",
+    "deleteTextureInCurrentContext",
+    "setBackgroundWindowLevel:",
+    "setMovieBeingSet:",
+    "initWithResource:withParent:",
+    "glyphRange",
+    "setShowsCheckerboard:",
+    "_cgColor",
+    "_originalNextKeyView",
+    "preferredExtensionForMIMEType:",
+    "_createSubfields",
+    "setSpeed:",
+    "convertRectFromBase:",
+    "standardRecordTypes",
+    "readData:length:",
+    "_minXTitlebarDragWidth",
+    "_eventInTitlebar:",
+    "setDescription:",
+    "_renderingBounds",
+    "done",
+    "saveFilter:",
+    "setAttribute:",
+    "centerImage",
+    "windowRegion",
+    "descriptionInStringsFileFormat",
+    "hasCardWithEmail:",
+    "newDeleteStatementWithRow:",
+    "animatedCells",
+    "requestExpression",
+    "freeRect:",
+    "collapsesBorders",
+    "valueWithQTTime:",
+    "endDisplayNoComplete",
+    "supportedTextureBufferFormatsForFormat:",
+    "loops",
+    "_currentAttachmentIndex",
+    "boolValue",
+    "_viewSurfaceDidComeBack:",
+    "_web_createIntermediateDirectoriesForPath_nowarn:attributes:",
+    "setWords:",
+    "_getUUID",
+    "internalSaveTo:removeBackup:errorHandler:temp:backup:",
+    NULL,
+    "maximumFrameRate",
+    "_configFileCommonNameAndSerialNumber:",
+    "enumeratorOfInputWhiteParams",
+    "embedded",
+    "_setSelectorName:",
+    "isSafe",
+    "setBottomMargin:",
+    "month",
+    "createsSortDescriptor",
+    "isRootEntity",
+    "mouseUp:",
+    NULL,
+    "deepNodeCopy:",
+    "miniaturizeAll:",
+    "initWithFile:options:",
+    "attributesForInputPort:nodeIdentifier:",
+    "parsePhoto:",
+    NULL,
+    "_shouldShowFocusRingInView:",
+    NULL,
+    "gridColor",
+    NULL,
+    "reversedSortDescriptor",
+    "_tryState:interactive:",
+    "compositionOutputs",
+    "appendSubThumbnail:",
+    "rulerView:willAddMarker:atLocation:",
+    "setContactIndex:",
+    "automaticRearrangementKeyPaths",
+    "initIndex:",
+    NULL,
+    "coreUIDrawOptions",
+    "setFrameAutosaveName:",
+    NULL,
+    "_propFindRequestPostHandler:",
+    "_setAppleEventHandling:",
+    "stringByConvertingHTMLEntities",
+    NULL,
+    "addBorderStyleToDictionaryRef:",
+    "selectedQCIdentifier",
+    "mouseTracker:shouldStartTrackingWithEvent:",
+    "invalidateAllItemsLayout",
+    "filter:setValue:forKey:",
+    NULL,
+    NULL,
+    "cookieAcceptPolicy",
+    "_expandJustEnoughToLoadRepProperties",
+    NULL,
+    "_isLockingFocus",
+    "_createSaveButtonIfRequired",
+    "_getWindowCache:add:",
+    "_placeAccessoryView",
+    "_unpackTextInputEventRef:",
+    "_openableFileExtensions",
+    "_scriptingAddToReceiversArray:",
+    "URLWithString:",
+    "truncationString",
+    "splitterTrackingRect",
+    "setHidesOutlineColumn:",
+    "drain",
+    "_doPositionDrawer",
+    "updateRuler",
+    "hostWithName:",
+    "controlColor",
+    "CAJS_scheduledTimerWithTimeInterval:function:repeats:",
+    "itemHasDiskCache:",
+    "_hasgState",
+    "imagingModeForcedToSharedSurface",
+    "_cgImage",
+    "allowsToolTipsWhenApplicationIsInactive",
+    "_removePropertyNamed:",
+    "currentToolMode",
+    NULL,
+    "brightnessComponent",
+    NULL,
+    "stopModal",
+    NULL,
+    "_objectValue:forString:",
+    "tableRow:ofTableView:",
+    "initialPoint",
+    "isDaylightSavingTimeForTimeInterval:",
+    "setCancelButtonCell:",
+    "initWithContentsOfMappedFile:withFileAttributes:",
+    "elementWithRole:subrole:parent:",
+    "step:",
+    "replaceObjectAtIndex:withObject:",
+    "titlesForItem:",
+    NULL,
+    "propertyLineForGenericABProperty21:vCardProperty:",
+    "accessibilityStyleRangeForCharacterIndex:",
+    "setCompletes:",
+    "_printer",
+    "setSaveFileName:",
+    "outlineRoot",
+    "generatePropertyName:",
+    "_configureIntegrityCheck",
+    "setStartSubelementIndex:",
+    "_addSubview:",
+    "members:notFoundMarker:",
+    "_delegateSupportsEditing",
+    "parseHeader",
+    "currentValue",
+    "_setMultipleValue:forKeyPath:atIndex:",
+    "_minXminYResizeRect",
+    "setSelectedCompositionIndex:",
+    "filesystemItemLinkOperationWithSourcePath:destinationPath:",
+    "_middleIndexForCount:",
+    "IKDVGrabberUpdated:",
+    NULL,
+    "_initWithBytesOfUnknownEncoding:length:copy:usedEncoding:",
+    "alertDidEnd:returnCode:contextInfo:",
+    "setExifOrientation:",
+    "_performClickOnSlice:withEvent:",
+    "_hideChildren",
+    "authorize:",
+    "_visibleRows",
+    "_maxCachedThumbnails",
+    "selectedRow",
+    "setAbstract:",
+    "filterWithName:compatibilityVersion:keysAndValues:",
+    "bitmapData",
+    "_toolbarCommonBeginInit",
+    "controlsController",
+    "setCacheDepthMatchesImageDepth:",
+    "_contentToFrameMaxYHeight",
+    "destinationAttributeName",
+    "dictionaryWithObject:forKey:",
+    "loopsBackAndForth",
+    "currentSize",
+    "sendWireCountForWireID:port:",
+    "imageWithData:bytesPerRow:size:format:options:",
+    "relockResourceAtPath:withDuration:",
+    "_configureSavePane",
+    "movieWithData:error:",
+    "pixelFormat422YpCbCr8_601",
+    "writePath:docInfo:errorHandler:remapContents:markBusy:hardLinkPath:",
+    "_stopObservingUndoManagerNotifications",
+    NULL,
+    NULL,
+    "invalidateFocusPoint",
+    "_old_drawImage:withFrame:inView:",
+    "nextSearchStringForNewValue:",
+    "attributedStringForObjectValue:withDefaultAttributes:",
+    "supermenu",
+    "sendString:",
+    NULL,
+    "currentReplyAppleEvent",
+    "publicRecordWithUniqueId:inAddressBook:",
+    "displayedMembersSubrows",
+    "initWithAppleEventCode:value:isHidden:presentableDescription:name:",
+    "_drawOrientedLabel:inRect:",
+    "addAnnotation:",
+    "readFromFile:",
+    "_supportsGetValueWithUniqueIDForKey:perhapsByOverridingClass:",
+    "createContext",
+    "alternateImageForSegment:",
+    "trustPolicies",
+    "_nonNilSetValueWithSelector:",
+    "synchronize",
+    "_parseNode:",
+    "areCursorRectsEnabled",
+    "dataSourceDidChange",
+    NULL,
+    "updateFrame",
+    "insertGlyphs:length:forStartingGlyphAtIndex:characterIndex:",
+    "_aboveContentBox",
+    "_resetClickedRowAndColumn",
+    "_ascenderDeltaForBehavior:",
+    "_getBlockStart:end:contentsEnd:forRange:stopAtLineSeparators:",
+    "_portsFromList:withSetFlags:unsetFlags:",
+    "pasteFont:",
+    "_firstMoveableItemIndex",
+    "setSwitchedToIndexMode:",
+    "displaysAnnotations",
+    "_auxiliaryStorage",
+    "writeRTFDToFile:atomically:",
+    NULL,
+    "updatedPeople",
+    "addListener:",
+    "allowsImageEditing",
+    "_getNextResizeEventInvalidatingLiveResizeCacheIfNecessary:",
+    "setLastFileListMode:",
+    "ikSetNeedsDisplayInRect:",
+    NULL,
+    "test",
+    "matches:",
+    "_tabRect",
+    "_descriptionForNode:",
+    "barRequest:",
+    "temporaryItem",
+    "_allowTabbingIntoCells",
+    "commonISOCurrencyCodes",
+    "timeZoneDetail",
+    "connectionForProxy",
+    "company",
+    "handleButtonHit:",
+    "previewPanel:willLoadPreviewForDocumentURL:",
+    "accessibilityIsNumberOfCharactersAttributeSettable",
+    "languageWithName:",
+    "_didMountDeviceAtPath:",
+    "cachedChildren",
+    "setSecond:",
+    "lockFocus",
+    "columnAutoresizingStyle",
+    "createNSImageForManager:withOptions:",
+    "_setReceiveHandlerRef:",
+    "currentDocumentURL",
+    NULL,
+    "textUnfilteredFileTypes",
+    NULL,
+    "itemAtIndex:",
+    "_frameRectForIndexInGrid:gridSize:",
+    "layout",
+    NULL,
+    "flipsIfNeeded",
+    "sharedPreviewView:didStopSharingWithPreviewPanel:",
+    "directoryContentsAtURL:andReturnResultCode:",
+    "_preferredPlaceholderForMarker:onlyIfNotExplicitlySet:",
+    "SCTPerformDelayedSelector:",
+    "_ignoringChangeNotifications",
+    "_objectTypeDescriptionForClassAppleEventCode:isValid:",
+    "setSearchValue:",
+    "pushSubnodeForEditing:",
+    "bodyForContact:",
+    "_selectItem:atIndex:",
+    "lazyBrowserCell",
+    "_blockRowRangeForGlyphRange:completeRows:",
+    "_startSound",
+    NULL,
+    "_resumeLayerTreeRenderingForWindowOrderIn:",
+    "fetchPublicRecordsForClass:withPredicate:addressBook:",
+    "_testLayoutTree",
+    "colorWithAlphaComponent:",
+    "deserializeListItemIn:at:length:",
+    "layerSuperview",
+    "colorWithKey:",
+    "_controlView:textView:doCommandBySelector:",
+    "_fixCommandAlphaShifts",
+    "_resumeIfNotTopHandling:withScriptCommandResult:",
+    "navView",
+    "_createClipIndicatorIfNecessary",
+    "thumbnailToRightOfPoint:",
+    "editorDidBeginEditing:",
+    NULL,
+    "_removeProxyPasswordForProxyURL:",
+    "_cleanupMenuMaps",
+    "_setTableCells",
+    "_accessibilityMaxValue",
+    "jobTitleFieldPresent",
+    "setMinimum:",
+    NULL,
+    "createCGLayerWithSize:info:",
+    "filterName",
+    "isEntityUsable:",
+    NULL,
+    "initWithArchive:options:",
+    "portKey",
+    "_scriptIsYesForKey:default:",
+    "isNSDate__",
+    "insertValue:atIndex:inPropertyWithKey:",
+    "blurVerticalPass3ROI:destRect:",
+    NULL,
+    "mouseDownLocation",
+    "warningValue",
+    NULL,
+    "_removeRangeInArrayAtIndex:",
+    "currentDocument",
+    "_computeCommonItemViewers",
+    "_resetCursorRects",
+    "retainedCompressionSessionOptions",
+    "initWithData:isSingleDTDNode:options:error:",
+    "_fileWriterUnitElementForConnection:",
+    "_isFlattened",
+    "compareObjectValue:toObjectValue:",
+    "_addDependentValueKey:",
+    NULL,
+    "selectsInsertedObjects",
+    "vendorID",
+    "_avoidsActivation",
+    "browser:didClickOnDisabledCell:atRow:column:",
+    NULL,
+    "allowedInputSourceLocales",
+    "_loadRecentSearchList",
+    "formIntersectionWithCharacterSet:",
+    "_writeURLStringInRange:toPasteboard:",
+    "_dragImageForCell:withEvent:offset:",
+    "setVersionIdentifiers:",
+    "rowAtIndex:",
+    "_withinDate",
+    "objcClassName",
+    "initWithExtent:format:",
+    "ISS__ay_performSelector:withObject:withObject:inThread:beforeDate:",
+    "_cacheTransientStateOfObject:",
+    "_setPaperSize:inPrintSession:pageFormat:",
+    "_canSaveGraphRootedAtObject:intoStore:givenOthers:",
+    "_invalidateNumberOfRowsCache",
+    "download:didReceiveResponse:",
+    "accessibilityRangeForLineAttributeForParameter:",
+    "moveIndexAtTop:",
+    "highlightSelectedItem:",
+    "_groupCellAttributesWithDefaults:highlighted:",
+    "_scriptingMightHandleCommand:",
+    NULL,
+    "addDescription:forSubelementName:",
+    "_setDefaultButtonCell:",
+    "_allowsDisplayMode:",
+    "_setState:",
+    NULL,
+    "match:strokeColor:fillColor:mode:lineWidth:",
+    NULL,
+    "enableUndoRegistration",
+    "setEdge:",
+    "setFocusStack:",
+    "updateControlButtonsForOutlineViewSelection",
+    "renderBezelGroupWithPoints:count:radius:strokeColor:fillColor:lineWidth:",
+    "mapIntoVRAM",
+    "_physicalSizeCompare:",
+    "setAllowsUndo:",
+    "rangesContainLocation:",
+    "_drawBorderWithFrame:",
+    "thisIsACompany:",
+    "showsApplicationBadge",
+    "_alternateButtonTitle",
+    "openCustomLabelEditorForProperty:withPopup:",
+    "showAndShiftFocus",
+    "transformedValue:",
+    "second",
+    "finalWritePrintInfo",
+    "_forceSetView:",
+    NULL,
+    "completed:forType:",
+    "nts_StringForIndexing",
+    "defaultCredentialForProtectionSpace:",
+    "tableAction:",
+    "_initWithEntityMappings:",
+    "accessibilitySetVisibleCharacterRange:",
+    "addRect:",
+    "controller:didChangeToSelectionIndexes:",
+    "_accessibilityTreatButtonAsToolbarButton:",
+    "length",
+    "quartzFilterWithURL:",
+    "windowWillLoad",
+    "ensureLayoutForGlyphRange:",
+    NULL,
+    "coreUIRenderer",
+    NULL,
+    "getPropertyCSSValue:",
+    "initWithRTFDFileWrapper:",
+    NULL,
+    "showsShadowedText",
+    "applicationWillUpdate:",
+    "_recursiveDisableTrackingRectsForHiddenViews",
+    "setAltersStateOfSelectedItem:",
+    "thumbnailDidLoadNotification:",
+    "imageDataForPerson:",
+    "groupsController:outlineView:objectValueForTableColumn:byItem:",
+    "leftChild",
+    "_isReadOnlyIgnoresInert:",
+    "_gatherDataAndPerformMigration:",
+    "noteFirstLineParagraphStyle",
+    NULL,
+    "setReordering:",
+    "_setShowsAllDrawing:",
+    "simpleTraverseWithPathArray:pos:",
+    "completionsForPartialWordRange:indexOfSelectedItem:",
+    "updateGRLIndex",
+    "storedValueForKey:",
+    "_initWithPickers:",
+    "initWithSlideshow:dataSource:slideshowMode:options:",
+    "_updateLayerCompositingFilterFromView",
+    "displayableString",
+    "_old_initWithCoder_NSBrowser:",
+    "handleDelegateChangedCurrentDirectory",
+    "arrayWithCapacity:",
+    "settingsView:settingForKey:",
+    "_accessibilityViewCorrectedForFieldEditor:",
+    "imageBrowser:removeItemsAtIndexes:",
+    "listeners",
+    "setCachedChildren:forObservedNode:",
+    "downCaption",
+    "setDestination:allowOverwrite:",
+    "createRelationshipsForDestinationInstance:entityMapping:manager:error:",
+    NULL,
+    "setCanDRMInteractWithUser:",
+    "reallyInsertObject:atIndex:",
+    "_unsetFinalSlide",
+    "initWithImage:context:",
+    "_000103",
+    "encodeFloat:forKey:",
+    NULL,
+    "clearAllForRemoteLocation:",
+    "savePanel",
+    "statusCode",
+    "classDescriptionForKeyPath:",
+    NULL,
+    "fastIndexForKnownKey:",
+    "_deselectAll",
+    NULL,
+    "setImagingModeResetting:",
+    "previewPanel:shouldHandleEvent:",
+    "resizeBoundsForNote:inBounds:",
+    "flushPreferences",
+    "_lineFragmentDescription:",
+    "bindInRamMipmapItem:withUID:",
+    "preferredLocalizationsFromArray:",
+    "pointInConsumerOrderRect:inNode:bounds:",
+    "_nameAtIndex:",
+    "_insertKeyFrame:",
+    "imageByRenderingInRect:format:callback:data:options:",
+    "_itemVisibilityPriority",
+    "setText:",
+    "reallyRemoveFilter:",
+    NULL,
+    "_coreUIBezelDrawOptionsWithFrame:inView:",
+    "pixelFormat422YpCbCr8_709",
+    "rolloverCaption",
+    "initWithKey:appleEventCode:type:isOptional:isHidden:presentableDescription:name:",
+    "_engravedBoldActiveForegroundTextColor",
+    "extendSelectionAtStart:",
+    "_web_hasCaseInsensitivePrefix:",
+    "colorRenderingIntent",
+    "drawNote:inBounds:withColor:",
+    "_contents",
+    "setQuadPointsFromArray:",
+    "lockWhenCondition:",
+    "initWithCGSRegion:",
+    NULL,
+    "_setupButtonImageAndToolTips",
+    "draggingSourceOperationMaskForTableView:",
+    "_insertItemInSortedOrderWithTitle:action:keyEquivalent:",
+    "appendString:withFont:",
+    NULL,
+    "_mightHaveSpellingAttributes",
+    "numberWithLong:",
+    "_windowScreenDidChange:",
+    "_swapName",
+    "createProviderWithSource:options:",
+    "cleanupFind",
+    "setTracksModification:",
+    "_resizeContentsOfPreviewBox",
+    "_wiringNibConnections",
+    "_generateIdentifier",
+    "showInfoPanel:",
+    "_dataIndexFromRowIndex:",
+    "transparentBackground",
+    "_objectMatchesEntity:",
+    "faultingStatementForRelationship:",
+    "nextEventMatchingMask:untilDate:inMode:dequeue:",
+    "addRequestMode:",
+    "_keyCodeFromRecord:",
+    "_testWithComparisonOperator:object1:object2:",
+    NULL,
+    NULL,
+    NULL,
+    "_storeOrderedByFileProperty:orderedAscending:",
+    "drawSelectionAndOverlays",
+    "_addBindVarForConstId:ofType:inContext:",
+    "initWithObjectToken:node:",
+    "subcacheUsingFilteringFunction:userInfo:userInfoReleaseCallback:",
+    "createContextForCGImage:width:height:data:",
+    "_bestSettingWithBitsPerPixel:width:height:exactMatch:",
+    "shouldChangeTextInRanges:replacementStrings:",
+    "scrollColumnsRightBy:",
+    "view:customToolTip:drawInView:displayInfo:",
+    "newNode",
+    "setByAddingObjectsFromSet:",
+    "_hasWindowRef",
+    "_setNeedsDisplayInRectForLiveResize:",
+    "expandIndexPath:",
+    "numberOfItemsInImageFlow:",
+    "_userAgent",
+    "setType:creator:",
+    "_UTIMIMETypeForExtension:",
+    "_immediateScrollToPoint:",
+    "URL",
+    "afterEntityLookup",
+    "_makeEditable::::",
+    "_fileListModeControlCell",
+    "initWithString:locale:",
+    "pathComponentCellClass",
+    NULL,
+    "_updateSearchMenu",
+    "charValue",
+    "allocateSize:",
+    "blur:radius:",
+    "_orderOutAndCalcKeyWithCounter:",
+    "valueWithFont:range:",
+    "wantsPeriodicDraggingUpdates",
+    "treatsDirectoryAliasesAsDirectories",
+    "_doRemove",
+    "clearPastedImage",
+    "setCertificatesDisclosed:",
+    "updateWithFocusRing",
+    "removeObserver",
+    "addColor:forKey:toDictionaryRef:",
+    "duplicateWithClass:",
+    "indexLessThanOrEqualToIndex:",
+    "shouldDisplayControls",
+    "_finishShowAnimation",
+    "addFieldWithPopup:property:stringAttribute:endOfRange:",
+    "initWithValue:",
+    "setGridStyleMask:",
+    "_setPressedStateImage",
+    NULL,
+    NULL,
+    "_handleFileListSelectionChanged:",
+    NULL,
+    "updateLayout",
+    "gridWithCompositions:",
+    "yellowColor",
+    "_propertiesOfType:",
+    "_valueForKey:withInputs:exists:",
+    "_resolveHelpKeyForObject:",
+    "__setOrder:forConsumerSubpatch:",
+    "setWantsLayer:",
+    "setAffectedStores:",
+    "arrayWithObjects:count:",
+    "setCarbonDelegate:",
+    "displayNameForCollectionWithName:",
+    NULL,
+    "_tryUserMoveToParentNode",
+    "_setDefaultTargetAndActionOnView:",
+    "_generateSQLForSubqueryExpression:trailingKeypath:inContext:",
+    "currentPage",
+    "drawSheetBorderWithSize:",
+    "regularColorIfPossible:",
+    "classForClassName:",
+    "reportException:",
+    "_betweenDropFeedbackStyle",
+    "ivarInputPorts",
+    "_web_URLWithString:relativeToURL:",
+    "shapeWithRect:",
+    "_bindVariablesWithInsertedRow:",
+    "resourceDataUsingCache:",
+    "invTransform:",
+    "setAutorepeat:",
+    "setBottomColor:",
+    "initWithTextureName:releaseCallback:releaseInfo:context:format:target:flipped:colorSpace:options:",
+    "_accessibilityScreenRectForSegment:",
+    "_fastCharacterContents",
+    NULL,
+    "setPlaysEveryFrame:",
+    "_selectedRangesByTogglingRanges:withRanges:initialCharacterIndex:granularity:",
+    "cropInfo",
+    "freeImageCache",
+    "tableView:validateDrop:proposedRow:proposedDropOperation:",
+    "_fillSpellCheckerPopupButton:",
+    "switchPanes:",
+    "_typeSelectStringForIndex:",
+    "sharedUserDefaultsController",
+    "_graphiteKeyboardFocusColor",
+    "writeGlyphInfo:",
+    NULL,
+    "_batch_release",
+    "getNewMipmapsFromMipmapDB:",
+    "drawIrisClosedInRect:",
+    "setActiveSegment:",
+    "_isDocumentXMLStore:",
+    "setFrameOrigin:",
+    "_dispose",
+    "currentIndex",
+    "removeInput:",
+    "_backupEngaged:",
+    "isPrinting",
+    "setMnemonicLocation:",
+    "_setCertificateData:",
+    "_drawKeyViewOutline:",
+    "pixelFormat",
+    "changeAttributes:",
+    "setVariableSizeCacheLength:",
+    "outlineView:writeItems:toPasteboard:",
+    "mailRecents",
+    "removeAllToolTipsForView:",
+    "encodedLineForValue:",
+    NULL,
+    NULL,
+    "registerForCompletionOfDrag:",
+    "bookID",
+    "versionIdentifiers",
+    NULL,
+    "DPSContext",
+    "setPrimitiveCreationDateYear:",
+    "_isSynonym",
+    "serializeInts:count:",
+    "_orderFrontModalColorPanel",
+    "allPersonProperties",
+    "instantiateWithFile:",
+    "timeScale",
+    "readInt",
+    "setRowIndex:",
+    "_toolbarContentsAttributesChanged:",
+    "_setIsFirstItem:",
+    "initWithLong:",
+    "_orderOutHelpWindow",
+    "scrollByPage:",
+    "objectMechanismsRequiredForObject:",
+    "_hideAllScopeButtons",
+    "recordDescriptor",
+    "objectForInfoDictionaryKey:",
+    "parameter:differs:from:",
+    "enableNotifications",
+    "_menu",
+    "_setChannelMapping:error:",
+    "operationCanAbort",
+    "_isPaged",
+    "_drawRowHeaderSeparatorInClipRect:",
+    "_distinctUnionOfSetsForKeyPath:",
+    "splitView:effectiveRect:forDrawnRect:ofDividerAtIndex:",
+    "dataObject",
+    "isFullScreen",
+    NULL,
+    "frameRotation",
+    "_setApplicationID:",
+    "muted",
+    "sharedCameraServices",
+    "openWithApplication:",
+    NULL,
+    NULL,
+    "initWithType:leftExpression:rightExpression:",
+    NULL,
+    "rulerView:didMoveMarker:",
+    "togglePlatformInputSystem:",
+    "bilateralInitROI:destRect:userInfo:",
+    "animationValueForKey:forCell:",
+    "directoryQueryStatusChanged:",
+    "_rootEntity",
+    "_scrollLastColumnMaxXEdgeToVisible",
+    "repositionHUDWindow",
+    NULL,
+    NULL,
+    "_setDisplayState:updatePreviewView:",
+    "_mouseInTitleRect:",
+    "kerningShift",
+    "finalize",
+    "divide:by:",
+    "_typeDescriptionForName:suiteName:isValid:",
+    "_isFakeFixedPitch",
+    "enterExitEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:trackingNumber:userData:",
+    "updateTrackingRect",
+    "_drawerHorizontalOpenOffset",
+    "_logObservingInfo",
+    "addAnImageWithPath:toArray:",
+    "flushWindowIfNeeded",
+    "alphanumericCharacterSet",
+    "_sourceListFont",
+    "_sizeVerticalyToFit",
+    "_containsSimilarValue:property:",
+    "_itemViewer",
+    "isColumnSelected:",
+    "setSelectionZoomRect:",
+    "canonicalXMLStringPreservingComments:",
+    "_processHeader",
+    "initWithContentsOfURL:error:",
+    NULL,
+    "_fadePopUpWindow",
+    "createConnection",
+    "_newWithName:fromPath:forDeviceType:",
+    "_smartTagForTag:",
+    "createTextureBufferFromImageBuffer:withFormat:target:transformation:bounds:colorSpace:options:",
+    NULL,
+    "_setOrderOutInProgress:",
+    NULL,
+    "directoryResults",
+    "life",
+    "didImport",
+    "_initReaderWithClass:",
+    "_setLayer:",
+    "lastUpdatedDefaultKey",
+    NULL,
+    "_hasOverriddenAwake",
+    "draggingLocation",
+    "_setFrameSize:",
+    NULL,
+    "setChanges:",
+    "initWithElementSize:capacity:",
+    "_validateDeclarationStrings:forKey:",
+    "_finalSlideLocation",
+    "deletionStatement",
+    NULL,
+    "sharedSystemTypesetter",
+    NULL,
+    "setFieldType:",
+    "setRepresentedObject:",
+    "movie:shouldContinueOperation:withPhase:atPercent:withAttributes:",
+    "initWithWeaksReferences:",
+    "_unobstructedVisibleRectOfColumn:",
+    NULL,
+    "soundUnfilteredFileTypes",
+    "dropLastComponent:",
+    "nts_SetIsModified:",
+    "handleEventInThread:",
+    "_setInputs:",
+    "_sendCarbonNotification",
+    "headerToolTip",
+    "_engravedMenuOffsetTextColor",
+    "_sendDelegateCanSelectRow:",
+    "browserZoom",
+    "fetchObjectsWithFetchRequest:error:",
+    NULL,
+    "_setParserError:",
+    "mipmapItems",
+    "_showField:",
+    "_assertValidStateWithSelector:",
+    "setVisualContext:forConnection:",
+    "_ikVisibleRect",
+    "_setTableFlags:",
+    "initWithSettings:showPrintPanel:sender:delegate:didPrintSelector:contextInfo:",
+    "fetchLimit",
+    NULL,
+    "effects",
+    "_drawTickMarks",
+    "completedString:",
+    "showPopup",
+    "_postSelectionIsChangingAndMark:",
+    "assign:key:value:isNew:",
+    "freeRAMCache",
+    "savePanelDidEnd:returnCode:contextInfo:",
+    NULL,
+    "_modelKeysTriggeringChangeNotificationsForDependentKey:",
+    "componentUpdateNotification:",
+    "underlineThickness",
+    "imageRepsWithPasteboard:",
+    "applicationOpenUntitledFile:",
+    "deleteReferencesToTrack:ofType:",
+    "newStandardItemWithItemIdentifier:",
+    "initWithDataRef:type:",
+    "imageBrowser:willMoveItemsAtIndexes:",
+    "_sliderAction:",
+    NULL,
+    NULL,
+    "_indexForMoveUp",
+    "_typesetter",
+    "initWithButton:",
+    "_doPreSaveAssignmentsForObjects:",
+    "setAllowsColumnReordering:",
+    "_scrollerEventForEvent:",
+    "cleanUpOperation",
+    "_readURLStringIntoRange:fromPasteboard:",
+    NULL,
+    "attachmentStringForEmailCertificate:",
+    "retainIndex:",
+    "leafItem",
+    "setContainerIsRangeContainerObject:",
+    NULL,
+    "_cfLowercase:",
+    NULL,
+    "preferredPasteboardTypeFromArray:restrictedToTypesFromArray:",
+    "initWithGlyphName:glyph:forFont:baseString:",
+    "_handleAppActivation:",
+    "recenterResolutionData:toX:andY:",
+    "nts_AddMembersAndSubgroupsFromDictionaryRepresentation:withRecordMapping:",
+    "_displayValueForKeyPath:",
+    "dataWithLength:",
+    "array",
+    "_setAttributedDictionaryClass:",
+    "_commandMethodSelectorsByName",
+    NULL,
+    NULL,
+    "_compatibleListShouldUseAlternateSelectedControlColor",
+    "contextWithCGLContext:pixelFormat:options:",
+    "acceptHelpResults:isLastBatch:",
+    "setVisualizePatchExecution:",
+    "registerImageRepClass:",
+    "loadFileWrapperRepresentation:ofType:",
+    "_setIChatSigningUsage:",
+    NULL,
+    "_removeActiveConnection:",
+    "_setIdentifiedItems:",
+    "serviceError:error:",
+    "_userSelectTextOfNextCell",
+    "_setIChatEncryptionUsage:",
+    "loadNibFile:externalNameTable:withZone:",
+    "addAddToiPhotoButton",
+    "_canHide",
+    "accessibilityIsSortDirectionAttributeSettable",
+    "_setTopRow:animate:",
+    "decodeDownloadData:dataForkData:resourceForkData:",
+    "_beginListeningForSessionStatusChanges",
+    "setResetOutputs:",
+    NULL,
+    "_synchronizeTextView:",
+    "initWithMovie:",
+    "_metalStyle",
+    "initWithObjects:",
+    "updateLineSpacingUI",
+    "_leftmostInsertionIndexForNode:inOrderedNodes:withSortDescriptors:",
+    "propagatesDeletesAtEndOfEvent",
+    "_desiredKeyEquivalentModifierMask",
+    NULL,
+    "addCharactersInString:",
+    "removeChildWindow:",
+    "nts_PopulateWithDictionary:withRecordMapping:generateIds:addressBook:",
+    "buttonGroup",
+    "encodeRect:forKey:",
+    "_reverseScanLines",
+    "getAttributesForCharacterIndex:",
+    "_chSheetDidEnd:returnCode:contextInfo:",
+    "_installOpenRecentMenus",
+    "titleFont",
+    "appendEnumerationDeclarationToAETEData:includingParts:",
+    "isMovableByWindowBackground",
+    "getLineStart:end:contentsEnd:forRange:",
+    "adjustSize",
+    "_setAnimates:",
+    "migrateStoreAtURL:withManager:metadata:options:error:",
+    "canCreateProxyPortWithOriginalPort:",
+    "_web_startupVolumeName_nowarn",
+    "setCellClass:",
+    "mostCompatibleStringEncoding",
+    "_invalidateUsageForTextContainersInRange:",
+    "_selectToolbarItemViewerInDirection:relativeToView:",
+    "addSelection:",
+    "_newPredicateWithInheritanceForFetchRequest:",
+    "_itemInStatusBar:withLength:withPriority:",
+    "_destroyFloatStorage",
+    "_appIdentifierFromServiceDictionary:appURL:",
+    "tabletID",
+    "connectionWasEstablished:",
+    "decimalNumberBySubtracting:",
+    "buttonClicked:",
+    "zoomInX",
+    NULL,
+    "fadeIn:orientation:",
+    "deselectAll:",
+    "_findIndexOfFirstDuplicateItemWithItemIdentier:",
+    "showPreviousDocument:",
+    "_highlightColorDependsOnWindowState",
+    "rowsInRect:",
+    "gotoBeginning",
+    "flipKnob:horizontal:",
+    "initWithName:fromFile:",
+    NULL,
+    "beginGrouping",
+    NULL,
+    "updateReferenceIndexesToReflectInsertionAtIndex:",
+    "bindItemFromDisk:withUID:",
+    "__fcCreateBlackListWithIndexes:",
+    "indexOfGroup:",
+    "_notes",
+    "mainThread",
+    "_isNSDocumentBased",
+    "addHeartBeatView:",
+    "objectForServicePath:",
+    "inlayROI:forRect:",
+    "doesPropertyExist:",
+    "selectText:",
+    "setValueTransformerName:",
+    "coreFindStrings:",
+    NULL,
+    "updateDragRectWithProgress:",
+    "advanceToEOLUnicode",
+    "parseSuiteOfPairsKey:separator:value:separator:allowOmitLastSeparator:",
+    "ISS_IANACharSetNameFromEncoding:",
+    "initWithContainerClassDescription:",
+    "_createDocument",
+    "_noteToolbarShowsBaselinePropertyChanged",
+    "applyDiff:toOldArray:withDataSource:allocator:allocatorSelector:",
+    "nts_CustomImageData",
+    "initForReadingWithData:",
+    "_windowWantsSquareToolbarSelectionHighlight",
+    "connectionUnitComponentSubType",
+    "updateFocusPoint",
+    "_release_1",
+    "undoNestedGroup",
+    "rangeOfString:options:range:",
+    "_tokenAttachmentForPoint:glyphIndex:drawingRect:",
+    "slideshowMode",
+    "lineFragmentUsedRectForGlyphAtIndex:effectiveRange:",
+    "useCleanAperture",
+    "_multipleValuesObjectCount",
+    "_releaseDockWindowID",
+    "performActionForControl:",
+    "_replaceObject:withObject:",
+    "insertRowAtIndex:withType:asSubrowOfRow:animate:",
+    "visualMovieBoxBackgroundColor",
+    "_setRenderingBorder:",
+    "bind",
+    "_locationOfOriginPoint:",
+    "_serverConnection",
+    "accessibilityLineNumberForCharacterIndex:",
+    "_countBindings",
+    "predefinedAttributesForIndex:",
+    "accessibilityFocusedUIElementAttribute",
+    "_drawIndicatorInRect:",
+    "_isInternalFontName:",
+    "arrayOrNumberFromResolutions:andValues:withCount:",
+    "edgeAntialiasingMask",
+    "_performTypeSelect:",
+    "processNode:",
+    "shouldCollapseAutoExpandedItemsForDeposited:",
+    "_normalListmodeDown::::",
+    "autoconfigureWithPatch:",
+    "nofSubItems",
+    "setImage:dirtyRect:",
+    NULL,
+    "setPDFView:",
+    "_clearTemporaryAttributesForCharacterRange:changeInLength:",
+    "_freeTemporaryCacheStepWithVisibleIndexes:blackList:",
+    "processDocumentFragment:",
+    "cachedDrawingImage",
+    "setShadowOffset:",
+    "inputStreamWithData:",
+    "_setMarkedWidth:",
+    "initWithCompoundTypes:",
+    "flattenMipmapItemIfNeeded:withUID:",
+    "setContentsChanged",
+    "initWithContainerClassID:key:containerIsa:",
+    "_setIsUserRemovable:",
+    "defaultLineJoinStyle",
+    "usesPageLabels",
+    "initWithObjects:forKeys:count:",
+    NULL,
+    "notificationWithName:object:",
+    "_newNode:",
+    "_setOptions:withBindingInfo:",
+    "insertObjectIntoMasterArrayRelationship:atIndex:selectionMode:",
+    "trackMarqueeTextSelection:",
+    "initWithProperties:classExtensionDescriptions:",
+    "versionForClassName:",
+    NULL,
+    NULL,
+    "characterIndexForGlyphAtIndex:",
+    "setCropInfo:smallIcon:",
+    "sendData:",
+    "_setDefaultPrototypeCell",
+    "_isToolTipCreationAndDisplayEnabled",
+    "transformBy:interior:",
+    "toolTipForCell:",
+    "initWithObjectToken:track:",
+    "_scriptTerminologyPluralName",
+    "save:",
+    "addCursorRect:cursor:",
+    NULL,
+    "sendAppleEventCompleted",
+    "_drawQCBackground",
+    "includesPropertyValues",
+    "_filenamesAlwaysIncludingDirectories",
+    "_NSThemeWidgetCell_commonInit",
+    "deselectAll",
+    "linearBumpCenter:size:fromLevel:toLevel:angle:",
+    "_initWithData:error:",
+    "async",
+    "pause",
+    "_generateToOneSQLStringInContext:",
+    "identifier",
+    "drawSwatchOfColor:inRect:",
+    "cursor",
+    "isBadImage",
+    "releaseRenderedTexture:forCGLContext:",
+    NULL,
+    "IKAnimatedRepresentation",
+    "validStartCharacter:",
+    "monthSymbols",
+    "applyPaste:",
+    "setBaseSpecifier:",
+    NULL,
+    "_clearRefreshedObjects",
+    "activeColor",
+    "setKBProductString:",
+    "_cfNumberType",
+    "initWithEntity:alias:fetchColumns:inScope:",
+    "totalAdditionalHeightAtRow:",
+    "_tabRectForTabViewItem:",
+    "_desiredTextAreaSize",
+    "objcCreationMethodSelector2",
+    "setMinDoubleValue:",
+    "tableParameters",
+    NULL,
+    "certData",
+    "initWithPhoneString:",
+    "displayableSubpredicatesOfPredicate:",
+    "secondsFromGMTForDate:",
+    "objectsForFetchRequest:inContext:",
+    "setInnerHTML:",
+    "updateFromPMPageFormat",
+    NULL,
+    "keepLastRenderedCIImage:",
+    "paragraphSeparatorCharacterRange",
+    "_indexOfFirstGlyphInTextContainer:okToFillHoles:",
+    "__ivar_setClickedRow:clickedColumn:",
+    "isOCSPStatusCode:",
+    "_nameOfDictionaryForDocumentTag:",
+    "_doAttributeDecoding",
+    "_validateFaces:",
+    "initWithSimpleQueryString:searchScopes:",
+    "setSlideshowPanel:",
+    "_changeMainState",
+    "lineBreakInString:beforeIndex:withinRange:useBook:",
+    "toggleUsingSmallToolbarIcons:",
+    NULL,
+    "imageBounds",
+    "compositionIndexForPage:",
+    "alwaysUsesMultipleValuesMarker",
+    "freeVRAMCache",
+    "_handleKeyEvent:",
+    "operationScheduledForTime:dequeue:",
+    "_setForceItemsToBeMinSize:",
+    "breakUndoCoalescing",
+    "scaleFrame",
+    "handleMachMessage:",
+    "canonicalLocaleIdentifierFromString:",
+    "addDependency:",
+    "_ensureMediaBrowserViewLoaded",
+    "allowsCutCopyPaste",
+    "_disableChangeNotifications",
+    "_internalNextTypeSelectMatchFromRow:toRow:forString:",
+    "writeColorTable",
+    NULL,
+    "setValue:forInputKey:",
+    "rightIndentMarkerWithRulerView:location:",
+    NULL,
+    "_beginDrawView:",
+    NULL,
+    "prepareDeleteStatementWithRow:",
+    "IKImageIOLocalizedString:",
+    NULL,
+    "createDisplayList",
+    "_cfurl",
+    "_clearInitialFirstResponderAndLastKeyViewIfAutoGenerated",
+    "_setForceActiveControls:",
+    "setNeedsDisplay:",
+    "elementSize",
+    "_didChangeValuesForKeys:",
+    NULL,
+    "_shouldCoalesceTypingForText::",
+    "_rowHeightStorageComputeRectOfRow:cacheHint:",
+    "insertElements:count:atIndex:",
+    "initWithRegion:",
+    "_releaseAllPreWillChangeExpandedNodes",
+    "accessibilitySetSelectedAttributeOfChild:toValue:",
+    "_textDidChange:",
+    "toggleSearchMenu:",
+    "setAutomaticLinkDetectionEnabled:",
+    "_setWindowsNeedUpdateForSecondaryThread:",
+    "drawImage:atPoint:",
+    "panel:shouldShowFilename:",
+    "minDoubleValue",
+    "initMovingAndDisappearingAnimationWithItems:diff:",
+    "stopAnimations",
+    "_setDevice:",
+    NULL,
+    "saveLastImportContent",
+    "_contentToFrameMaxXWidth:",
+    NULL,
+    "_adjustDate:byEras:years:months:days:hours:minutes:seconds:",
+    "registerHelpBook",
+    "setPassphraseInfoStrings:::",
+    "isOutputTraced",
+    "horizBlur8ROI:destRect:",
+    "documentDidEndPageFind:",
+    "addRecordsToGroup",
+    NULL,
+    "_scriptingBooleanDescriptor",
+    "usesFindPanel",
+    "supportsSetAttributeValues",
+    "fileWrapperOfType:error:",
+    "request:acceptResponseWithHTTPStatusCode:",
+    "_tokenizeString:intoArray:errorDescription:",
+    NULL,
+    "setPickerMask:",
+    "_chooseGuess:",
+    "_changeIDsForManagedObjects:toIDs:",
+    "_setBackgroundColorWithRed:green:blue:alpha:",
+    "_queueBatchForDealloc:",
+    "_computeMenuForClippedItemsIfNeeded",
+    NULL,
+    "_sharedTextCell",
+    "insertString:atIndex:",
+    "clearMark",
+    NULL,
+    NULL,
+    "setContentResizeIncrements:",
+    "markUniqueIdsAsCompleted:",
+    "_proxyMutableArrayValueForKey:",
+    "_web_rangeOfURLUserPasswordHostPort",
+    NULL,
+    NULL,
+    "_delegate_nextTypeSelectMatchFromRow:toRow:forString:",
+    "_setTitleFixedPointWindowFrame:display:animate:",
+    "setValue:forUndefinedKey:",
+    "_copyDragCursor",
+    "evaluateFromResolutionArray:valueArray:arrayCount:atResolution:",
+    "setWindowsMenu:",
+    "setMovie:",
+    "addresses",
+    "closeButton",
+    "initPropFindWithURL:withDepth:lookingForProps:",
+    "_drawsOwnDescendants",
+    "_cancelTypeAhead",
+    "addTableColumn:",
+    "abortTransitionAndSetRendertime:",
+    "replaceCharactersInRange:withCString:length:",
+    "initWithDir:cStrings:",
+    NULL,
+    "greekingThreshold",
+    "nextUnicodeBase64Line:",
+    "substituteQuotesForRange:",
+    "removeMetadataForRecordWithUniqueId:",
+    "insert:",
+    NULL,
+    "_parseParagraphAttributes",
+    "_getGlyphIndex:characterIndex:forWindowPoint:pinnedPoint:preferredTextView:partialFraction:",
+    "_removeChildForUniqueName:",
+    NULL,
+    "show",
+    "setControlPoint:time:value:",
+    "_updateAutosavedRecents:",
+    "_writeFonts",
+    "setShortWeekdaySymbols:",
+    "_validItemViewerBoundsAssumingClipIndicatorNotShown",
+    "purgeResources",
+    "_updateColorSpace",
+    NULL,
+    NULL,
+    "customValuesDictionary",
+    "_highlightedNodes",
+    "removeRow:",
+    "_setIsPresent:",
+    "findUser:",
+    "_faceForFamily:fontName:",
+    "setTiltAngle:",
+    NULL,
+    "policyValues",
+    "sizeWithAttributes:",
+    "_isBooleanBinding:",
+    "poolCountHighWaterMark",
+    "createThumbnailFromImageSourceRef:",
+    "_fetchedPreviewTypeForDocumentPreview:",
+    NULL,
+    "graphicsContext",
+    "displayRect:",
+    "_drawCenteredVerticallyInRect:scrollable:",
+    "_viewFreeing:",
+    "redoMenuItemTitle",
+    "duplicate:",
+    NULL,
+    NULL,
+    "trackByIndexAndType:type:flags:",
+    "_drawOutlineCellAtRow:",
+    "blueBayerReconstructionProcessedROI:destRect:",
+    "performSelector:",
+    "_menuBarShouldSpanScreen",
+    "setCountPerRow:",
+    NULL,
+    "setBecomesKeyOnlyIfNeeded:",
+    "accessibilityValueIndicatorAttribute",
+    "setVolume:",
+    "defaultCenter",
+    "_drawingByHIView",
+    "_scheduleAutoExpandTimerForItem:",
+    "newWithProperties:quartzFilter:",
+    "_sizeAllDrawers",
+    "objectsByEvaluatingWithContainers:",
+    "_setAttributes:newValues:range:",
+    "frameCount",
+    "_setTimelineIdentifier:",
+    "_XMLStringWithOptions:appendingToString:",
+    "_appropriateColorPanelSliderPane",
+    "addToolbar",
+    "linkTextAttributes",
+    "_chosenIdentityToSignInvitation",
+    "smallIcon",
+    "characterRange",
+    NULL,
+    "setOpenGLTextureID:withGLContext:",
+    "lossyCString",
+    "becomesKeyOnlyIfNeeded",
+    "_growRegistrationCollectionForEntitySlot:toSize:",
+    "movieVisualContext",
+    "validateValue:forKeyPath:error:",
+    "_handleTabKey:",
+    "_wantsKeyDownForEvent:",
+    "initWithBundle:nibName:",
+    "_unregisterMenuForKeyEquivalentUniquing:",
+    "initForRelationship:sourceAlias:destinationAlias:correlationAlias:direct:inScope:",
+    "setSystemLanguages:",
+    "_fillLayoutHoleAtIndex:desiredNumberOfLines:",
+    "_shouldProceedAfterErrno:copyingItemAtPath:toPath:",
+    "_retainedObjectWithID:optionalHandler:withInlineStorage:",
+    "_makeKeyAndOrderFrontWithEffect:canClose:willOpen:toFullscreen:",
+    "originalDontAskUnresolvedDataRefsFlag",
+    "lockFocusIfCanDraw",
+    "_setTrackingAreasDirty",
+    "_destroyRealWindowIfNotVisible:",
+    "_searchWithGoogleFromMenu:",
+    NULL,
+    "nextKeyView",
+    "_web_errorWithDomain:code:failingURL:",
+    "maximumLineHeight",
+    "setIsPaneSplitter:",
+    "usableSortDescriptorsFromArray:",
+    "_makeUpCellKey",
+    "initWithPath:",
+    "sendCarbonUpdateHICommandStatusEvent:withMenuRef:andMenuItemIndex:",
+    "_adjustTextBoundingRect:toFitInCellFrame:withMaxSize:",
+    "lockResourceAtPath:withDuration:",
+    "_fromRecord:getContainerInfo:andKey:",
+    "storeCurrentBrowsingNodePath:",
+    "_forwardMetadata",
+    "setWithSet:",
+    "createKeyValueBindingForKey:typeMask:",
+    "fillTemplate:withReplacements:",
+    "_validateSessionCredentials",
+    "_notifyFamily_DidSetAllCurrentItems:",
+    "_validateDeletesUsingTable:withError:",
+    "_endTopLevelGroupings",
+    "_setDocViewFromRead:",
+    "_setPaperName:inPrintSession:pageFormat:",
+    NULL,
+    NULL,
+    "originalImageIsInvalid",
+    "_userCanMoveColumn:toColumn:",
+    "assertFileHandlerIsReady",
+    "initWithDir:separator:pattern:",
+    NULL,
+    "_didEndSheet:returnCode:contextInfo:",
+    "partialControllerKey",
+    "sRGBColorSpace",
+    "proxyPort",
+    "setStackSize:",
+    "drawCellAtRow:column:",
+    "_utiUsage",
+    "netServiceDidResolveAddress:",
+    NULL,
+    "_textFieldWithStepperTrackMouse:inRect:ofView:untilMouseUp:",
+    "_animateFadeOut",
+    "valueWithCATransform3D:",
+    "_mutableSetValueForKeyPath:ofObject:atIndex:raisesForNotApplicableKeys:",
+    "_responseWithCFURLResponse:",
+    "unregisterForPropertyChangedNotifications",
+    "setButtonBordered:",
+    "_open:",
+    "_resizeContentsOfMiniMode",
+    NULL,
+    "writeListTable",
+    "_updateOverlayFrame",
+    "simpleCommandsArray",
+    "_windowChangedHilite:",
+    "roundingIncrement",
+    "setIndex:",
+    "setDate:",
+    "focusedIndex",
+    "getValues:forAttribute:forVirtualScreen:",
+    "glyph",
+    "_resizeWithDelta:fromFrame:beginOperation:endOperation:",
+    NULL,
+    "setDefaultTimeZone:",
+    "closeAll:",
+    "storeNode:withUID:withResolution:",
+    NULL,
+    "sourceRepresentation",
+    "addNavigationLayer:",
+    "_codeSigningDevelopmentUsage",
+    "countOfRecordsForClass:matchingPredicate:takeLock:",
+    "_setupWindow",
+    "didEndAlert:returnCode:contextInfo:",
+    NULL,
+    "extraArgument1",
+    "isEqual:",
+    "_getBucketForSeekingToPoint:",
+    "_changedTransientProperties",
+    "performAction:onSelectedTimeLines:withSelectedKeyFrames:object:context:",
+    "setCalendarFormat:",
+    NULL,
+    "_applicationWillDeactivate:",
+    "imageContents",
+    "inFlightAnimationWithObject:animation:",
+    "_blockRowRectForCharRange:rect:",
+    "_setClient:",
+    "gotoBeginning:",
+    "setSensibility:",
+    "_changeWasUndone:",
+    "addPropertiesAndTypes:withAddressBook:",
+    "sublayerEnumerator",
+    "writeDelayedInt:for:",
+    "addObserver",
+    "initWithNibName:bundle:",
+    "updateCanGoBackAndNext",
+    "_rearrangementExtensions:",
+    "SCTWindowIdentifier",
+    "saveChanges",
+    "_tabHeight",
+    "_sendDidFailToDispatchNotification",
+    "_draggedURL:",
+    "_configureSearching",
+    "_setKeyAlgorithm:",
+    "launchApplication:showIcon:autolaunch:",
+    "_clearLockedObjects",
+    "executeSubpatches:arguments:",
+    "_checkCollectionMoveOut:",
+    "valueClassForBinding:",
+    "initWithContainerSpecifier:key:",
+    "addTemporaryAttribute:value:forCharacterRange:",
+    "_setImpactsWindowMoving:",
+    "drawWithCurrentRendererInRect:",
+    "indexMenuBar:",
+    "_wantsRevealovers",
+    "_setSelectableItems:",
+    "outputImageWasModifiedByDelegate",
+    "setEnumerator:",
+    "_populateMiniMode",
+    "accessibilityIsSelectedTextRangeAttributeSettable",
+    "setAllowsIdentitySelection:",
+    "_clearEditingTextView:",
+    "_readablePasteboardTypesForRichText:importsGraphics:usesFontPanel:usesRuler:allowsFiltering:",
+    "_loadPickerUI",
+    "_exposedBindings",
+    "openPanel",
+    "unlockWithPassword:",
+    "adjustCTM:",
+    "_selectNextSubfield",
+    "_pathForImageTaggedByEmails:",
+    "_startAnimation",
+    "nts_CreateInfoWithAddressBook:",
+    "bindingCategory",
+    "cellAttribute:",
+    "setAllowedClasses:",
+    "fetch:",
+    "getColorFromAppearanceString:",
+    "drawSelectionIndicatorInRect:",
+    "parseABExtensionType:",
+    "temporaryAttributesAtCharacterIndex:effectiveRange:",
+    "accessibilityPopUpMenuCreated:",
+    "setReplyMode:",
+    "_configurePathComponentPicker",
+    "nts_RemoteLocation",
+    "nodeWithIdentifier:",
+    "_reconcileToSuiteRegistry:",
+    "updateLockFileTimeStamp",
+    "originalProvider",
+    "setTimingFunction:",
+    "rulerView:shouldMoveMarker:",
+    "_didSelectComposition:",
+    "_isVisible",
+    "_fixupKeyboardLoop",
+    "IKIPSetFrame:constrainedToScreen:",
+    "setMenuView:",
+    "enterFullscreenWithEffect:frame:fromPanel:",
+    "previousPage:",
+    "noteContentValueHasChanged",
+    "_clearAllChanges",
+    "_shouldForceShiftModifierWithKeyEquivalent:",
+    "scaleFactor",
+    "evaluateWithObject:substitutionVariables:",
+    "_accessibilityPopUpButtonCellPressAction:",
+    "unlockTopMostReader",
+    "pathnameForDatabase",
+    "_createCGColorWithAlpha:",
+    NULL,
+    "saveOptionsHandler",
+    "mapData",
+    "cachedMipmapWithUID:",
+    NULL,
+    "_setHasRetainedStoreResources:",
+    "indexOfFirstCharacterOnPage:",
+    "loadFromDirectory:",
+    "_accountInfoPostHandler:",
+    "initWithData:bytesPerRow:size:format:colorSpace:",
+    NULL,
+    "_removeFormatDescriptionPropertyListener",
+    "tabletPoint:",
+    "_presentDiscardEditingSheetWithError:discardEditingCallback:otherCallback:callbackContextInfo:relatedToBinding:",
+    "isEqualToArray:",
+    NULL,
+    "_markerAtIndex:inText:",
+    "_dnsName",
+    "printDocument:",
+    "_setWindowNumber:",
+    "_setCompileResult:",
+    "markWithTag:notify:",
+    NULL,
+    "removeNodeForKey:",
+    "_windowTitlebarButtonSpacingWidth",
+    "writeInfo",
+    "countForKey:",
+    "setButton",
+    "makeIdentity",
+    "_clearConfigPanel",
+    "fontWithName:matrix:",
+    "_ruleOptionPopupChangedAction:",
+    "_workspaceDidResignOrBecomeActive:",
+    "applicationQuit:handle:",
+    "_isViewValidOriginalNextKeyView:",
+    "_compositeAndUnlockCachedImage",
+    "globallyUniqueString",
+    "selected",
+    "_copyCompositeCoreUIDrawOptions",
+    "_setIsCritical:",
+    "normalizeAdjacentTextNodesPreservingCDATA:",
+    "_setHideNonPartDrawing:",
+    "_newObjectGraphStyleRecordForRow:andObject:",
+    "_processMetaElementWithName:content:",
+    "rectSetBeingDrawnForView:",
+    "_prepareCropPRSUndo:",
+    "needsToDrawRect:",
+    "_delegateRespondsToGetToolTip",
+    "_observePreferredFileNameOfChild:",
+    "ensureAttributesAreFixedInRange:",
+    "_autorecalculateMinSize:maxSize:",
+    "initWithEntity:propertyDescription:",
+    "outlineView:willDisplayCell:forTableColumn:row:",
+    "_addDisplayedView",
+    "slideshowDidStop",
+    "contentMaxSize",
+    "arrayOfObjects",
+    "numberWithUnsignedShort:",
+    "_termOneShotWindow",
+    NULL,
+    "sharedFrameworksPath",
+    "totalCacheUsed",
+    NULL,
+    "_locationOfRow:",
+    "setUniqueID:",
+    "_setKeepCacheWindow:",
+    "shouldDrawFocusRing",
+    "lockFileContentsDictionary",
+    "applicationWillResignActive:",
+    "ignoreWord:inSpellDocumentWithTag:",
+    "unlockForThreadedOperation",
+    "tokenFieldCell:writeRepresentedObjects:toPasteboard:",
+    "resolveURL:withTarget:",
+    "abortParsing",
+    "popUndoObject",
+    "videoDecompressionRequirementForConnection:",
+    "_drawGraph:selectionRingColor:selectionRingWidth:nodeCount:nodeList:connectionCount:connectionList:",
+    "valueForHTTPHeaderField:",
+    "setPredicateName:",
+    "initWithUnsignedInteger:",
+    "_selectToolbarItemViewerPreviousToView:",
+    "panel:directoryDidChange:",
+    "drawSeparatorInRect:",
+    "mainWindow",
+    "_boolValueFromObject:",
+    "_doOpenUntitled",
+    "setUnderlyingDataAreVolatile:",
+    "SNNROI:destRect:",
+    NULL,
+    NULL,
+    "_clearKeyCell",
+    "finishAwakeFromNib:",
+    "setLayoutRect:forTextBlock:glyphRange:",
+    "attributeKeys",
+    "session:authenticateForURL:withRealm:attempt:username:password:",
+    "_shouldTryCoreUIBezelDrawingWithFrame:inView:",
+    "breakConnection",
+    "controller:didChangeToSortDescriptors:",
+    "rootObject",
+    NULL,
+    "clipFrameChanged:",
+    "isActive",
+    "_chunkAndFindMisspelledWordInString:language:learnedDictionaries:wordCount:usingSpellServer:",
+    "initWithDrawingView:rects:",
+    "setFillMode:",
+    "_drawHeaderFillerInRect:matchLastState:",
+    "fullNoiseReduction:pattern:radius:slope:",
+    NULL,
+    NULL,
+    "performDefaultImplementation",
+    "object:didAddObservance:",
+    "setAlternateButtonTitle:",
+    "attrStringForWarning:type:font:",
+    "scrollToSelected",
+    "entityVersionHashesByName",
+    "_currentImage",
+    "compositionLayer",
+    "setMouseCol:",
+    "boundsDidChange:",
+    NULL,
+    "shapeWidth",
+    "setMapData:",
+    "attributesForNodeIdentifier:",
+    "outlineTableColumn",
+    "setStartUpDelay:",
+    "setChanged:",
+    NULL,
+    "_restoreMiniaturizedWindow",
+    "setHintCapacity:",
+    "_rootmostLayerTreeHostAncestor",
+    "pathStyle",
+    "performSelector:withObject:afterDelay:",
+    "posterTime",
+    NULL,
+    "_customizationPaletteSheetWindow",
+    "beginPage:label:bBox:fonts:",
+    "_setRawDataAccess:",
+    "selectedIndexAndQuality:",
+    "_font",
+    "zoomValue",
+    NULL,
+    "inverseManyToMany",
+    "isValid",
+    NULL,
+    "_currentCollectionName",
+    NULL,
+    "_callImplementor:context:chars:glyphs:stringBuffer:font:",
+    "handleFileListModeChanged",
+    "availableVideoPreviewConnections",
+    "generateGlyphsForGlyphStorage:desiredNumberOfCharacters:glyphIndex:characterIndex:",
+    "_tableFlags",
+    NULL,
+    "_drawGrowBoxWithClip:",
+    "_dragHandleColors",
+    "setSubmenuRepresentedObjectsAreStale",
+    "UTF8String",
+    NULL,
+    "_resizeWeightSharedWithDuplicateItems",
+    NULL,
+    "setDisplayPattern:",
+    "_setupHistoryControl",
+    "createManyToManyTablesForEntity:",
+    "setCompression:factor:",
+    NULL,
+    "playerView",
+    "postNotificationName:object:userInfo:",
+    "selectItemWithObjectValue:",
+    "_enumeratedBindings:storage:number:numberFirstBinding:maxNumber:",
+    "automaticallyNotifiesObserversOfAppleUseCoreUI",
+    "_typeIdentifierFromCarbonCode:",
+    "_decodeDepth",
+    "_IKBuildImageWrapperForType:withObject:withOwner:",
+    "antiAliasingFilter:phase:greenAmount:redBlueAmount:",
+    "thumbnailWithSize:",
+    "comboBox:indexOfItemWithStringValue:",
+    "didRecycleResource:",
+    "isButtonVisible:",
+    "_privateAttributesWithIdentifier:",
+    "_valueForDepth:",
+    "fileSystemRepresentationWithPath:",
+    "allGroups",
+    "_validateAllObjectsAfterMigration:",
+    "drawAtPoint:fromRect:operation:fraction:",
+    "numberOfItemsInComboBoxCell:",
+    "thumbnailSize",
+    "encodeObject:",
+    "_userSetStateOfCellsInSet:toState:",
+    "imageRenderedSize",
+    NULL,
+    "_convert:toValueClassUsing:",
+    "attributedSubstringForMarkedRange",
+    "preview",
+    "renderWithBounds:matrix:function:info:",
+    "_typeDescriptionForName:",
+    "isInFrontWindow",
+    "_encodeObjectValuedMapTable:withCoder:",
+    "outlineView:typeSelectStringForTableColumn:item:",
+    "browser:sizeToFitWidthOfColumn:",
+    "selectTabViewItem:",
+    "setFireTime:",
+    "removeControlPoint:",
+    "setParentWindow:",
+    "_setToPresentCritical",
+    "autoPlay",
+    NULL,
+    "highlightColorInView:",
+    "flipCellsHorizontally",
+    "removePortForName:",
+    "addItemsWithRecentPictures:",
+    NULL,
+    "_animates",
+    "dashCountRaw",
+    "_packedGlyphs:range:length:",
+    "_escapeHTMLAttributeCharacters:withQuote:appendingToString:",
+    "descriptionFunction",
+    "_saveCacheAndIndexes:",
+    NULL,
+    "alignLeft:",
+    "typeToUnixName:",
+    NULL,
+    "setupTableView:",
+    NULL,
+    "dateYearless",
+    "_changeSyncPostingEnabled",
+    "_currentPath",
+    "localizedRecoverySuggestion",
+    "_canShowToolTip",
+    "_userRemoveItemAtIndex:",
+    "_hiddenWindows",
+    "_bindingInformationWithExistingNibConnectors:availableControllerChoices:",
+    "computeFigure:rectangle:",
+    "originalWidthForIndex:",
+    "initWithView:",
+    "_viewForControlID:",
+    "_anyUsage",
+    "imageIndexesInDocumentRect:",
+    "windowIsSpellingPanel:",
+    NULL,
+    "_applySelectionToItems:",
+    "setupAttributes",
+    "setVmUsagePolicy:",
+    "_acceptableRowAboveKeyInVisibleRect:",
+    "_revertDisplayValueBackToOriginalValue:",
+    "symbolicatorForTask:",
+    "_readColorIntoRanges:fromPasteboard:",
+    "_resizeButtons",
+    "setGrouping:",
+    "_liveResizeCacheableBounds",
+    "encoding",
+    "acquireFunction",
+    NULL,
+    NULL,
+    "autosizesCells",
+    "accessibilityInsertionPointLineNumberAttribute",
+    "setNeedsLayout",
+    "_nxeventTime",
+    "_eventRef",
+    NULL,
+    "selectedPeople",
+    "subrowIndexesForRow:",
+    NULL,
+    "encodeBytes:length:",
+    "_activeBackgroundColor",
+    "_adjustFreeFormLayout",
+    "startLineStyle",
+    "isExecutableFileAtPath:",
+    "RTFDFromRange:",
+    NULL,
+    NULL,
+    "_blinkCaret:",
+    "_acceptableRowBelowRow:tryAbovePoint:",
+    "_loadBundle",
+    "_gray204Color",
+    "hasSubmenu",
+    "typeDescriptions",
+    "initWithFrame:forMenuItem:",
+    "deserializeAlignedBytesLengthAtCursor:",
+    "_detailedContentsAtPath:",
+    "_handleChildAdded:",
+    "sampleBufferWithFigSampleBuffer:",
+    "gradientType",
+    "setChapterlist:",
+    NULL,
+    "_bodyStreamCanRead",
+    "initWithX:Y:Z:W:",
+    "imageExporterClasses",
+    "ancestorSharedWithLayer:",
+    "propertyValueWithKey:uniqueId:addressBook:",
+    NULL,
+    "_label",
+    "_isBeingEdited",
+    "vendorDefined",
+    "createPatchWithName:",
+    "_enableSelectionPostingAndPost",
+    "takeValue:fromPort:",
+    "defaults",
+    "_lmouseUpPending",
+    "objcDescriptorCreationMethodSelector",
+    NULL,
+    "initWithBool:",
+    "_adjustHelpDependentButtons",
+    NULL,
+    "deltaStateForUID:",
+    "_keyEnciphermentUsage",
+    "_isUpdating",
+    NULL,
+    "helpCursorShown",
+    "visibilityPriority",
+    "toolbarDidRemoveItem:",
+    "showsLogonButton",
+    NULL,
+    NULL,
+    "_scaleEffectForItemFrame:fullscreenFrame:fromPanel:subEffects:",
+    "setWidth:type:forLayer:",
+    "showcaseRect:window:position:",
+    "connectionGraphNodeForConnection:",
+    "_setUnprocessedUpdate:",
+    "imageFlowDidStabilize:",
+    "_cgsevent",
+    "setInt64:",
+    "_imageInterpolation",
+    "setToolTip:forSegment:",
+    "processDocumentType:",
+    "circleRect",
+    "renderOptionsForOptionsCallback:param:",
+    "_toggleOrderedFrontMost:",
+    "contentsAtPath:",
+    "showNode:inDirectory:selectIfEnabled:",
+    "runOperationModalForWindow:delegate:didRunSelector:contextInfo:",
+    "_progressPanelWasCancelled:contextInfo:",
+    "_setHiddenExtension:",
+    "_abortEditingIfFirstResponderIsASubview",
+    "_parseDocumentAttributes1",
+    "_filterMainSource:",
+    "isLiveCapturing",
+    "abNormalizedUID",
+    "__oldnf_containsChar:",
+    "cycleToNextInputLanguage:",
+    "_processLibXML2MetaNode:",
+    "drawUnderlineForGlyphRange:underlineType:baselineOffset:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:",
+    "setCollapsedLayout",
+    "linearGradientCenter:size:fromAlpha:toAlpha:angle:offset:",
+    "horizBlur32ROI:destRect:",
+    "fetchMetadata",
+    "_generateSQLEndsWithStringInContext:",
+    "addMembers:",
+    "setShowZoomSlider:",
+    "_groupObjectsByRootEntity:",
+    "isColumn",
+    NULL,
+    "_getDisplayDelegateFadesOutWhenInactive:",
+    "notReadyError",
+    "_resumeUIHeartBeatingInView:",
+    "_lockViewHierarchyForDrawing",
+    "canInitWithData:",
+    "fxButtonClicked:",
+    "_colorWellCommonAwake",
+    "setItemHeight:",
+    "_allowAnimated_setCompositingFilter:",
+    "boundsHeightGivenWidth:font:",
+    "_createPattern",
+    "isQuery",
+    "currentVirtualScreen",
+    "setIsEmptyColumn:",
+    "valueForControlPoint:",
+    "_rowObjectFromPredicate:",
+    "lockTimeout",
+    "moveBackward:",
+    "add:",
+    "_ensureSelectionAfterRemoveWithPreferredIndex:sendObserverNotifications:",
+    "setupWithOptions:",
+    "setKeyView:",
+    "_convertPoint:fromAncestor:",
+    "sublayers",
+    "prepareCountStatementWithFetchRequest:",
+    "_wasCGOrderingEnabled",
+    "pasteboardByFilteringTypesInPasteboard:",
+    "thumbnailImageSize",
+    "externalNameForPropertyName:",
+    "movieBounds",
+    "layoutSublayers",
+    "_addQuoteForLibXML2ElementNode:opening:level:",
+    "keyFrameSelected:inTimeLine:",
+    "imageWithPathInner:",
+    "center",
+    "_valueForRequiredCocoaAttributeKey:fromElement:",
+    "_synchronizeUserDefaultsIfNecessary",
+    "doubleClickAtIndex:inRange:",
+    "_collapsePanel:andMoveParent:toFrame:",
+    "evaluatedReceivers",
+    "fontDescriptorWithName:matrix:",
+    "setBitmapRepresentation:",
+    "_setIgnoringScrolling:",
+    "copyRenderedTextureForCGLContext:pixelFormat:bounds:isFlipped:",
+    "anyObject",
+    "unregisterForPropertyChanges",
+    "nativeRotation",
+    "encryptChanged:",
+    "containsPoint:",
+    "fetchRequestForSourceEntityNamed:predicateString:includesSubentities:",
+    "getGlobalWindowNum:frame:",
+    "_decrementLine:",
+    "unlock:",
+    "_updateFormatDescriptionFromCallback",
+    "_establishEventSnapshotsForObject:",
+    "setDocumentEdited:",
+    "currentTextContainer",
+    "numberOfThumbnails",
+    "emptyView",
+    "initForFetch:context:countOnly:",
+    "accessibilitySizeOfChild:",
+    "canBecomeVisibleWithoutLogin",
+    "imageAlignment",
+    "_editNote:",
+    "initWithURLResponse:",
+    "_setObjectHandler:",
+    "unsignedCharValue",
+    "_startelement:attributes:",
+    "isIrisClosed",
+    "symbolForAddress:",
+    "updateOptionsWithMarketingVersion:",
+    "regionOf:destRect:",
+    "parseCertPolicies:",
+    "insertTabIgnoringFieldEditor:",
+    "entityName",
+    "classDescriptionForDestinationKey:",
+    "datePickerCell:validateProposedDateValue:",
+    "coerceToDescriptorType:",
+    "checkGrammarOfString:startingAt:language:wrap:inSpellDocumentWithTag:details:",
+    NULL,
+    "_explicitlyCannotRemove",
+    "nts_IsParentGroupOfRecord:",
+    "defaultActionForKey:",
+    "servicesMenu",
+    "cameraIsGone:",
+    "_placeSuggestionsInDictionary:acceptableControllers:boundBinders:binder:binding:",
+    "userControlForAnnotation:",
+    "schedule:mode:",
+    "currentParagraphStyle",
+    "naturalSize",
+    "createSoftwareContext",
+    "setFieldVisible:withBool:",
+    "setExportToiPhoto:",
+    "cheapChromaBlurROI:destRect:",
+    "microsecondOfSecond",
+    "bindCGCache",
+    "loadNibNamed:owner:",
+    "departmentFieldPresent",
+    "generateNewGLTextureID",
+    "endInputStream",
+    NULL,
+    "_printSettingsValue",
+    "setLastEditedStringValue:",
+    "_okForSaveMode",
+    "setSubEffects:",
+    "setTitle:",
+    "nts_GroupUID",
+    "canBeCompressedUsing:",
+    "pixelFormatI16",
+    "heartBeatCycle",
+    "_commitOnMouseDown:",
+    "didLayoutDocumentView:",
+    "_isDarkWindow",
+    "_removeItem:fromTable:",
+    "initWithOutputIntents:quartzFilter:",
+    "_updateFormatDescription",
+    "classDescriptionsInSuite:",
+    "setImagePosition:",
+    "_documentURLAtIndex:",
+    "_clearCurrentAttachmentSettings",
+    "rowsCount",
+    "setPortClass:",
+    "_openInlinePreview",
+    "groupsController:outlineView:isItemExpandable:",
+    "sizeDidChange",
+    "_clearPreviousKeyWindowProperties",
+    "usePixels",
+    "_clearUnprocessedUpdates",
+    "enableExecution:",
+    "dispatchNameDoubleClick:",
+    "executeFetchRequest:error:",
+    "setPosition:atIndex:",
+    "accessibilitySharedTextViews",
+    "outlineView:setObjectValue:forTableColumn:byItem:",
+    "hasCGCache",
+    "initWithFrame:pullsDown:",
+    "setCurrencyGroupingSeparator:",
+    "itemNumberInTextList:atIndex:",
+    "allowedContentBindingMask",
+    "_isKeypathScopedToSubquery:",
+    "metaDataCachePathForUID:",
+    "_allLabels",
+    "writeKeywordsDocumentAttribute",
+    NULL,
+    "imagePath",
+    "externalMovie:",
+    "transitionImage",
+    "commonInitWithDictionary:",
+    "disabledWhenInactive",
+    "createRealObject",
+    "_abCompareNotWithinIntervalAroundTodayYearless:",
+    "_unregisterInstance",
+    "_releaseEvents",
+    "createPredicateForFetchFromPredicate:",
+    "addThumbnailForIndex:toArray:",
+    "setCertificate:",
+    "didAddToPersistentStoreCoordinator:",
+    "_drawAlternatingRowBackgroundColors:inRect:",
+    "textBackgroundColor",
+    "retreatMonthButtonCellForDatePickerCell:",
+    NULL,
+    "removeTextContainerAtIndex:",
+    "systemFontSizeForControlSize:",
+    "formatter",
+    "addNameDefaultValueToDictionaryRef:",
+    "setLocaleListForDefaultFontFallback:",
+    "_setAutovalidatesItems:",
+    NULL,
+    "_web_fileNameFromContentDispositionHeader_nowarn",
+    "_imagesWithData:hfsFileType:extension:zone:expandImageContentNow:",
+    "matchesPattern:caseInsensitive:",
+    NULL,
+    "_registerViewNotifications",
+    "imageBufferRef",
+    "setClass:forClassName:",
+    "replaceValueAtIndex:inPropertyWithKey:withValue:",
+    "_target",
+    "renderingContext",
+    "_frameOfOutlineCellAtRow:",
+    "_initWithCGSEvent:",
+    "descriptorByTranslatingObject:ofType:inSuite:",
+    "spacing",
+    "_focusInto:withClip:",
+    "setAttachmentFrame:",
+    "_nestingModeShouldHideAddButton",
+    "virtualScreen",
+    "_buttonTitleForTag:",
+    "setSendsSearchStringImmediately:",
+    "initWithVCardRepresentation:",
+    "insertItemWithRecentPicture:atIndex:",
+    "_defaultType:",
+    "registerNotificationsForWindow:",
+    "_shouldDisplayView:forDocumentPreview:",
+    "_createProfileFor:",
+    "vendor1",
+    "_findColorListNamed:forDeviceType:",
+    "_hasCursorRectsForView:",
+    "listOptions",
+    "__swapCompositions:",
+    "beginUsingMenuFormRepresentation:",
+    "_existsForArray:",
+    "_colorList",
+    "_setToolbarShowHideResizeWeightingOptimizationOn:",
+    NULL,
+    "setClient:",
+    "unregisterViewNotifications",
+    "_getCGImageRefCreateIfNecessary",
+    "resultType",
+    "setBezelStyle:",
+    "drawPageBorderWithSize:",
+    NULL,
+    "_addCert:certData:commonName:",
+    "_getTextAreaFrame:stepperCellFrame:forDatePickerCellFrame:",
+    "datePickerMode",
+    "performSelectorDelayed:",
+    "extendedNodeInfo",
+    "moduleWasInstalled",
+    "soundNamed:",
+    "performMenuAction:withTarget:",
+    "accessibilityIsVisibleCharacterRangeSettable",
+    "_addTrackingRectsForView:",
+    "setRepresentation",
+    "initWithRulerView:",
+    NULL,
+    "tokenizingCharacterSet",
+    "_firstSelectedCell",
+    "whitespace",
+    "_descriptorByTranslatingData:ofType:inSuite:",
+    "bind:toObject:withKeyPath:options:",
+    "_accessibilityTitleCell",
+    "_printSettingsForGetting",
+    "_adjustedCenteredScrollRectToVisible:forceCenter:",
+    "reduceWithKernels:::",
+    "tokenAttachment:shouldUseTokenAttachmentCell:",
+    "_invokeSelector:withArguments:onKeyPath:ofObjectAtIndexPath:",
+    "_accessibilityParentAdjustedHitTestElement:atLocation:",
+    "_clockAndCalendarAdvanceMonthButtonCell",
+    NULL,
+    "_createAutosaveRecordForDocument:",
+    NULL,
+    "layoutSublayersOfLayer:",
+    NULL,
+    "_setRepresentedURL:",
+    "pathForResource:ofType:inDirectory:forLocalization:",
+    "rectForSegment:inFrame:",
+    "boundsForThumbnail:",
+    "getIndexes:maxCount:inIndexRange:",
+    "setCurrentValue:",
+    "composition",
+    "setInputPortOrder:forKey:",
+    "_rulerAccViewLeftTabWell",
+    "imageFileExtensions",
+    "setItemViewer:",
+    "registerClient:",
+    "canInstantiateWithFile:",
+    "isFieldEditor",
+    "setCapacityHint:forSlot:",
+    "sharpenReconstructedGreenEdges:radius:intensity:edgeIntensity:edgeThreshold:edgeMaskRadius:edgeMask:",
+    "_addNode:atPosition:",
+    "initWithComparisonFunction:",
+    "_compositeNameIncludingAuxiliaryElements:",
+    "_setTrustHeaderValue:",
+    "_enableToolTipCreationAndDisplay",
+    "decodeQTTimeRangeForKey:",
+    "_baseLineHeightForFont:",
+    "_setIndex:",
+    "pointerSerialNumber",
+    "accessibilityRangeForSelection:",
+    "toolbarInstancesWithIdentifier:",
+    "addressBookWithDatabaseDirectory:",
+    "matrix",
+    NULL,
+    "setQueryAttributes:",
+    "_buttonWidth",
+    "setAllowsEditingTextAttributes:",
+    "_layoutEnabled",
+    "_finishedWiringNibConnections",
+    "initWithLeftExpressions:rightExpressionAttributeType:modifier:operators:options:",
+    "inputPorts",
+    "hasVRamLeftToContinueSchedule",
+    "_renderLayerPropertyAffectsGeometry:",
+    "_cellForPoint:characterIndex:level:row:column:range:",
+    NULL,
+    "contentInsetColor",
+    "mouseRow",
+    "initWithPath:directory:",
+    "setAutosavingDelay:",
+    "_removeHoleFromRanks:",
+    "nextSingleByteStringInEncoding:quotedPrintable:stopTokens:trim:",
+    "cString",
+    "_pathForLocalImage",
+    "timeStyle",
+    "resetCaches",
+    "sharedURLCache",
+    "_web_countOfString:",
+    "propPatchWithSession:URI:updatingProps:token:inNameSpace:",
+    "_addImage:named:",
+    "processEntity:",
+    "abortPrefetchThumbnails",
+    "simpleTraverseWithPath:",
+    "createSharedGWorld",
+    "indexOfLastCharacterOnPage:",
+    "accessibilityIndexForAttachment:",
+    "lineHeightMultiple",
+    "_enableMovedPosting",
+    "setClip",
+    "_accessibilityTreatSegmentedControlAsToolbarButtons:",
+    "setThread:withObject:withSessionUID:",
+    "_responsibleDelegateForSelector:",
+    "matchQualityOfColorAtIndex:toColor:filtered:ifBetterThan:",
+    "_setPlaceholderAttributedString:",
+    "resourceImageNamed:",
+    "_sizePopUp",
+    "_selectAnyValidResponderOverride",
+    "_postColumnConfigurationDidChangeNotification",
+    "initWithFormat:baseAddress:releaseCallback:releaseInfo:bytesPerRow:pixelsWide:pixelsHigh:flipped:colorSpace:options:",
+    "_focusedCrayon",
+    "_updateLayerGeometryFromView",
+    "initWithURL:options:",
+    "ensureQueue",
+    "_drawFromRect:toRect:operation:alpha:compositing:flipped:ignoreContext:",
+    "_wantsHeartBeat",
+    "initWithTexture:size:flipped:colorSpace:",
+    "range",
+    "_shouldShowFirstResponderForCell:",
+    NULL,
+    "_setGraphEditor:",
+    "_isLocatedByURL:withCache:",
+    "_doUserSetListMarkerFormat:options:",
+    "_moveObjectsInContainer:toContainer:withKey:atIndex:replace:",
+    "convertRect:toLayer:",
+    "maxItemSize",
+    "setSelectedGroupsFromModel:",
+    "_drawMappingAlignmentRectToRect:withState:backgroundStyle:operation:fraction:flip:",
+    "setPrecision:",
+    "__oldnf_replaceLastAppearanceOfString:withString:",
+    "_indicatorImageForCellHeight:",
+    "getBytes:",
+    "itemSupportedByiPhoto",
+    "_colorPickers",
+    "alloc_10_4",
+    "_clearGLContext",
+    "phoneFormatsDictionary",
+    "nibBundle",
+    "_initContentView",
+    "_shouldMinimizeWindowForEvent:",
+    NULL,
+    "items",
+    "setCacheDBIndex:",
+    NULL,
+    "_imageByRenderingInRect:format:callback:data:options:",
+    "accessibilityIsVisibleColumnsAttributeSettable",
+    "performActionForPerson:identifier:",
+    "setDiskCapacity:",
+    "_internalTypeSelectStringForIndex:",
+    "allowsColumnReordering",
+    "willPopRenderState:",
+    "isDataRetained",
+    NULL,
+    "shouldIncludeMember:",
+    "initWithName:URI:",
+    "initWithFormat:locale:arguments:",
+    "updateView",
+    "_sharedData",
+    "oldCustomRect",
+    "setIsFileListOrderedCaseSensitive:",
+    "initWithExpressionType:operand:selector:argumentArray:",
+    "classForCoder",
+    "drawInRect:fromRect:alpha:",
+    "_updatePredicate",
+    "resolvedKeyDictionary",
+    "_enableMatrixLiveResizeImageCacheing",
+    "_initServicesMenu:",
+    "_defaultUserActionForEvent:",
+    "_builtInLocalizedDescription",
+    "_threadedGenieFXWithImage:fromScreenRect:toScreenRect:withAlpha:",
+    "distributionStringsForMembers",
+    "extraArgument2",
+    "_setNeedsDisplayForColumn:draggedDelta:",
+    "saveLanguagesToDefaults",
+    "bindThumbnailWithSize:fromMipmap:withUID:toLocation:",
+    "IKCreateCGImage",
+    "reportStreamError",
+    "_endLiveResizeForAllDrawers",
+    "selectorForCommand:",
+    "_loadContentData",
+    NULL,
+    "PDFViewUserOpenGutterToWidth:",
+    "_groupCellAttributedStringForString:withDefaultAttributes:highlighted:",
+    "accessibilityLineForIndexAttributeForParameter:",
+    "_restoreModalWindowLevel",
+    "calculateFigure:size:",
+    NULL,
+    "element",
+    "abShowWindowDragProxie",
+    "_addOptionValue:toArray:withKey:type:",
+    "setError:",
+    NULL,
+    "_setToolbarViewWindow:",
+    "_selectRectRange::",
+    NULL,
+    "nts_AlternateName",
+    "_itemAtViewIndex:",
+    NULL,
+    "willHide",
+    "setDebugMode:",
+    "_setSelectedMember:withHistory:",
+    "preloadPDFXOptions",
+    "_validateBundleSecurity",
+    "accessibilityIsMinValueAttributeSettable",
+    "filesystemItemCopyOperationWithSourcePath:destinationPath:",
+    "hasEffects",
+    "rulerView:userClickedOnMarker:",
+    "copyRequestWithSession:sourceURI:destinationURI:token:",
+    "pageClass",
+    "clearDirectoryResultsSelection",
+    "initWithAddress:port:",
+    "setHostName:",
+    "_invalidateRunLoopTimer",
+    "_computeTargetItemViewFrameRects",
+    "widthAdjustLimit",
+    "indicatorImageInTableColumn:",
+    "arrayByExcludingToObjectsInArray:",
+    "_cfTrimWS",
+    "_constructTreesForTemplates:",
+    "imageRepsWithContentsOfURL:",
+    "item",
+    "_GC_queueForDealloc:",
+    "showImportDecisionPanelForDelegate:count:duplicatesCount:hasErrors:",
+    "exceptionWithName:reason:userInfo:",
+    "_drawThemeTab:withState:inRect:",
+    "_templateControlValueDidChange:",
+    "sendActionOn:",
+    "selectedCell",
+    "isMuted",
+    "otherMouseUpDelegate:",
+    "readBinaryStoreFromData:originalPath:error:",
+    "_isDoingHide",
+    "resetSelectionIndexes",
+    "currentDirectoryNode",
+    "_readColorsFromLibrary",
+    "_internalXMLStringWithOptions:appendingToString:",
+    "lightGrayDeviceColor",
+    "setBestVirtualScreenForRenderingSize:",
+    "_QNamesAreResolved",
+    "writableTypesForSaveOperation:",
+    "localizedFormattedDisplayLabels",
+    "_delayedDeactiveWindowlessWell:",
+    "helpMenuClosed",
+    "createIndexesForEntity:",
+    "firstIndentMarkerWithRulerView:location:",
+    "defaultLockDuration",
+    "_verticalOriginForRow:",
+    "outlineView:shouldExpandItem:",
+    NULL,
+    "actionForKey:",
+    "_cacheRow:rect:",
+    "matcher:foundService:",
+    "generatePrimaryKeysForEntity:batch:",
+    "newToolbarButton",
+    "_noise2d:y:",
+    "securityLockIcon",
+    "isGridBased",
+    "objectFrom:withIndex:",
+    NULL,
+    "setRowHeight:",
+    "willChangeValue",
+    "initWithAEDescNoCopy:",
+    "accessibilitySelectedRowsAttribute",
+    "_typeSelectInterpretKeyEvent:",
+    "defaultStringValue",
+    "doubleClickAtIndex:",
+    "invalidateTextSelection",
+    "separatorColor",
+    "panelSelectionDidChange:",
+    "_drawColumnHeaderWithIndexes:",
+    "_calcAndSetFilenameTitle",
+    "_printWithInfo:showingPrintPanel:",
+    NULL,
+    "initializeGrabberIfNeeded",
+    "initWithFormat:shareContext:",
+    "selectedRecord",
+    "setValue:forProperty:",
+    NULL,
+    "_publicAttributesWithIdentifier:",
+    "vectorWithValues:count:",
+    "setResultType:",
+    "mipmapCache",
+    "scrollToPoint:",
+    "setPlaceholderAttributedString:",
+    "_isNegation",
+    "_firstPageNumber",
+    "_dimpleDragStarted:event:",
+    "timeIntervalSinceDate:",
+    "_growBoxRect",
+    NULL,
+    "parseEMAIL",
+    "_changeTexture",
+    "importLock",
+    "initWithView:layoutManager:characterIndex:attachmentCell:",
+    "generateAccessibilityTable",
+    "tokenFieldCell:hasMenuForRepresentedObject:",
+    "getRow:column:ofCell:",
+    "setRelatedIDs:forKey:options:andTimestamp:",
+    "setAllowsFloats:",
+    "connectionClass",
+    "_drawDropHighlight",
+    "initWithSavedQueryData:title:",
+    NULL,
+    NULL,
+    "addToFavoritesAtIndex:",
+    "_informParentStore:ofInterestInObjects:",
+    "port",
+    "initWithData:documentClass:options:error:",
+    "filters",
+    NULL,
+    "cacheRetain:",
+    "_createMenuSeparatorItem",
+    "nextQuotedPrintableData",
+    NULL,
+    "sizeWithBehavior:usesFontLeading:baselineDelta:",
+    "orderForConsumerSubpatch:",
+    "autofill",
+    "copyCGLPixelFormatForDisplayMask:",
+    "keyEquivalentOffset",
+    "animationDidStop:",
+    "cancelAllOperations",
+    "secureTextViewForWindow:",
+    "replaceInView:",
+    "_setAppleMenuEnabled:",
+    "scrollRectToVisible:fromView:",
+    NULL,
+    "selectedCompositionIndex",
+    NULL,
+    NULL,
+    "createFileAtPath:contents:attributes:",
+    "performClickOnCell:",
+    "mergedModelFromBundles:",
+    "blurVerticalPass9ROI:destRect:",
+    "modifyOptionsViaPanel:",
+    "allObjects",
+    "_buttonHeight",
+    "_web_intForKey:",
+    "stopObservingModelObjectAtReferenceIndex:",
+    "shouldProceedAfterError:linkingItemAtPath:toPath:",
+    "initWithSourceModel:destinationModel:",
+    "_typesFilterableToType:",
+    "findFontLike:forCharacter:inLanguage:",
+    "_cycleUtilityWindowsReversed:",
+    "_setEmailProtectionUsage:",
+    "getFileSystemRepresentation:maxLength:",
+    "numberOfThreadsAlive",
+    "customProperties",
+    "completePathIntoString:caseSensitive:matchesIntoArray:filterTypes:",
+    "_isUnprocessedUpdate",
+    "movieControllerView",
+    "replaceObjectsInRange:withObjects:count:",
+    "_removePropertyForKey:",
+    "_attributesFromArchive:",
+    "isInputRampParams",
+    "_shouldShowRegularToolTipOnExpansionToolTip",
+    "parseError:",
+    "setFloatingPanel:",
+    "_panelSizeExcludingToolbar",
+    "_values",
+    NULL,
+    "removeNamespaceForPrefix:",
+    NULL,
+    "sampleTextForTriplet:",
+    "accumulate::minRadius:factor:",
+    "popOperation:",
+    "_uninstallTrackingAreas",
+    "initMultiStatusRequestWithURL:method:",
+    NULL,
+    "_resetAllChanges",
+    "_portsUpdated",
+    NULL,
+    "_scrollRangeToVisible:forceCenter:",
+    "drop:",
+    "_rectArrayForRange:withinSelectionRange:rangeIsCharRange:singleRectOnly:fullLineRectsOnly:inTextContainer:rectCount:rangeWithinContainer:glyphsDrawOutsideLines:",
+    "_setPatch:",
+    "transformForOrientationAndDPI",
+    "_pagesCountforCompositionsCount:",
+    "setMarkerFormatInWindow:textList:delegate:",
+    NULL,
+    "_imageForMenu",
+    "_addDrawerWithView:",
+    "_adjustedFrameFromFrame:value:currentScaleFrame:",
+    "encodeObject:isBycopy:isByref:",
+    NULL,
+    "initWithKeyFrameList:",
+    "_insertHoleInRanks:",
+    "reallyDealloc",
+    "comparisonForProperty:",
+    "_ivars",
+    "hasInheritance",
+    "newCreateTableStatementForEntity:",
+    "_accessibilityTableRow:",
+    "_limitedViewWantsRedisplayForItem:inRect:",
+    "fontMenu:",
+    "itemData",
+    "crayons",
+    "_controlAppearanceChangesOnKeyStateChange",
+    "textView:draggedCell:inRect:event:atIndex:",
+    "setupAudio",
+    "selectedGroupsInMembersColumn",
+    "popNibPath",
+    "_giveUpFirstResponder:",
+    "preferredLanguage",
+    NULL,
+    "multipleThreadsEnabled",
+    "_pageFormatForGetting",
+    "setCustomProperty:",
+    NULL,
+    "idlingEnabled",
+    "setThumbnailLimit:",
+    "initWithString:attributes:layoutSize:options:",
+    "coerceData:toColor:",
+    NULL,
+    "requestFileSizeCalculation",
+    "connection:didFailWithError:",
+    "yankAndSelect:",
+    "_formattedAddressFromDictionary:includeName:includeCompany:order:",
+    "write:toURL:securely:andReturnResultCode:",
+    "_regionsArray",
+    "mutableArrayValueForBinding:resolveMarkersToPlaceholders:",
+    "_cycleDrawers:",
+    NULL,
+    "updateCard:withImportedCard:",
+    NULL,
+    "_handleChildChanged:",
+    "bundleLanguages",
+    "supportedBufferPixelFormats",
+    "availableFonts",
+    "_searchMenuTracking",
+    NULL,
+    "groupIdentifier",
+    "didSendActionNotification:",
+    "makeBig",
+    "_restrictColumnResizingToWidth",
+    "handlePreviewTextChange",
+    "regularFileContents",
+    "debugMode",
+    "_maximumSizeForSearchFieldToolbarItem",
+    "objectValueForDisplayValue:",
+    "scrollPageDown:",
+    "_diskCacheCreateDirectory",
+    "_openFile:withApplication:asService:andWait:andDeactivate:",
+    "windowID",
+    NULL,
+    "valueOfAttribute:forResultAtIndex:",
+    "slideshowDidChangeCurrentIndex:",
+    "_inactiveStateShowsRolloversForSegment:",
+    "_applyTargetConfigurationWithoutAnimation:",
+    "download:didCreateDestination:",
+    "countOfCachedChildrenForNode:createIfNeeded:",
+    "hasMenuForTokenAttachment:",
+    "fileManager:shouldRemoveItemAtPath:",
+    "backgroundStyle",
+    "_saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:",
+    "initWithData:URL:MIMEType:textEncodingName:frameName:",
+    "_finishedTableViewInitWithCoder",
+    "filteredSetUsingPredicate:",
+    "_specifiesCollection",
+    "destinationEntityForEntityMapping:",
+    "setMask:",
+    "setFocusRingType:",
+    "orderFrontStylesPanelInWindow:textView:",
+    "_imageForDivider:keyWindow:",
+    "_subclassDescriptionsForDescription:",
+    NULL,
+    "setAllowLoadingOfUnsupportedPreviewTypes:",
+    "defaultNeutralTint",
+    "_setDisableLiveResizeImageCaching:",
+    NULL,
+    "_addTrackingRects",
+    "_selectionIndexesCount",
+    "_isFileClosed",
+    "usesEPSOnResolutionMismatch",
+    "_storeRootDirectory",
+    "_toolbarButtonIsClickable",
+    "initWithUser:",
+    "_valueForOptionalCocoaAttributeKey:fromElement:",
+    "performInvocation:waitUntilDone:",
+    NULL,
+    "compileStatusForSourceOfType:",
+    "setRegistryString:",
+    "emapROI:forRect:",
+    "_bodyBackgroundColor",
+    "_adjustObject:mode:triggerRedisplay:",
+    "_drawTitlebar:",
+    "tokenTextView:shouldUseReadablePasteboardTypes:",
+    "setSingleTableEntity:",
+    "initWithCIFilterShape:",
+    NULL,
+    "_notifyView_InsertedNewItem:atIndex:",
+    "_addActionFrom:toDictionary:forCarbonMenu:base:",
+    "productionApertureExceedsMaximumTexture",
+    "predicateForFetchRequestInContext:",
+    "addedPeople",
+    NULL,
+    NULL,
+    "stopMetaDataControllerAndWait",
+    "_updateLocalizedDictionaryForNewLocalizedKeyTable",
+    "setControlsFixed:forKeyFrame:",
+    "pushInvocation:",
+    "writeOutInfo",
+    NULL,
+    "setIncludesPropertyValues:",
+    "isKindOfEntity:",
+    "horizPass9ROI:destRect:",
+    "nts_ShouldLaunchABDForListening",
+    "defaultKnob",
+    "doShowResource:",
+    "_menuMinimumWidthForEvent:inCellFrame:ofView:",
+    "isValidColorSpace:",
+    "requiresDirectKeyValueCodingCall",
+    "previewPanel:didChangeDisplayStateForURL:",
+    "setPrimitiveModificationDate:",
+    "selectionAffinity",
+    "_unregisterUniqueContext:",
+    NULL,
+    "mark",
+    "setCollapsesBorders:",
+    "_wantToBeModal",
+    "highlightRecovery:pattern:clipLevels:redPhase:greenPhase:bluePhase:redBlueSwap:image:",
+    "_stopUsingDevice",
+    "chooseRollOverIdentifier:withSelection:",
+    "enableMakeHistory",
+    "initWithBinder:object:",
+    "processDocument:",
+    "_separatorFinishInit",
+    "getInputRampParams",
+    "_fadeFindIndicator:",
+    "rectArrayForCharacterRange:withinSelectedCharacterRange:inTextContainer:rectCount:",
+    "setShouldBeVisibleOnlyOnCurrentSpace:",
+    "_validateOpacitySlider",
+    "_computeNominalDisplayedLabelSize",
+    NULL,
+    "redoActionName",
+    "_doResetOfCursorRects:revealovers:",
+    "portWithMachPort:options:",
+    "setAccessoryControllers:",
+    NULL,
+    "prepareMatches:",
+    NULL,
+    "autoPlayNextItem:",
+    "exifOrientation",
+    "standardizedPath",
+    "applicationWillTerminate:",
+    "_adjustEditedCellLocation",
+    NULL,
+    "_isURLString:",
+    "attributeForLocalName:URI:",
+    "_setApplicationIconImage:setDockImage:",
+    "calcDrawInfo:",
+    "_readAcceptCookiesPreference",
+    "saveResolutionData:into:",
+    "_contextMenuEvent",
+    "setCenter:",
+    "previewView:receivedDrop:forURL:",
+    "abEllipsizeWithFont:withWidth:",
+    "baseOptions",
+    "accessInstanceVariablesDirectly",
+    "_setHighlighted:displayNow:",
+    "ivarOutputPorts",
+    "draggingDestinationWindow",
+    "AddressKeys",
+    "W",
+    "_hasTabs",
+    "minimunWindowWidth:",
+    "href",
+    "execLoading",
+    NULL,
+    "_oneWordName",
+    "_handleFrameChangeForSubview:",
+    "_noteLengthAndSelectedRange:",
+    "mainWindowController",
+    "additionalDuration",
+    "valueAtIndex:inPropertyWithKey:",
+    "_characterCoverage",
+    "_compositionInfo",
+    "closeInspector:",
+    "removeRunLoop:",
+    "stopTimer",
+    "sizeToCells",
+    "enumeratorOfInputRampParams",
+    "getDocument:docInfo:",
+    "animationChannelEnabled:",
+    "destinationEntityExternalName",
+    NULL,
+    "_setWasReshapingEnabled:",
+    "_setup",
+    "_scriptingPointWithDescriptor:",
+    "valueForBinding:atIndex:resolveMarkersToPlaceholders:",
+    "_verifySelectionIsOK",
+    "setValue:inObject:",
+    "_registerForDragTypes",
+    "autosavesConfiguration",
+    "createNewMaskedImage:",
+    "makeKeyWindow",
+    "initializeRecipe:",
+    "usesVisualContext",
+    "_isSynchronous",
+    "isRendering",
+    "_debugDrawRowNumberForRow:clipRect:",
+    "_removeCurrentColor",
+    "_scrollColumnToVisible:private:",
+    "_decipherOnlyUsage",
+    "_validateLinkTargetCarbonCatalogInfo",
+    "insertionIndexForGroup:",
+    "code",
+    "initWithContentKind:occurrence:",
+    NULL,
+    "_setCurrentPreview:documentPreview:displayedView:canDelayDisplay:transition:",
+    "numberOfRows",
+    "setCurrentIndex:",
+    "_hasActiveAppearanceIgnoringKeyFocus",
+    NULL,
+    "_rulerAccViewCenterTabWell",
+    "_writeRTFInRange:toPasteboard:",
+    "setUseOriginalLayerToDraw:",
+    "blackColor",
+    "newFaultingPredicateForSourceID:andRelationship:",
+    "convertFont:toFamily:",
+    "_detatchNextAndPreviousForView:",
+    "matchesOnMultipleResolution",
+    NULL,
+    "removeEntriedOlderThanSessionID:",
+    "initWithContentRect:contentImage:forView:selfDestruct:",
+    "sidebarController",
+    "tabDelimitedTextData",
+    "encodeSize:forKey:",
+    "showsStateColumn",
+    "heightFieldImage:withBlur:usingDistortion:andInitialConditions:",
+    "evaluateString:",
+    "setTrack:",
+    "entity",
+    "_modifySelectedObjects:useExistingIndexesAsStartingPoint:avoidsEmptySelection:addOrRemove:sendObserverNotifications:forceUpdate:",
+    "initWithTitle:action:keyEquivalent:representedNavNode:",
+    "abortAllToolTips",
+    "_backingColorSettingPhase:",
+    "takeObjectValueFrom:",
+    "_installCarbonAppDockHandlers",
+    "updateSyncIndicatorsReloadItems:",
+    "_setInitialNameFieldContentsFromPosixName:",
+    "allowedTypes",
+    "displayID",
+    "appleEventCodeForReturnType",
+    "changeValue:forKey:",
+    "_drawDropHighlightOutlineForRow:",
+    "leadingOffset",
+    "dataWithCapacity:",
+    "_addInsertsToDatabaseOp:forManyToMany:",
+    "didChangeValueForKey:",
+    "mipmapDBIndex",
+    "_getRow:column:forPoint:",
+    "show:",
+    NULL,
+    "qfilter",
+    "addPageToSelectedPages:drawNow:",
+    "colorWithRGBA:",
+    NULL,
+    "addressEntityWithValue:",
+    "keysForLocalizedString:",
+    "validateRename",
+    "_undoInsertions:",
+    "setAuthorization:",
+    "_adjustLength",
+    "requestType",
+    "clearVarietyCharSets",
+    "recentPicturePopup:willPopupRecentItems:",
+    "buildRepresentationFromSearchElement:builder:order:",
+    "pageAtIndex:",
+    "diffuseROI:destRect:",
+    "setColor:",
+    "URLProtocol:didReceiveAuthenticationChallenge:",
+    NULL,
+    "_mergeRegionInvalidatedDuringDisplayIntoDirtyRegion",
+    "_printSettingsWasEdited",
+    "controlTextDidChange:",
+    "_processDeletedObjects:",
+    "nameSorting",
+    "createImageForVNodeAtPath:maximumSize:",
+    "_moveUp:",
+    "contentObjectWithEditedMode:contentIndex:",
+    "firstStringValueOfProperty:",
+    "resultsTable",
+    "_setForceFixAttributes:",
+    "__createConnectionFrom:to:forKey:withUserInfo:",
+    "_drawHighlightWithFrame:inView:",
+    "perform:with:",
+    NULL,
+    "_updateForLiveResizeWithOldSize:",
+    "addCertificate:to:forUser:domain:settings:",
+    "dataPtr",
+    "_isCString",
+    "_setCredentials:",
+    "endAngle",
+    "delete",
+    "didMatchString:",
+    "resizeLeftCursor",
+    "setGroups:",
+    "_setEntity:",
+    "_errorOffendingObjectDescriptor",
+    "beginTransaction:",
+    "accessibilitySetSelectedTextAttribute:",
+    "_trackingAreasDirty",
+    NULL,
+    "nts_Cleanup",
+    "zoomOutY",
+    "addressBookMetaDataDirectory",
+    "_makeNextCellOrViewKey",
+    "_setUsesLightBottomGradient:",
+    "_valueInMultiValue:",
+    "_invalidateForKeyChange",
+    NULL,
+    "setIKView:",
+    "_undoableSetGizmoPositionWithDisplay:",
+    "_clearDragMargins",
+    "_drawView:",
+    "cellIndexAtPoint:",
+    "initWithFrame:mode:cellClass:numberOfRows:numberOfColumns:",
+    NULL,
+    "_request",
+    "_stopObservingRowObjectsRecursively:",
+    "textView:menu:forEvent:atIndex:",
+    "setMinCount:",
+    "scalesWhenResized",
+    "propertyForKey:",
+    "addRows:",
+    NULL,
+    NULL,
+    "_updateSeekingSubmenuWithScreenPoint:viewPoint:event:",
+    NULL,
+    "topChangeCommand",
+    "_constructTitleMappingDictionariesFromOptionDictionaries:localizationItemIndex:",
+    "_setWin32MouseActivationInProgress:",
+    "willStopRenderingPatch:",
+    "unsignedShortValue",
+    "_compareWidthWithSuperview",
+    NULL,
+    "_ensureDatabaseMatchesModel",
+    "_setBrowserOptimizationsEnabled:",
+    "_compositeFlipped:inRect:fromRect:operation:fraction:",
+    "pointSizeFromAppearanceTokens:",
+    "tableView:defaultSubRowForRow:",
+    "setAnnotation:ofType:",
+    "encodeValueOfObjCType:at:",
+    "_windowTitlebarTitleMinHeight:",
+    "_refreshServerList",
+    "popUpWithEvent:inView:",
+    "ensureLayoutForBoundingRect:inTextContainer:",
+    "_drawSortIndicatorIfNecessaryWithFrame:inView:",
+    "_valueForBindingWithResolve:mode:",
+    "socketType",
+    "setIsSynchronous:",
+    "moveSelectionRight",
+    "appleEventCodeForKey:",
+    "_cancelActionIfCmdDot:",
+    "windowTitlebarLinesSpacingWidth:",
+    "processString:",
+    NULL,
+    "initWithInvocation:",
+    NULL,
+    NULL,
+    "setPreservesContentDuringLiveResize:",
+    "setSaveButtonAction:target:",
+    "_rebuildOrUpdateServicesMenu:",
+    "windowWillUseStandardFrame:defaultFrame:",
+    "_makeBranchTableForKeys:count:",
+    "reflection",
+    "handleTakePictureAbortedNotification:",
+    "setSuperviewBeingDeallocated:",
+    "_endedLoadingPreview:documentPreviewView:result:",
+    "tokenFieldCell:shouldUseDraggingPasteboardTypes:",
+    "_setWantsHideOnDeactivate:",
+    "_mutableIndexSetInAppliedGridForRect:",
+    "initWithEngine:indexHandler:",
+    NULL,
+    "readFromURL:ofType:",
+    "_concludeDefaultKeyLoopComputation",
+    NULL,
+    "_betweenDropGapSize",
+    "cardScrollView",
+    "_shadowType",
+    "tableView:namesOfPromisedFilesDroppedAtDestination:forDraggedRowsWithIndexes:",
+    "_confirmSize:force:",
+    "documentChangedIfDragSelectedPagesToIndex:",
+    "unsignedLongLongValue",
+    NULL,
+    "_setNeedsToRemoveFieldEditor:",
+    "_recursiveAllValues",
+    "setWraps:",
+    "_setView:",
+    "backupDatabaseToPath:",
+    "controller:didChangeToSelectionIndexPaths:",
+    "_setAlwaysDrawsActive:",
+    "drawInRect:angle:",
+    "parseBody:",
+    "setDraggingDestinationDelegate:",
+    "insertChild:atIndex:",
+    "setLoaded:",
+    "setWhite:",
+    "_organizationUnit",
+    "_javascriptFromKernel:",
+    "currentButtonCell",
+    "rangeOfUnit:inUnit:forDate:",
+    "initFromPreferencesWithApplicationID:",
+    "setObject:atIndex:forDatabaseKey:",
+    NULL,
+    NULL,
+    "foregroundColor",
+    "IKIPJPEGDataWithMaxSize:compression:",
+    "_modelsReferenceID",
+    "endPoint",
+    "int32Value",
+    "parameterString",
+    "executeSaveChangesRequest:withContext:",
+    "numberWithUnsignedInteger:",
+    NULL,
+    "_resumeLayerTreeRenderer",
+    "SQLGenerationV1Default",
+    "_drawMenuIndicatorForSegment:withRect:inView:",
+    "_setup:state:",
+    "_rowHeaderSeparatorLineColor",
+    "scrollRowToVisible:",
+    "logicalSize",
+    "setupImportPanelWithTitle:selector:target:object:",
+    "isExecuting",
+    "getCount",
+    "rawIntegerRowsForSQL:",
+    "getNthInputImagePort:",
+    "pixelDepth",
+    "_displayWidth",
+    "membersController",
+    "_handleSelfTestEvent:",
+    "_didPresentModalAlert:contextInfo:",
+    NULL,
+    "_doAttachDrawerIgnoreHidden:",
+    "_setPreviousKeyWindow:",
+    "substituteFontForFont:",
+    "nextPersonWithLength:addressBook:",
+    "seed",
+    "_nonPredicateValidateValue:forKey:inObject:error:",
+    "_descriptionWithTabCount:",
+    "_computedAttributesForElement:",
+    "setOrigin:rotation:scale:",
+    "unregisterMovieNotifications",
+    "_linkDragCursor",
+    "_installPBuffer",
+    "initWithEvent:inView:",
+    "splitCell:range:",
+    NULL,
+    "initWithType:location:",
+    "allImportableFilesFromPaths:",
+    "_searchInDictionary:",
+    "poseAs:",
+    NULL,
+    "handleUserGoUpDirectory",
+    "setButtonID:",
+    "parseOid:",
+    "imagePickerValidated:code:contextInfo:",
+    "itemBoundsInScreenCoordinatesForItem:itemIndex:",
+    "maxTimeLoaded",
+    "bindMipmapItem:withUID:",
+    "_combobox_windowDidBecomeKey:",
+    "setSerialNumber:",
+    "processCells:withBrowser:",
+    "groupsController:outlineView:child:ofItem:",
+    "lineFragmentRectForGlyphAtIndex:effectiveRange:withoutAdditionalLayout:",
+    NULL,
+    "initWithExpressionType:",
+    "arrayByAddingObjectsFromArray:",
+    "imageWithCGImage:options:",
+    "pdfDocument",
+    "eMapResult:eMap:type:",
+    "_scriptTerminologyName",
+    "colorAtIndex:filtered:",
+    NULL,
+    "_postDidChange",
+    "openOnEdge:",
+    "constrainResizeEdge:withDelta:elapsedTime:",
+    "getRGBColorValue",
+    "setLineDash:count:phase:",
+    NULL,
+    "_setWasCGOrderingEnabled:",
+    "setAllowsCutCopyPaste:",
+    "imageByApplyingEffects:",
+    "context",
+    "_setTextShadow:",
+    "_performMutatorOperation:object:index:",
+    "effectDescriptionWithDictionary:",
+    "recentSearches",
+    "authenticateComponents:withData:",
+    "_RTFDFileWrapper",
+    "showFlare",
+    "setMenuRepresentation:",
+    "removeObjectsForKeys:",
+    "textureTarget",
+    "accessibilitySetSelectedColumnsAttribute:",
+    "_autoLockStepper",
+    "_setKnobThickness:usingInsetRect:",
+    "lockRequestWithSession:URI:duration:",
+    "_contextMenuTarget",
+    "setCacheSize:",
+    "setDefaultPreferencesClass:",
+    "_setAllPossibleLabelsToFit:",
+    "setDeltas:",
+    "vrTrack",
+    "recursiveSetImpliedPropertiesForAnimation:object:keyPath:targetValue:",
+    "initWithCGLContext:pixelFormat:colorSpace:composition:",
+    "iconAsAttributedString",
+    NULL,
+    "_setNeedsToolTipRecalc:",
+    "setSelectedRecords:",
+    "setStyleMask:",
+    "fireDate",
+    NULL,
+    NULL,
+    "_shouldValidateMenuFormRepresentation",
+    "_autosaveForTimer:",
+    NULL,
+    "updateImageView",
+    "_viewGlobalFrameDidChange:",
+    "_invalidateOrComputeNewCursorRectsIfNecessary",
+    "foreignKeyConstraintDefinitions",
+    "setShowsAlpha:",
+    "characterRangeForGlyphRange:actualGlyphRange:",
+    "_startTableRowDefinition",
+    "stringWithCString:encoding:",
+    "initWithNotificationCenter:",
+    "setBrowser:",
+    NULL,
+    "_redisplayCellForNode:",
+    "favoriteAttributesForName:",
+    "_viewDidDrawInLayer:inContext:",
+    "_updateIndicators",
+    NULL,
+    "nts_LaunchABDIfNeeded",
+    "setImagingModeAllowsGWorld:",
+    "generateMetadataDescription",
+    "sharedTextRulerOptions",
+    "updateMultiValue:forProperty:changes:",
+    "_valueAsFilePath",
+    "_appInactive:",
+    "_descriptorByTranslatingString:ofType:inSuite:",
+    NULL,
+    "frameCenterRotation",
+    "addMigratedStoreToCoordinator:withType:configuration:URL:options:error:",
+    "usesUnnamedArguments",
+    "setPosition:ofDividerAtIndex:",
+    "_caConfigFileExtension",
+    "_vCard21RepresentationOfRecords:",
+    "_loadMenuItemIconsIfNecessary",
+    "dataReferenceWithReferenceToURL:",
+    "initWithFileAttributes:",
+    NULL,
+    "setApertureMode:",
+    "handleFailureInMethod:object:file:lineNumber:description:",
+    "propertyCache",
+    "_mouse:force:",
+    "isLocationRequiredToCreateForKey:",
+    "deleteConnection:",
+    "_rowHeaderShadowSurface",
+    "_fontFromDescriptor:",
+    "_setDiskHost:port:scheme:",
+    "setHorizontallyResizable:",
+    "postExternalChangeDEMNotificationForEngineType:onDisplayID:",
+    "initWithDuration:animationCurve:",
+    "descriptorWithDescriptorType:bytes:length:",
+    "setKeyEquivalent:",
+    "unlockFocus",
+    "setData:dataSourceIndex:subIndex:",
+    "drawInRect:onView:pinToTop:",
+    "_windowMovedToRect:",
+    "disableDisplayPositing",
+    "_propertyChanged:",
+    "editingHasEnded:",
+    "_setPageOrderFromPrintInfo",
+    "setAutomaticallyMinimizeRowMargin:",
+    "queryNode",
+    "legendVisible",
+    "_countForKeyPath:",
+    "objectByApplyingXSLTString:arguments:error:",
+    "showGuessPanel:",
+    "originalImagePathForRecent:",
+    "_scriptingObjectAtIndex:inValueForKey:",
+    "supportedPixelBufferFormatsForFormat:",
+    "databaseChangedForUserInfo:groupsChanged:peopleChanged:",
+    "mouseMoved:",
+    "appendClause:forKeyPath:allowToMany:",
+    "isPartialStringValid:proposedSelectedRange:originalString:originalSelectedRange:errorDescription:",
+    "_middleViewFrameChanged:",
+    "willCurrentItemBeExportedToiPhoto",
+    "_booleanValueForAttributeKey:fromElement:",
+    "browser:writeRowsWithIndexes:inColumn:toPasteboard:",
+    "fileExtensionHidden",
+    NULL,
+    "setAutoBackupEnabled:",
+    "_smallEncodingGlyphIndexForCharacterIndex:startOfRange:okToFillHoles:",
+    "setMaxViewFrameSize:",
+    "closeAllDocuments",
+    "shouldAntiAlias",
+    "scaleSegment:newDuration:",
+    "dataWithContentsOfURL:error:",
+    "compareObject:toObject:",
+    NULL,
+    "_hitTestForEvent:atColumn:row:",
+    "createBoxDictionary",
+    "parseTEL",
+    "_limitedViewMenuItemWantsRedisplay:inRect:",
+    "loadImageWithName:",
+    "collapseGroup:",
+    "setupWindowNotifications:",
+    NULL,
+    "TIFFRepresentationOfImageRepsInArray:usingCompression:factor:",
+    "_releaseEffect",
+    "previewView",
+    "_setEntityTag:",
+    "accessibilityOverriddenAttributes",
+    "performSublayout",
+    "zeroSymbol",
+    "_setAutoPositionMask:",
+    "hasUnsavedChanges",
+    "openGLUnlock",
+    "_updateNameFieldContentsFromHideExtensionButtonState",
+    "finishAddingGroupDictionaryRepresentations:recordsByUniqueId:",
+    "_fieldEditorUndoManager",
+    "_nextNonHiddenColumnFromColumn:",
+    "subEffectWithID:",
+    "controlTextDidEndEditing:",
+    "setAutosaveName:",
+    "persistentStoreCoordinator",
+    "clearsBackground",
+    "initWithAppleEventCode:alernativeTypeDescriptions:",
+    NULL,
+    "Z",
+    "_deallocateGState",
+    "setOrientation:",
+    NULL,
+    "isCopyingOperation",
+    NULL,
+    "replaceGlyphAtIndex:withGlyph:",
+    "_sendSelectionChangedNotification",
+    "textEditor",
+    "sourceOfType:",
+    "_userCanSelectIndex:",
+    NULL,
+    "setAlwaysUsesMultipleValuesMarker:",
+    NULL,
+    "loadColorLists",
+    "slideshowWillStart",
+    "countOfInputWhiteParams",
+    "initWithContextAttributes:",
+    "_scriptingCanAddObjectsToValueForKey:",
+    "recordSnapshot:forObjectID:",
+    "suspendRendering",
+    "startNicestRendering",
+    "stateKeysWithIdentifier:",
+    NULL,
+    NULL,
+    "setPublicRecord:",
+    "getProposedHUDFrame",
+    "_registrationDictionaryForUnitNamed:",
+    "_setStatesImmediatelyInObject:mode:triggerRedisplay:",
+    "currentConversation",
+    "setCountKeyPath:",
+    "isCustomProperty:returnType:customProperty:addressBook:",
+    "indexPathForOutlineView:row:",
+    "_affectedExpandedNodes:",
+    "stepKey:elements:number:state:",
+    "nts_ImportMailRecentsFromMetaKitIfNeededIntoContext:",
+    "setEchosBullets:",
+    "_hasActiveRequest",
+    "queryStringChangedForSearchController:",
+    "sharedPrintInfo",
+    "_stopAutoExpandingItemFlash",
+    "_portFromSelector:",
+    "CGX_initWithTexture:size:flipped:isDest:",
+    "_stepperCellValueChanged:",
+    "_web_looksLikeAbsoluteURL",
+    "_updateRefreshTimer",
+    "adjustedWindowFrameForOpening:",
+    "graphicsContextWithAttributes:",
+    "_processEndOfEventNotification:",
+    "blueColor",
+    "_parseDocumentAttributes2",
+    NULL,
+    "showsInvisibleCharacters",
+    "_characterIndexForMoveBackwardFromSelectedRanges:",
+    "initComponent",
+    "_accessibilityToolbarItemLabelAtIndex:",
+    "_drawBezelBorder:inRect:",
+    NULL,
+    "setServicesMenu:",
+    "initWithIndexesInRange:",
+    "IKEditPanelLocalizedString:",
+    "controlAlternatingRowColor",
+    "setFileType:",
+    "initWithDOMRange:",
+    "updateAndOrUI",
+    "setActions:",
+    "_compiledScriptID",
+    "urlPathRelativeToPath:",
+    "_supportedPixelFormatsForContext:compatibility:",
+    "mergeMultiValue:forProperty:",
+    "replyToApplicationShouldTerminate:",
+    "_specifiesSetting",
+    "_shouldAutoscrollForDraggingInfo:",
+    "setBinaryAttributes:",
+    NULL,
+    "_hasBackgroundColor",
+    "initWithContentsOfURL:",
+    "_emptyRulePartSubviews",
+    "endDrawingInView:",
+    NULL,
+    "resetDisplayedMemberSubrows",
+    "cacheResolutionInfoForResolution:createIfNeeded:",
+    "_highlightSelectedItem:",
+    "_swapToolbarItemViewerPreviousToView:",
+    NULL,
+    "_removeTabViewItems:",
+    "isToManyCountKeyPath:",
+    "parser:foundAttributeDeclarationWithName:forElement:type:defaultValue:",
+    "imageRepWithCIImage:",
+    "_codeSigningUsage",
+    "parseVERSION",
+    "_drawToolbarTransitionIfNecessary",
+    "_setCSR:",
+    "setIsDraggingOver:",
+    "animatedCellsArrayCache:",
+    "stringWithContentsOfFile:usedEncoding:error:",
+    "_attrStatusString:status:",
+    "presentableName",
+    "_loadScriptSuites",
+    "initWithName:color:image:",
+    NULL,
+    "timebase",
+    "initWithPage:atPoint:",
+    "contextWithCGLSContext:pixelFormat:options:",
+    "setWindowsNeedUpdate:",
+    "sharedBuddyStatus",
+    "initWithKeychainItem:",
+    "initWithCGImage:",
+    "setSubject:",
+    "_editNode:",
+    "_drawGrid:",
+    NULL,
+    "shouldAlwaysUpdateDisplayValue",
+    "nts_PopulateWithDictionary:withRecordMapping:generateIds:includeCoreProperties:addressBook:",
+    NULL,
+    "_didDeleteFile",
+    "_flattenMenu:",
+    "_setLayerBackedOpenGLContext:",
+    "requiresProxyAuthCredentials",
+    "nicestImageForSize:forGLRendering:cacheIt:",
+    "setFirstWeekday:",
+    "minimalFormInContext:ofPredicate:",
+    NULL,
+    "interruptExecution",
+    "addConflictingRecord:",
+    "_sendDirectoryDidChange",
+    "sendReleasedProxies",
+    "_liveResizeCachedImage",
+    "structureValue",
+    "isAbsolutePath",
+    "resetRecordsWithUniqueIds:",
+    "_deactivate",
+    NULL,
+    "superclass",
+    "xmlNode",
+    "samplerWithImage:options:",
+    "_startLiveResize",
+    "alignOnPixelValue",
+    "_scriptingIndexOfObjectForSpecifier:",
+    "sharedSystemTypesetterForBehavior:",
+    "_recalcRectsForCell:",
+    "groupIndexForGridIndex:",
+    "sharedColorPanelExists",
+    "handleNotification:",
+    "setPageScroll:",
+    "_doPath",
+    "_setShowPlayButton:showPageButtons:",
+    "regularImageForState:",
+    "toggleTraditionalCharacterShape:",
+    "threadedExecScript:",
+    "attachedViewFrameDidChange:",
+    "_focusRingFrameForFrame:cellFrame:",
+    "_briefDescription",
+    "parentGroupsIncludingSubscriptions",
+    "initWithIndexSet:",
+    NULL,
+    "_inputController",
+    "scaleBy:",
+    "isThreadRunning",
+    "createCGColor",
+    NULL,
+    "cacheRect:",
+    "_SMPTETime",
+    "getArgumentTypeAtIndex:",
+    "positionOfGlyph:struckOverGlyph:metricsExist:",
+    "_tempHideHODWindow",
+    "initWithImageManager:openGLContext:options:",
+    NULL,
+    "_displayID",
+    "principal",
+    "_getRowRange:columnRange:inRect:",
+    "fixParagraphStyleAttributeInRange:",
+    "_outlineIsOn",
+    "_sendActionAndNotification",
+    "download:willResumeWithResponse:fromByte:",
+    "characterSetWithContentsOfFile:",
+    "releaseCGLPixelFormat:",
+    "_leftmostViewFixedHorizontalPadding",
+    "allowEditing",
+    "resourceForData:preferredFilename:",
+    "autoresizingMask",
+    "frameOfDocumentAtIndex:",
+    "_invertCurrentEffect",
+    "xAtColumn:",
+    "_updateFirstItemIfNecessary",
+    "cellClass",
+    "doCommandBySelector:",
+    "_closedHandCursor",
+    "multiStatusRequestWithURL:method:",
+    "initTitleButton:",
+    "isStateKey:",
+    NULL,
+    "initializeCell:",
+    "dataWithContentsOfURL:options:error:",
+    "_draggingUpdatedForFilenameDrop:inProposedItem:",
+    "contextWithBitmap:rowBytes:bounds:format:options:",
+    "loadItemAtIndexWithTransition:",
+    "nts_GroupsAtRemoteLocation:withAddressBook:",
+    "previewPanel:frameForURL:",
+    "downloadDidFinish:",
+    "setIsInInterfaceBuilderSimulator:",
+    "safeURLFromString:",
+    "dragImageForSelectionWithEvent:origin:",
+    NULL,
+    NULL,
+    "_moveParent:andOpenSheet:",
+    "_rightMouseDownOnSlice:withEvent:",
+    "_worksWhenModalOrChildOfModalWindow",
+    "_makeCellForMenuItemAtIndex:",
+    "noteFileSystemChanged",
+    "firstComponent:",
+    "outlookWebAccessPathFromUserString:withUserName:",
+    "colorAtX:y:",
+    "setSelectedFont:isMultiple:",
+    "result",
+    "initWithPasteboard:error:",
+    "releaseDisplayList",
+    NULL,
+    "redBayerReconstructionProcessedROI:destRect:",
+    "_updateUnprocessedOwnDestinations:",
+    "_changeSortDescriptorsForClickOnColumn:",
+    "_setVersionNumber:",
+    "moveWordRight:",
+    "knobProportion",
+    "_propagateBackgroundStyle",
+    "tooltipStringForPoint:tooltipBounds:",
+    NULL,
+    "defaultNamespaceForURI:",
+    "indexLabelAtIndex:",
+    "attributesAtIndex:effectiveRange:inRange:",
+    "_setLengthOfStatusItem:to:",
+    "object:withObservance:willChangeValueForKeyOrKeys:forwardingValues:",
+    "initWithNSImage:",
+    "beginParagraph",
+    "updateDragProgress",
+    "_surfaceBackedOpenGLContext",
+    "CA_stringByDeletingLastPathComponent:",
+    "keyForPort:",
+    "setPrefersColorMatch:",
+    "selectedImageForControlTint:",
+    "_enableItems",
+    "_releaseCapture:",
+    "__frameChanged:",
+    "pairWithKey:value:",
+    "_delegateRespondsToShouldShowCellExpansion",
+    "_isInCustomizationMode",
+    "_commonAwake",
+    "_ipAddress",
+    NULL,
+    "_writeRTFInRanges:toPasteboard:",
+    "setPackage:",
+    "autoconfigureFromProtocol:",
+    "_documentIndexWithDelta:",
+    NULL,
+    "sobelEdgesROI:destRect:",
+    "nonSelectedTabTextColor",
+    "initWithDefaultAttributes:",
+    "_endOfLastNonHiddenColumn",
+    NULL,
+    NULL,
+    "nicestRenderingPriority",
+    "prepareForPrimaryKeyGeneration",
+    "_setNoVerticalAutosizing:",
+    "_drawWindowsGaugeRects:",
+    "undoHack:",
+    "groupSelectionChangedInPeabody:",
+    "ISS_URLWithoutPassword",
+    "setShouldResolveExternalEntities:",
+    NULL,
+    "_setKeyWindow:",
+    "maxSize",
+    NULL,
+    "autoDistinct",
+    NULL,
+    "_createPBuffer",
+    "selectRowsWithStatement:",
+    "lineFragmentUsedRectForGlyphAtIndex:effectiveRange:allowLayout:",
+    "isSelectionByRect",
+    "errorProc",
+    "defaultStringDrawingTypesetterBehavior",
+    "fileIsImmutable",
+    "isMobileHomeUser",
+    "_containerObservesTextViewFrameChanges",
+    NULL,
+    "previewPanel:didLoadPreviewForURL:",
+    "_menuDidEndTracking:",
+    NULL,
+    "getRequestWithSession:URI:ifModifiedSince:includeRangeHeader:rangeStart:rangeEnd:localDestination:",
+    "_rename:as:",
+    "_updateOkButtonEnabledState",
+    "setScanLocation:",
+    "_setTrustWithPolicies:",
+    "insertObject:atIndex:forKey:",
+    "cleanupChallenges",
+    "_createFloatStorage",
+    "_objectClassName",
+    "_printForCurrentOperation",
+    "_compareSingleArrayWithRecordValue:",
+    NULL,
+    NULL,
+    "elementsForName:",
+    "canDecodeDownloadHeaderData:",
+    "setPathSeparator:",
+    "subtype",
+    "dataRepresentationFromCGRepresentationWithCompressionFactor:",
+    "_storeDeallocated",
+    "horizontalScroller",
+    "eventClass",
+    "quickTimeChapterTrack",
+    NULL,
+    "domainName",
+    "appendData:length:",
+    "sampleSize",
+    "drawKnob",
+    "doSendAppleEventOfKind:",
+    "addSublayer:",
+    "_integrateReferenceInstance:",
+    "expressionValueWithObject:context:",
+    "initWithCatalogName:colorName:genericColor:",
+    "fetchRowForObjectID:",
+    "imageWithTexture:size:options:",
+    "takeStringValueFrom:",
+    "gotoNextItem",
+    "setNeedsExecution",
+    "isAddressBook",
+    "speechSynthesizer:didEncounterSyncMessage:",
+    "delayedProcessLogonButtonClick:",
+    NULL,
+    "tableView:didDragTableColumn:",
+    NULL,
+    NULL,
+    "_newSelectStatementWithFetchRequest:ignoreInheritance:",
+    "completes",
+    "setSession:",
+    "extendedAttributeForKey:atPath:error:",
+    "_undoStack",
+    "fileNameExtensionsAndHFSFileTypes",
+    "countForFetchRequest:inContext:",
+    NULL,
+    NULL,
+    "transformedImage",
+    "validateValue:forKey:error:",
+    "_setHideWithoutResizingWindowHint:",
+    "_cleanUpConnectionWithSynchronizePeerBinders:",
+    "uniqueNameWithBase:",
+    "_revealoverInfoForCell:cellRect:",
+    "PDFOperationWithView:insideRect:toData:",
+    "attributesForExtraLineFragment",
+    "controlAlternatingRowBackgroundColors",
+    "documentViewResized:",
+    "invalidate",
+    "_invalidateTabsCache",
+    "keyPathsForValuesAffectingValueForKey:",
+    "_currentModifierFlags",
+    "_volumeSupportsLongFilenamesForRefNum:",
+    "setInsertsNullPlaceholder:",
+    "directoriesPane",
+    "_web_stringRepresentationForBytes:",
+    "_runArrayHoldingAttributes",
+    NULL,
+    "getNumberOfInputImagePorts",
+    "accessibilityFocusedUIElement",
+    NULL,
+    "rotationMode",
+    NULL,
+    "timeLinesCount",
+    "_noteFirstTextViewVisibleCharacterRangeIfAfterIndex:",
+    "isSessionOnly",
+    "indexOfObject:inRange:",
+    "ISS_hasKey:",
+    "_shouldDispatch:invocation:sequence:coder:",
+    "_completionsFromDocumentForPartialWordRange:",
+    "setSynchronized:",
+    "setSelectionMode:",
+    "isDirectoriesPaneVisible",
+    "_RTFWithSelector:range:documentAttributes:",
+    "_endCustomizationMode",
+    NULL,
+    "mipmapDataInfoWithUID:",
+    "_drawDropHighlightBetweenUpperRow:andLowerRow:atOffset:",
+    "dataWithContentsOfURL:",
+    "_globalIDForObject:",
+    "replaceChildAtIndex:withNode:",
+    "pathWithComponents:",
+    "_hasDefaultButtonIndicator",
+    "initWithGroup:addressBook:",
+    "_stopGotoWithCode:",
+    "offsetByX:Y:",
+    NULL,
+    "bitmapRepresentation",
+    "trackAtIndex:",
+    NULL,
+    "stopExecution:",
+    "colorSpaceName",
+    "_contextMenuImpl",
+    "removeFileWrapper:",
+    "titleComponentAtIndex:",
+    "_uploadLocalFileAtPath:toPath:",
+    NULL,
+    "isEqualToOrderedSet:",
+    "accessibilityMinimizedAttribute",
+    "columnsToFetch",
+    "nameValueForConjoinedSearchElement:comparison:",
+    NULL,
+    "preventWindowOrdering",
+    "_sizeHasBeenSet",
+    "containsDisplayValue:",
+    "imageRepWithPasteboard:",
+    "addPerson:",
+    "getLocalizedLabels:andLocalizedValues:",
+    "hasBleedBox",
+    "setContentWidth:type:",
+    NULL,
+    "_setIsContextualMenu:",
+    "CA_interpolateValue:byFraction:",
+    "drawBulletAtPoint:shape:inContext:",
+    "_cellContentForNode:columnIdentifier:",
+    "_refreshFormatDescriptionsAttributeFromCallback",
+    "_setIntegerValue:",
+    "databaseOperationForObject:",
+    "processEntityReference:",
+    NULL,
+    "setCurrentContext:",
+    "setMoviePort:",
+    "_commonSecureTextFieldInit:",
+    "findFontLike:forString:withRange:inLanguage:",
+    "setFrameLoadDelegate:",
+    "_allowsActiveInputContextDuringMenuTracking",
+    "selectedAttributes",
+    "_hasImage",
+    "slideshowPrev:",
+    "objCType",
+    "accessibilityIsMainWindowAttributeSettable",
+    "_setOrganization:",
+    "_previewCurrentPageForPrintOperation:",
+    "_guess:",
+    "setRetainsRegisteredObjects:",
+    "stopCurrentPlayerIfAny",
+    "slideWindow:withNewContentView:direction:duration:delegate:",
+    "_engravedDisabledForegroundTextColor",
+    "openFile:ok:",
+    "_shouldUseAlternateImageForSegment:",
+    "recentRepositoryWithDomainName:",
+    "addStatistics:",
+    "keyViewSelectionDirection",
+    "_goToHistoryState:",
+    "_handleFileListModeChanged:",
+    "moveToFront",
+    "userInfo",
+    "_postItemDidCollapseNotification:",
+    "searchFieldCell:shouldChangeCancelButtonVisibility:",
+    "getAttribute:",
+    "initWithDataSource:ascending:",
+    NULL,
+    "beginEdits",
+    "fireDidSelectComposition",
+    "_postInvalidCursorRects",
+    "_arrayByTranslatingAEList:toType:inSuite:",
+    "_initParsingInformation",
+    "toolbarSelectableItemIdentifiers:",
+    "fileExistsAtPath:isDirectory:",
+    "placeHolderFrame",
+    "displaysMarkupAnnotations",
+    "_setBlobForCurrentObject:",
+    "_containsTrackingRect:",
+    "editSmartGroupSheetDidEnd:returnCode:contextInfo:",
+    "_threadedGenieFXFromWindow:toWindow:",
+    "numberWithUnsignedInt:",
+    "mergeInVariations:",
+    "canInitWithDataReference:fileTypes:",
+    "fireDidLoadComposition:",
+    "_minLinesWidthWithSpace",
+    "layoutTab",
+    "setVisible:",
+    "originalTemplate",
+    "setReadTimeOut:",
+    "_validateAsCommonItem:",
+    "_fastDrawString:attributes:length:inRect:graphicsContext:baselineRendering:usesFontLeading:usesScreenFont:typesetterBehavior:paragraphStyle:lineBreakMode:boundingRect:padding:scrollable:",
+    "_setUpDefaultTopLevelObject",
+    "_releaseLiveResizeCachedImage",
+    "_fullPathForService:",
+    "_genericUpdateFromSnapshot:",
+    "shouldPersist",
+    "_writeRulerInRange:toPasteboard:",
+    "_setNumVisibleColumns:",
+    "createInfoDictionary",
+    NULL,
+    "saveFavoritesToDefaults",
+    "setStandardUserDefaults:",
+    "postNotificationName:object:userInfo:options:",
+    "_editorCommittingFailedForSaveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:",
+    "setMouseUpAction:",
+    "invokeServiceIn:msg:pb:userData:error:",
+    "__oldnf_containsColorForTextAttributesOfNegativeValues",
+    "setNeedsSizing:",
+    "_setBackingStore",
+    "emailAddresses",
+    "IKIPImageWithMaxSize:withLeftPad:",
+    "_showFilesForBrowserType:",
+    "dissolveToPoint:fraction:",
+    "cacheKeyFrames",
+    "_dirtyRegion",
+    "userFontOfSize:",
+    "arrowCursor",
+    "_selectedScopeButton",
+    "setAnnotations:",
+    NULL,
+    "_initWithImpl:uniquedFileName:docInfo:imageData:parentWrapper:",
+    "scriptingValueForSpecifier:",
+    NULL,
+    "endHeaderComments",
+    "_changeShadowAngle:",
+    NULL,
+    "setupDisplay",
+    NULL,
+    "_validateVisibleToolbarItems",
+    "setEnabled:forSegment:",
+    NULL,
+    "setLoops:",
+    "_centerScanPoint:",
+    NULL,
+    "_addGrammarAttributesForRange:details:",
+    "italicAngle",
+    "allowsMultipleSubrowSelection",
+    "cellEnabled:",
+    "initWithPatch:",
+    "irisOpened:",
+    "_keyForNode:",
+    "removeResource:",
+    "setCanCreateDirectories:",
+    "_searchFieldCancel:",
+    NULL,
+    "_processRecentlyForgottenObjects:",
+    "_positionAndResizeSearchParts",
+    "addAppSmartFolderForNode:",
+    "tableView:selectionIndexesForProposedSelection:",
+    "_prepareGizmoPositionUndo:",
+    "startUsingDevice:",
+    NULL,
+    "parser:foundComment:",
+    "setTakesTitleFromPreviousColumn:",
+    "_insertionIndexForGroup:",
+    "setCustomInterpolation:",
+    "sharedAEDescriptorTranslator",
+    "_removeFontDescriptor:fromCollection:save:",
+    "rangeOfComposedCharacterSequencesForRange:",
+    "_postInitialization",
+    "vectorWithX:",
+    "allPeopleForRemoteLocation:",
+    "childArray",
+    "_insertObject:atArrangedObjectIndexPath:objectHandler:",
+    "currentSearch",
+    "_saveCredential:forProtectionSpace:isDefault:",
+    "_recursiveDisplayAllDirtyWithLockFocus:visRect:",
+    "_scriptingSetValue:forKey:",
+    "removeObjectFromSubNodesAtIndex:",
+    "_UTIextensionForMIMEType:",
+    "layerForThumbnail:",
+    "createImageFromNSFileWrapper:",
+    "stopRunning",
+    "insertItemWithTitle:atIndex:",
+    "_sizeTableColumnsToFitWithStyle:",
+    "draggedDistance",
+    "disposeTrack:",
+    "_setColorPanelColor:force:",
+    NULL,
+    "noDepthBuffer",
+    "setRoundingBehavior:",
+    "currentSearchCol",
+    "resizeIndicatorRect",
+    "_editorCommittingFailedForPrintDocumentWithSettings:showPrintPanel:delegate:didPrintSelector:contextInfo:",
+    "setGroupingSeparator:",
+    "importPromisedFiles:intoGroup:",
+    NULL,
+    "checkNetworkDiagnosticError",
+    NULL,
+    "customInputPorts",
+    "addDestinationToDictionaryRef:",
+    "_resetToolTipIfNecessary",
+    "_toolbarLabelFontSize",
+    "moveForwardAndModifySelection:",
+    "instanceMethodSignatureForSelector:",
+    "accessibilitySetSelectedRange:",
+    "localizationDictionary",
+    "writeToFile:options:error:",
+    "appliesImmediately",
+    "resetMetaData",
+    "resolveConflicts:",
+    "SCTExtractTitle",
+    "_registerForCompletion:",
+    "boundsForButtonCell:",
+    "clickCount",
+    "ciContext",
+    "displayedProperties",
+    "writeSuperscript:",
+    "setIntendedLanguage:",
+    "longForKey:",
+    "CA_stringByAppendingPathExtension::",
+    "requestBodyData",
+    "_dictionaryFromUser:",
+    "vertBlur32ROI:destRect:",
+    "_setShouldPostEventNotifications:",
+    "_updateKeychainItem:",
+    "builtInLabels",
+    "setAttributes:range:",
+    "_removed",
+    "selectNextRangeForward:",
+    "_defaultFontSet",
+    NULL,
+    "_fixKeyViewForView:",
+    "addDelta:forManyToManyKey:",
+    "dataValueOfProperty:",
+    "_iconSize",
+    "controlFillColor",
+    "_updateSoundShouldLoopByStoredLoopFlag",
+    "newObjectIDForToOne:",
+    "_sizeTableColumnsToFitForAutoresizingWithStyle:",
+    "governingAliasForKeypathExpression:",
+    "addKeyToBeUpdated:",
+    "_fastDrawGlyphs:advances:length:font:color:containerSize:usedRect:startingLocation:inRect:onView:context:pinToTop:",
+    "scheduleTrickleSyncRetry:allowingLock:",
+    "maxCharacterSetSize",
+    "defaultSortDescriptors",
+    "pathVector",
+    "setInputColor0:",
+    "initUnlockWithSession:URI:lockToken:",
+    "timerWithTimeInterval:invocation:repeats:",
+    "rootEntity",
+    "setFilename:",
+    "privateFrameworksPath",
+    NULL,
+    "_reactToFontSetChange",
+    "windowControllerWillLoadNib:",
+    "prebindMipmapItem:withUID:",
+    "removeEventHandlerForEventClass:andEventID:",
+    NULL,
+    "findPPDFileName:",
+    "setQuality:",
+    NULL,
+    "menuItem",
+    NULL,
+    "_setSubviewsAreAdjusted:",
+    "nts_PeopleAtRemoteLocation:withAddressBook:",
+    "testPart:",
+    "setAutomaticallyManageVisibility:",
+    "_scriptingFileDescriptor",
+    "_deselectAllExcept::andDraw:",
+    "parseADD",
+    "listMembersRequestWithSession:URI:showHidden:",
+    "EPSOperationWithView:insideRect:toData:printInfo:",
+    "quickTimeMovie",
+    "doCalcDrawInfo:",
+    "setByAddingObject:",
+    "_parseSummaryInfo:",
+    "_scrollArrowHeight",
+    "_configurePlusButtonByRowType:",
+    "_sortedAETEPropertyDescriptions:",
+    "_setJavaClassesLoaded",
+    "copyWithZoneDeep:",
+    "prepare",
+    "initWithBundleIdentifier:",
+    "initWithOpenGLID:size:offset:premultiplied:deleteWhenDone:",
+    NULL,
+    "_buffersForRegisteredFunctions",
+    "_typeSelectStringForColumn:row:",
+    "intersectsHashTable:",
+    "abbreviationForTimeInterval:",
+    "setPrimitiveLastName:",
+    "_mediaNodeTitle",
+    "allocWithZone_10_4:",
+    "setAllowsNonContiguousLayout:",
+    "initWithSlideshowEngine:",
+    "_hasImageCache",
+    "_layoutSublayersOfLayer:",
+    NULL,
+    "setScriptErrorExpectedTypeDescriptor:",
+    "applyFunctionOnInputPorts:context:",
+    "scanLongLong:",
+    "isSubscribed",
+    "speechFeedbackServicesRef",
+    "_restore",
+    "grayColor",
+    NULL,
+    "_realMaximumRecents",
+    "criteriaSliceForCriteria:values:",
+    "initWithRole:index:parent:",
+    "composer",
+    "_executeSelectPrevious:didCommitSuccessfully:actionSender:",
+    "_createViews",
+    "packedBytesPerRowForWidth:",
+    "setTitleWidth:",
+    NULL,
+    NULL,
+    "initRegularFileWithContents:",
+    "setCellAttribute:to:",
+    "isContinuous",
+    NULL,
+    "setFormatWidth:",
+    "_lightweightHandleChildChanged:parents:property:",
+    "readerInitialized",
+    "loadAndReturnError:",
+    "sortedArrayUsingFunction:context:hint:",
+    "_initWithSet:",
+    "_printSessionForSetting",
+    "_handleRootNodeChanged:",
+    "dateWithTimeInterval:sinceDate:",
+    "setNavNodeClass:",
+    NULL,
+    "initWithRenderer:userData:renderSize:renderContext:",
+    "_discloseCertificates:",
+    "_setLineBorderColor:",
+    "writeLockFile",
+    "thickness",
+    "sourcePort",
+    NULL,
+    "parentPatch",
+    "transformRect:",
+    "writeSafelyToURL:ofType:forSaveOperation:error:",
+    NULL,
+    "setNextKeyView:",
+    "canBeDisabled",
+    "addSubIndex:",
+    "customDisplayName",
+    "propertyDescriptionFromKey:implDeclaration:presoDeclaration:suiteName:className:",
+    "setExponentSymbol:",
+    "contentRectForFrameRect:styleMask:",
+    "tableViewColumnDidMove:",
+    "sortUsingDescriptors:",
+    "cachedCustomPropertiesByNameForRecordType:",
+    "translateXBy:yBy:",
+    "_colorSpacesForColorPanelPaneUsingModel:",
+    "encodeBytes:length:forKey:",
+    "deserializeNewKeyString",
+    "fetchMaxPrimaryKeyForEntity:",
+    "recordDeleteForObject:",
+    "indexPath",
+    "_doUserSetAttributes:removeAttributes:",
+    "isGroupsPaneVisible",
+    "destinationInstancesForEntityMapping:sourceInstance:",
+    "operatingSystem",
+    "endLoadInBackground",
+    "highlighted",
+    "_areIPAddressesValid:",
+    "allGroupForRemoteLocation:",
+    NULL,
+    "setFileName:",
+    "_addVersionIdentifiers:",
+    "loadKernel",
+    "colorWithCatalogName:colorName:",
+    "isReadOnlyIgnoresInert:",
+    "allocIndexesBuffers:",
+    "mkcolRequestWithSession:URI:token:",
+    "selectedFont",
+    "_finalizeDirectTakePicture",
+    "highlightedBranchImage",
+    "_maxForKeyPath:",
+    "_doModifySelectionWithEvent:onColumn:",
+    "boundingBox",
+    "sharedHTTPCookieStorage",
+    "_effectiveJobTitle",
+    "directoryContentsAtPath:matchingExtension:options:keepExtension:error:",
+    "setSortDescriptors:",
+    "_initDefaultNamespaces",
+    "start:",
+    "useFont:",
+    NULL,
+    "imageSize",
+    "_compatibility_takeValue:forKey:",
+    "makePreviousSegmentKey",
+    "_moveRightWithEvent:",
+    "setOptLock:",
+    "pathForEmbeddedTool:",
+    "setPopupExtension:saveType:saveCreator:",
+    "removeWindowController:",
+    "createPixelBufferFromPixelBuffer:bounds:flip:options:",
+    "currentNode",
+    "_descriptorByTranslatingDate:ofType:inSuite:",
+    "processInfo",
+    NULL,
+    "_menuImpl",
+    "cacheNodeForObjectID:",
+    "_scrollToPosition:",
+    "_copyAcquiredViewHierarchyLock",
+    "prepareOpenGL",
+    "normalizeRect:",
+    "updateFilterNotification:",
+    "setDisableFlash:",
+    NULL,
+    "showFindIndicatorForRange:",
+    "copyFont:",
+    "tableView:sortDescriptorsDidChange:",
+    "_constrainAndSetDateValue:timeInterval:sendActionIfChanged:beepIfNoChange:returnCalendarToHomeMonth:preserveFractionalSeconds:",
+    NULL,
+    "setAutosavedContentsFileURL:",
+    "beginPictureTakerSheetForWindow:withDelegate:didEndSelector:contextInfo:",
+    "isAnimatedGifs",
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    "_synchronizeExpandedNodesWithOutlineExpandedItems",
+    "_getInputImage",
+    "editorDidEndEditing:",
+    "characters",
+    "drawTitleWithFrame:inView:",
+    "buildString",
+    "_valueTransformerNameForBinding:",
+    "setFlipCellsHorizontally:",
+    "isInputWhiteParams",
+    "_setSuppressAutoenabling:",
+    "activeConversationChanged:toNewConversation:",
+    "_delayedEnableRevealoverComputationAfterScrollWheel:",
+    "removeToolbar",
+    "addCacheNodes:",
+    "filteredIndexForActualIndex:",
+    "setAllowsColumnSelection:",
+    "_hasScaledBackground",
+    "_hasHiddenParts",
+    "_setTrackingRect:inside:owner:userData:",
+    "originalImage",
+    "_clockAndCalendarFillDayCell:withColor:inFrame:inView:",
+    "remoteURL",
+    "setEventKind:",
+    "writeToDataReference:withAttributes:error:",
+    "_fetchUserSetHideExtensionButtonState",
+    "_performConnectionEstablishedRefresh",
+    "tabView:didSelectTabViewItem:",
+    "sourceModel",
+    "_selectObjectsAtIndexPaths:avoidsEmptySelection:sendObserverNotifications:",
+    "activateSliderTimer",
+    "setQueryNode:",
+    "itemType",
+    "_forceUpdateFocusRing",
+    NULL,
+    "tableColumns",
+    "accessibilityPositionAttribute",
+    "_adjustFontOfObject:mode:triggerRedisplay:compareDirectly:toFont:",
+    "_indexForNode:inGraph:",
+    "backgroundIsLight",
+    "setBookID:",
+    "drawSortIndicatorWithFrame:inView:ascending:priority:",
+    "_setWantsKeyboardLoop:",
+    "meta",
+    "initialFieldsForProperty:",
+    "_appProperties",
+    "_dateFormatterForDetailLevel:",
+    "drawImage:inRect:fromRect:",
+    "printWithInfo:autoRotate:pageScaling:",
+    "_savedSearcheNodeTitle",
+    "setAltIncrementValue:",
+    "_uniqueProxyPortKeyFromPort:",
+    "_forceUpdateLayerTreeRenderer",
+    "_mouseUpWithEvent:forView:",
+    NULL,
+    "_mainThread",
+    "selectRecord:byExtendingSelection:",
+    "_clearRowHeightCache",
+    "postNicestDraw",
+    "outtype",
+    "resumeWritingOperationWithScheduledTime:",
+    "tokenField:hasMenuForRepresentedObject:",
+    "movePages:",
+    "stringWithCapacity:",
+    "defaultLabelFontAttribute",
+    "setNextText:",
+    "_addCollection:options:sender:",
+    "_createMungledDictionary:",
+    "decompressionAccuracy",
+    "iconImageForIconRef:",
+    "_calendarFirstWeekday",
+    "setInPalette:",
+    "realCount",
+    "accessibilityAttributeValue:forParameter:",
+    "setExcludedFromWindowsMenu:",
+    "_notePendingRecentDocumentURLsIfNecessary",
+    "canZoomOut",
+    "mixedStateImage",
+    "_cancelWithErrorCode:",
+    "switchToFullScreen:",
+    NULL,
+    "_didChangeArrangementCriteriaWithOperationsMask:useBasis:",
+    "_backgroundTransparent",
+    "nts_SharedDBCache",
+    "stringWithUTF8String:",
+    "__ikSetupGLContext:",
+    "initWithController:",
+    "_old_drawKnob",
+    "propFindWithSession:withDepth:URI:lookingForProps:includingParent:",
+    "_fileExtensions",
+    "setRawValue:",
+    "beginUpdate",
+    "thumbnailWithSize:antialiased:qualityRequested:qualityProduced:",
+    "callbackObserver:",
+    "persistentStoreForURL:",
+    "_customToolbarLabelAttributeTable",
+    "draggedImage:beganAt:",
+    "getHyphenLocations:inString:",
+    NULL,
+    "_menuDelayTimeForSegment:",
+    "initWithVoice:",
+    "initWithCocoaName:",
+    "_decrementPage:",
+    "superscriptRange:",
+    "selectRow:subrow:byExtendingSelection:",
+    "_publish:",
+    "_defaultSecondaryColor",
+    "setResultList:",
+    "metalBackgroundUsingTexture:andWidth:",
+    "_sendDelegateWillDisplayOutlineCell:inOutlineTableColumnAtRow:",
+    "sqliteVersion",
+    NULL,
+    "pageLayout",
+    "loadCell:",
+    NULL,
+    "hasHorizontalRuler",
+    "timeZoneForSecondsFromGMT:",
+    "minValue",
+    "setSelectedGroups:",
+    "drawLoadingFrame",
+    "_validateMultipleValue:forKeyPath:atIndexPath:error:",
+    "_updateTableColumn:withWidth:",
+    "flushBufferedKeyEvents",
+    "_contextDidDealloc",
+    "removeExtendedAttributeForKey:atPath:error:",
+    "setSuckEffect:",
+    "localNameForName:",
+    "_rangeByTrimmingWhitespaceFromRange:",
+    "createTransition:forView:",
+    "_textFieldWithStepperKeyDown:inRect:ofView:",
+    "dictionaryWithValuesForKeys:",
+    "delayedBackground:",
+    "preferredEdge",
+    "classForPlugInIdentifier:",
+    "_drawLiveResizeCachedImage",
+    "_unarchiving",
+    "_hasItemTooltips",
+    "_extendItem:withRow:",
+    "parse",
+    "ignoreModifierKeysWhileDragging",
+    "_updateForTracking",
+    "nicestRenderingFinalizeExpendStepWithCell:withMipmap:withMipmapCopy:",
+    "setSearchElement:",
+    NULL,
+    "showsRollover",
+    "persistentStore",
+    "setSwitchedToToFullScreen:",
+    "PDFViewOpenPDFInNativeApplication:",
+    "showRenderedTextWithInfo:renderMode:textColor:alpha:",
+    "performSelectorDelayed:withObject:soon:",
+    "_setKeyboardFocusRingNeedsDisplay",
+    "copyStandardSidebarNodes",
+    "performSelector:target:argument:order:modes:",
+    "textView:clickedOnLink:",
+    NULL,
+    "_forceUseDelegate",
+    "defaultLineHeightForFont",
+    "canCompleteForforPartialWordRange:",
+    "renderPatch:time:arguments:",
+    "valueForBinding:atIndexPath:resolveMarkersToPlaceholders:",
+    "hasChapters",
+    "_resizeToolbarImageRepViewToFit:",
+    "removeColor:",
+    "_computeOriginForRow:cacheHint:",
+    "_initShared",
+    "_setResultingCertificate:",
+    "_changeFirstResponder",
+    NULL,
+    "createCroppedImageWithRect:",
+    "_titleAttributes",
+    "closeDownContentView",
+    "attributesForCharacterIndex:",
+    "_clearAnimationInfo",
+    "_localizationPolicy",
+    "rulerView:shouldRemoveMarker:",
+    "_getBracketedStringFromBuffer:string:",
+    "launchPreview:",
+    NULL,
+    "setLeftMargin:",
+    "addToolTip:inRect:",
+    "window:shouldDragDocumentWithEvent:from:withPasteboard:",
+    NULL,
+    "_setFirst:",
+    "clickedPathComponentCell",
+    "initWithExpression:usingIteratorVariable:predicate:",
+    "_usesQuickdraw",
+    "willSave",
+    "columnContentWidthForColumnWidth:",
+    "CI_initWithAffineTransform:",
+    "_doUserRemoveMarkerFormatInRange:",
+    "stopObservingModelObject:",
+    "printFormat:",
+    "_saveTrustValues",
+    "bitsPerSample",
+    "setIcon:",
+    "setImage:orientation:duration:",
+    "decodeAllIntoBuffer:size:useZeroBytesForCRC:",
+    "_invalidate",
+    "_treeHasDragTypes",
+    NULL,
+    "url",
+    "hasEffect",
+    "_toolbarButtonOrigin",
+    NULL,
+    "_parseCommand",
+    "_lightBlueColor",
+    "setShowsShadowedText:",
+    "layerForName:",
+    "superscript:",
+    "_columnAtLocation:",
+    "setShouldLoadAttributes:",
+    NULL,
+    "initWithOrderedSet:copyItems:",
+    "sharedManager",
+    "splitView:constrainMinCoordinate:maxCoordinate:ofSubviewAt:",
+    "CGLPixelFormatObj",
+    "_userEmailAddressOfRequestor",
+    "_documentForURL:",
+    "lockWithPath:",
+    "_selectInTabView:itemWithLabel:",
+    "setAutovalidates:",
+    "setViewMovingToWindow:",
+    "editCellTitleAtIndex:withEvent:select:",
+    "_setPressedTabViewItem:",
+    "_storesDidChange:",
+    "removeFromSuperviewWithoutNeedingDisplay",
+    NULL,
+    "reallyRemoveAllObjects",
+    "hasPassword",
+    "fontNameFromAppearanceTokens:",
+    "_removeGrammarAttributeForRange:includeAccessibility:",
+    "prepareForReloadChildrenForNode:",
+    "displayedMembers",
+    "prefersAllColumnUserResizing",
+    "canResumeDownloadDecodedWithEncodingMIMEType:",
+    "compositeToPoint:operation:",
+    "updateWindows",
+    NULL,
+    "sendBeforeTime:streamData:components:to:from:msgid:reserved:",
+    "appendString:",
+    "updateGroupMembership",
+    "_cell_setRefusesFirstResponder:",
+    "insertionRectFromPoint:",
+    "drawWindowBackgroundRegion:",
+    "_old_drawKnobSlotInRect:highlight:",
+    "startObservingNode",
+    "_whiteRGBColor",
+    "previousValidKeyView",
+    "_recreateQuery",
+    "startThumbnailRefreshTimer",
+    "recoverArrowScrolling",
+    "_preloadDocumentAtIndex:",
+    "canCreateConnectionFromPort:toPort:",
+    "showNodeInDirectory:withDisplayNamePrefix:selectIfEnabled:caseSensitiveCompare:",
+    "endUploadTexture",
+    "setModality:withParentWindow:",
+    "_glyphDescriptionForGlyphRange:",
+    "_descriptorByTranslatingNull:ofType:inSuite:",
+    "_bottomLeftResizeCursor",
+    "intersectsSet:",
+    "_controlFileWritingForConnection:busNumber:fileControlToken:",
+    "moveSelectionLeft",
+    NULL,
+    "accessibilityIsSingleCelled",
+    "setNumStacks:",
+    "lastComponent",
+    "decimalNumberByRaisingToPower:withBehavior:",
+    "popup",
+    "pasteboardWithName:",
+    "drawText:inRect:attributes:alpha:deferred:",
+    "willRefresh:",
+    "_setInputImage:",
+    "hyphenGlyphForLocale:",
+    "defaultValueForInputKey:",
+    "_deselectPart:",
+    "_displayProfileChanged",
+    "croppingRect",
+    "_encounteredCloseError",
+    "leafKeyPath",
+    "drawWithExpansionFrame:inView:",
+    "toggleOrientation:",
+    "_orientationInPageFormat:",
+    "_prepareToMinimize",
+    "canRemove",
+    "_contentToFrameMinYHeight:",
+    "_selectItemsInRange:selected:",
+    "forceTransactionClosed",
+    "allocateGState",
+    "smallerButton",
+    "idle",
+    "dataUsingEncoding:allowLossyConversion:",
+    "_writableTypeForFileNameExtension:saveOperation:",
+    "_branchImageEnabled",
+    "setInspector:",
+    "authorizationViewDidAuthorize:",
+    "_setObject:",
+    "_lineGlyphRange:type:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:isStrikethrough:",
+    "_failedTransactionWithRequest:error:",
+    "initWithHTML:baseURL:documentAttributes:",
+    "_getAttributes:includeValues:",
+    NULL,
+    "convertRect:toView:",
+    "_animatorTimerProc:",
+    "memberOfInputRampParams:",
+    "setAssociatedInputManager:",
+    "removeFontDescriptor:fromCollection:",
+    "_setTrackingHandlerRef:",
+    "_fileModificationDateForURL:",
+    NULL,
+    "_readImageIntoRange:fromPasteboard:",
+    "_prepareForDispatch",
+    "_defaultButtonCycleValue",
+    "removeObjectForCacheKey:",
+    "boundingRectForFont",
+    NULL,
+    "drawRowsInRange:clipRect:",
+    "registerNotificationsForMovie:",
+    "displayRectIgnoringOpacity:",
+    "_vCardRepresentationAsStringUsingImageCache:",
+    "_initBlock",
+    "_configureForDirectory:name:",
+    "_alignSize:force:",
+    NULL,
+    NULL,
+    NULL,
+    "buildElementsFromSmartGroup:",
+    "setAutoresizingMask:",
+    "removeColumnFilter:",
+    "_writeMultipleTextSelectionRanges:toPasteboard:",
+    "setFile:",
+    "initWithURL:cached:",
+    "testImage:",
+    "setBackgroundCheckerboardSize:",
+    "_setPreviousSizeAndDisplayMode",
+    "itemCount",
+    "initAddressWithLocalFromSocket:",
+    "fullPathForApplication:",
+    "_isShowingKeyboardFocus",
+    "changeWillBeUndone:",
+    "_calcVisibleColumnAreaAvailable",
+    "_resetGrid:",
+    "_windowDidLoad",
+    "_getImageAndHotSpotFromCoreCursor",
+    "blur:radius:kind:",
+    "_userVisibilityPriorityValues",
+    "startEditing:",
+    "_compareMultiLabelDictionaryNoKeyWithRecordValue:",
+    "_ikCommonInit",
+    "showsAlpha",
+    NULL,
+    "columnName",
+    "getPixel:atX:y:",
+    "fixFontAttributeInRange:",
+    "_isCachedSeparately",
+    "_setNextKeyViewFor:toNextKeyView:",
+    "copiesOnScroll",
+    "setNewValue:",
+    NULL,
+    "sharedInstanceForAddressBook:",
+    "setTitled:",
+    "setIsABMeImage:",
+    "isRunning",
+    "canRedo",
+    "removeAllActions",
+    "_updateImage",
+    "stop:",
+    "isFinishedDecoding",
+    NULL,
+    "_setGuesses:",
+    "previousItemDelta",
+    "accessibilityAttributedStringForRangeAttributeForParameter:",
+    "removeItems:",
+    "nts_SearchElement",
+    "_computeDragImageFromItemViewer:",
+    "_setRowHeaderTableColumn:",
+    "_invertedSkipSet",
+    "ISS_URLWithoutUsername",
+    "_loadImageKit",
+    "containerClassDescription",
+    "setLayoutFlags:",
+    "initListMembersWithSession:path:showHidden:",
+    "tokenField:readFromPasteboard:",
+    "distantFuture",
+    "loadFromDirectory:withBrowser:",
+    "fileTypeFromLastRunSavePanel",
+    "baseURL",
+    "textureUnits",
+    "setIconsForAnimationFilenames:",
+    "_reallyRemoveOldestSubthumbnail",
+    "_executeAllPragmaSettings",
+    "patternRepeat2ROI:forRect:userInfo:",
+    "setImageWithData:imageProperties:options:",
+    "nextData",
+    NULL,
+    "setImage:forControlTint:",
+    "boundOutlineView:isItemExpandable:",
+    "_unlock",
+    "initWithInteger:",
+    "setRoundDeterminateColor:",
+    "proxyFor:fauxParent:",
+    NULL,
+    NULL,
+    "decrementButtonWithParent:",
+    "imageRepWithCocoaName:",
+    "_advancedQueryStringPortion",
+    "colorPanelDidSelectColorPicker:",
+    "_visibleAndCanBecomeKeyLimitedOK:",
+    "removeIndexesFromIndexSet:",
+    "_setDefaultToolbarItemSetFromMenuItem:",
+    "_setWantsToActivate:",
+    "setReservedThicknessForAccessoryView:",
+    "CA_stringByExpandingTildeInPath:",
+    "toOneRelationshipKeys",
+    "subviewFrameAtIndex:",
+    "setExtensionHidden:",
+    "firstResponderView",
+    "_reconfigureSubviewsAnimate:",
+    "_setCGImageRef:",
+    "startIdleTimer",
+    "_setSizeHasBeenSet:",
+    "preferredFontNames",
+    "_updateSource:",
+    "setAlwaysShowsDecimalSeparator:",
+    "removeAllBindVariables",
+    "baselineForImage:renderSize:",
+    "setSearchBase:",
+    "numberOfCharacters",
+    "setInitialLocation:",
+    "runConfigurationPalette:",
+    NULL,
+    "_compareMultiNoLabelDictionaryNoKeyWithRecordValue:",
+    "releaseTexture:",
+    NULL,
+    NULL,
+    NULL,
+    "layoutOptions",
+    "_convertRect:fromAncestor:",
+    NULL,
+    "exposedBindings",
+    "addStringDefaultValueToDictionaryRef:",
+    "updateMultiThreaded",
+    "fileExistsAtURL:andReturnResultCode:",
+    "_setNeedsSizeUpdate",
+    "_sizeWithRect:",
+    "showContextHelp:",
+    "_setUsesToolTipsWhenTruncated:",
+    "saveRecipeChanges",
+    "textSizeMultiplier",
+    "insertObjects:atIndexes:",
+    "_toolbarBackgroundColor",
+    "initWithGraphNode:ofGraph:",
+    "initWithExpression:usingIteratorExpression:predicate:",
+    "_setSharedUserDefaultsControllerProxy:",
+    "__shiftLeft:",
+    "_drawIndicatorWithFrame:inView:",
+    "enableMultipleThreads",
+    "_protocolClassForRequest:",
+    "sampleCount",
+    "copyImageBuffer",
+    "initWithConjunctionOperator:children:",
+    "setMutableAttributedString:",
+    "setName:forIndex:",
+    "databaseIsEmpty",
+    "sizeForKey:inTable:",
+    "_mainThreadSetNeedsDisplay",
+    "speechChannel",
+    NULL,
+    "setComparison:",
+    "_reloadComboBoxWithTag:",
+    "mergeROI2:destRect:",
+    "password",
+    "secondaryGroupingSize",
+    "imageWithObject:",
+    "vramManager",
+    "_rectOfColumn:ignoringTile:",
+    "numberWithChar:",
+    "releaseSQLStatement",
+    "cellSpacing",
+    "addIndexesFromIndexSet:",
+    "initWithPoint:",
+    "_getPoints:",
+    "setShowRemainingTime:",
+    "resignFirstResponderDelegate",
+    "drawBevel:",
+    "didChangeArrangementCriteria",
+    "setCanHide:",
+    "_drawFrame",
+    "animator",
+    "accessibilityDefaultButtonAttribute",
+    "remoteLocations",
+    "_insetRect:",
+    "serializeInts:count:atIndex:",
+    "invalidateHashMarks",
+    "_mergeTableCellsVertically",
+    "_tableView:willAddTableColumn:",
+    "_endListeningForPowerStatusChanges",
+    "optionsDictionary",
+    "defaultPlaceholderLookupClassForBinding:object:",
+    NULL,
+    "_selectRootNode",
+    "drawViewBackgroundInRect:",
+    "threadDictionary",
+    "_previousDisplayMode",
+    NULL,
+    "rangeForUserCharacterAttributeChange",
+    NULL,
+    "_NSView_isWebClipView",
+    "_updateNewFolderButtonEnabledState",
+    "initEmptyFormatDescriptionWithMediaType:",
+    "_addTrackingRect:owner:userData:assumeInside:useTrackingNum:",
+    "availableStringEncodings",
+    "resizeDownCursor",
+    "containsIndex:",
+    "setAllowsDocumentBackgroundColorChange:",
+    "setHeaderHeight:",
+    "showButton:",
+    "accessibilityIsVerticalScrollBarAttributeSettable",
+    "findSoundFor:",
+    "undoManager",
+    "_performRedoCommand:withName:",
+    "invalidateDictionaryRef",
+    "redisplayUpdateDate",
+    "setDefaultType:",
+    "_windowDidOrderOffScreen:",
+    "selectedFXName",
+    NULL,
+    "drawDragBackground",
+    "_initWithData:fileType:hfsType:",
+    "_selectAllForMatrix:sender:",
+    "setIgnoresMouseEvents:",
+    "_postNotification:",
+    "authorization",
+    "initWithQTMedia:",
+    "setCoreUIWidgetType:",
+    "_oldUserCanSelectColumn:",
+    "setSourceModel:",
+    NULL,
+    "_removeCursorRect:cursor:forView:",
+    "URLProtocol:didLoadData:lengthReceived:",
+    "startTheater",
+    "_sizeDocumentViewToColumnsAndAlignIfNecessary:",
+    "updateColumns",
+    "_old_initWithCoder_NSTabView:",
+    "indexGreaterThanIndex:",
+    "revertBrightness",
+    "_configSheetDidEnd:returnCode:contextInfo:",
+    "subrowObjectsAtIndex:",
+    "initWithBitmapRepresentation:",
+    "collectionNames",
+    "_enableInput",
+    "currentSuiteAppleEventCode",
+    "defaultPreferencesClass",
+    "hiddenStateAtIndex:",
+    "keyForFileWrapper:",
+    "_setRowArrayCache:",
+    "_animateLastAddedColumnToVisible",
+    "_mouseDownSimpleTrackingMode:",
+    "unlockInfo",
+    "_idleMovies",
+    "setExpandMode:",
+    "restoreAttributes:",
+    "markNumRowsToToggleVisible",
+    "nts_RemoveMember:fromGroup:",
+    "_setMouseDownFlags:",
+    "textView:shouldHandleEvent:",
+    "archiveData",
+    "enclosedSubscriptionGroups",
+    NULL,
+    "propertyMappings",
+    "setCredential:forProtectionSpace:",
+    "setPeoplePickerView:",
+    "_isAutoCreated",
+    "_deallocAuxiliary",
+    "_lockRequestPostHandler:",
+    "updateDragTypeRegistration",
+    "addAttributes:range:",
+    "compare:options:range:locale:",
+    "containsKeys:values:count:",
+    "setSharedPreviewView:",
+    "_undoRedoTextOperation:",
+    "dispatchValueSelection:",
+    "layoutManager",
+    "_initWithDescriptorType:bytes:byteCount:",
+    "_maintainInverseRelationship:forProperty:forChange:onSet:",
+    "_cfTrim:",
+    "_helpKeyForObject:",
+    NULL,
+    "mutablePlaceholder",
+    "_loadAppSmartFolders",
+    "bumpSession",
+    "handleKeyDown:",
+    "_distanceForVerticalArrowKeyMovement",
+    "makeCollectionAtPath:",
+    "goToDestination:",
+    "imageWithNSBitmapImageRep:",
+    "_delayCancelStartEditing",
+    "arrayWithContentsOfURL:",
+    "personFromDictionary:addressBook:skipUnknownProperties:generateMultiValueIDs:",
+    "iconForAnimationAtIndex:",
+    "_buildSupportUnitsForAudioInputConnection:error:",
+    "currentProgress",
+    "_shouldDrawFocus",
+    "_initWithCFURLCredential:",
+    "_oldStyleOneWordName",
+    "initWithString:error:",
+    "_isSheet",
+    "_booleanValueForCocoaAttributeKey:fromElement:",
+    "setCorrespondingDisclosureGroup:",
+    "_performExhaustiveConflictDetectionForObjects:withChannel:",
+    "_isToManyRelationshipOrderedForKey:",
+    "_drawOutlineCell:withFrame:inView:",
+    "previewContentFrameIgnoringIndexSheet:",
+    NULL,
+    "initWithWindow:delegate:animation:",
+    "isSimpleSearch",
+    "_aeteElementClassDescriptions",
+    "groupsChanged:",
+    "setSelected:forKeyFrame:extendSelection:",
+    "deepCopiesValues",
+    "trustValuesForDomain:",
+    "_addDescriptorCheckingForDuplicates:toCollection:",
+    "setCurrentSearchIndex:",
+    "setMasterObjectRelationship:refreshDetailContent:",
+    "mappingGenerator",
+    "_setSerialNumberToIssuerMappedToCAConfigFile",
+    "availableFontFamilies",
+    "fetchObjectForClass:withUniqueId:managedObjectContext:",
+    NULL,
+    "getNodeAsResolvedNode:withError:",
+    "_renderLayerDefinesProperty:",
+    "locationOfControlType:keyFrame:inTimeLine:",
+    "setInfo:",
+    "_flattenMipmap:withCopy:forCell:",
+    "independentConversationQueueing",
+    "dataForType:",
+    "initWithEntity:alias:inScope:",
+    NULL,
+    "maxIndexValue",
+    "documentDidEndDocumentFind:",
+    "setAddress:",
+    "vertBlur4ROI:destRect:",
+    "_customTitleCell",
+    "initWithPredicateOperator:leftKeyPath:rightValue:",
+    "_updatesDisabled",
+    "_initWithName:type:withClassName:",
+    "_currentFont",
+    "viewDidHide",
+    "_appendValue:withLabel:andIdentifier:",
+    "_propertyAccessFromElement:",
+    "nextState",
+    "_acceptableRowBelowRow:maxRow:",
+    NULL,
+    "vmSchedulerEnabled",
+    "_preparePredicateExpression:",
+    "setTag:",
+    "_forSRSpeechObject:objectForProperty:usingDataSize:withRequestedObjectClass:",
+    "_invalidateFont",
+    "_setLockToken:forURI:withDuration:",
+    NULL,
+    "initWithData:options:error:",
+    "releaseSpaceAtPos:withLen:",
+    "theaterVideoOptimizationOptions",
+    "_adjustSelectionForItemEntry:numberOfRows:adjustFieldEditorIfNecessary:",
+    "pathComponentCells",
+    "createOutputWithPortClass:forKey:attributes:",
+    NULL,
+    "logonButtonCell",
+    "certIssuerIndex",
+    "_compositeToPoint:fromRect:operation:fraction:",
+    "finishEncoding:",
+    "addLayer:linkedTo:",
+    "installShortcutMenuHandlers:",
+    "colorPanel",
+    "initWithKey:type:isReadOnly:appleEventCode:presentableDescription:nameOrNames:",
+    "_setCurrentDocumentIndex:withTransition:blocking:",
+    "_loadKeywords",
+    "_infoToSaveInRepository:",
+    "defaultComparisonForProperty:",
+    "_requiredMinSize",
+    "setDatePickerStyle:",
+    "_sortOptionDictionariesByLayoutOrder:",
+    "_drawingInRevealover",
+    "timeInterval",
+    "intValue",
+    "tokenField:writeRepresentedObjects:toPasteboard:",
+    NULL,
+    "actionForLayer:forKey:",
+    "_updateToManyRelationship:from:to:with:",
+    "_glyphRangeForBoundingRect:inTextContainer:fast:okToFillHoles:",
+    "_handleSendControlSize:toView:",
+    NULL,
+    "_positionSheetRect:onRect:andDisplay:",
+    "setKerningShift:",
+    "isEqualToDate:",
+    "_initRemoteWithSignature:",
+    "shouldTakeFocus",
+    "isExcludedFromWindowsMenu",
+    "_usesScreenFonts",
+    NULL,
+    "setKeyPrompt:",
+    "_dragImageForRowsWithIndexes:tableColumns:event:offset:",
+    "setCurrencySymbol:",
+    "_updateWindowsUsingCache",
+    "columnDefinitions",
+    "play",
+    "saveCacheIfNeeded",
+    "nearestControlPointAtTime:andValue:withTolerance:",
+    "writeIndexToStorage",
+    "drawKnobs:",
+    "transfer:X:Y:",
+    "drawInContext:",
+    "pathStoreWithCharacters:length:",
+    "setNSImage:imageProperties:",
+    "implicitParameterAnimations",
+    "removeLockFile",
+    "relationshipCaches",
+    "_filteredPreviewType",
+    "willShow",
+    NULL,
+    "_getUndoManager:",
+    "_unregisterForClipBoundsDidChangeNotificationIfNecessaryForSuperview:force:",
+    "_selectorToGetValueWithUniqueIDForKey:",
+    "credentialWithUser:password:persistence:",
+    "selectRowIndexes:inColumn:",
+    "posterImage",
+    "writeToFile:atomically:",
+    "_queryHitResultsFilterUTIs",
+    "nts_ACL",
+    "_layoutIsSameAsCachedLayoutWithFrame:",
+    "_setDefaultKeyViewLoop",
+    "setManagedObjectContext:",
+    "initWithPersistentStoreCoordinator:configurationName:URL:options:",
+    "_updateNumberOfTitleCellsIfNecessary",
+    "methodSignatureForSelector:",
+    "getBitmapForControl:active:",
+    "_lastOnScreenContext",
+    "opacity",
+    "defaultDoubleClickAction:",
+    "documentClassNames",
+    "_setDefaultKeyViewLoopAndInitialFirstResponder",
+    "graph",
+    "registerDisplayBundle:withBundleIdentifier:",
+    "_isSharedUserDefaultsControllerProxy",
+    "discardCachedImage",
+    "initWithMaximumSize:maximumResourceAge:options:",
+    NULL,
+    "_insertObjectInSortOrder:",
+    "initWithKeyPath:",
+    "doRemoveFromGroup",
+    "pasteboardByFilteringFile:",
+    "localizedPropertyNameForProperty:",
+    "_clippedItemViewers",
+    "setLoadsImagesAutomatically:",
+    "calculateResolutionData:maskUnderTransform:withOutset:needsLofting:",
+    "initWithURL:documentAttributes:",
+    "stringWithFormat:locale:",
+    "initWithFileWrapper:",
+    "_rangeOfPrefixFittingWidth:withFont:",
+    "_preferredFileNameExtension",
+    "initMoveWithSession:sourceURI:destinationURI:sourceToken:destinationToken:",
+    "panel:userEnteredFilename:confirmed:",
+    "_deleteOption:",
+    NULL,
+    "_updateAttributesFromAudioChannelMap",
+    "colorListChanged:",
+    "predicateWithFormat:",
+    "convertWeight:ofFont:",
+    "getRealName",
+    "_orderedWindowsWithPanels:",
+    "placeButtons:firstWidth:secondWidth:thirdWidth:",
+    "initInNode:type:name:",
+    "_suspendIfTopHandling:",
+    NULL,
+    "_areUISoundEffectsEnabled",
+    "setFairEntropyRange:",
+    "_isAllowedFileNameExtension:",
+    "handleMouseDownAtPoint:",
+    "_migrationPolicy",
+    "setDefaultButtonCell:",
+    "_pushNamespaces:",
+    "rendererID",
+    "_setMiniImageInDock",
+    "showWindow:",
+    "createImageWithSource:options:",
+    "_remainingString",
+    "setDirectImportMode:",
+    "_resizeMetalBackground",
+    "_textureImage",
+    "parseN",
+    "_realHeartBeatThreadContext",
+    "setBottomCornerRounded:",
+    "scrollBarColor",
+    "constrainedScrollToPoint:",
+    "orderOutOnlyExpansionToolTip",
+    "initRemoveActionWithItem:",
+    "unregisterDraggedTypes",
+    "cells",
+    "isUsedInFilter:",
+    "replaceCustomLabel:",
+    "_observePeer:ofChild:",
+    NULL,
+    NULL,
+    "xmlAttributesForNodeIdentifier:",
+    "unhideApplication",
+    "typeAhead:",
+    "streams",
+    "_autoresizeToFit",
+    "windowFrameColor",
+    "parseABReleatedNames",
+    "initialFirstResponder",
+    "_getNextKeyAndDataToken:forPosition:",
+    "startAnimations",
+    "mipmapCacheDidLoad:",
+    "glyphPacking",
+    "setStatusBar:",
+    "addDocumentWithURLToIPhoto:",
+    "setOriginalPasswordField:",
+    "removeAllGRLs",
+    "setTokenStyle:",
+    "presentationLayer",
+    "scaleAndCenter:",
+    "_firstPassGlyphRangeForBoundingRect:inTextContainer:hintGlyphRange:okToFillHoles:",
+    "_mouseLoop::::::",
+    "restoreMovieEditState:",
+    "colorWithCIColor:",
+    "_writeSafelyToURL:ofType:forSaveOperation:error:",
+    "dispatchRawAppleEvent:withRawReply:handlerRefCon:",
+    NULL,
+    "_startSQL:",
+    "_viewAspectRatio",
+    "localizationsToSearch",
+    "paletteImageRep",
+    "layerFrom:inRed:green:blue:",
+    "saveDocument:",
+    "_initWithSize:depth:separate:alpha:allowDeep:",
+    "_debugDrawRowNumberInCell:withFrame:forRow:",
+    "alignJustified:",
+    "_doesOwnRealWindow",
+    "_setObject:ifNoAttributeForKey:",
+    "objectIDFactoryForEntity:",
+    NULL,
+    "sharedSlideshowExporter",
+    "startInlineSlideshow",
+    "removedMembers:fromGroup:",
+    "_scaleFrameFromFrame:",
+    "initWithURL:andDelegate:",
+    "imageDidNotDraw:inRect:",
+    "imageWithColor:",
+    "resolveForwardingConflictWithPreviousMetadata:forKey:",
+    "dragImage:at:offset:event:pasteboard:source:slideBack:",
+    "colorListNamed:",
+    "_initInfoDictionary",
+    "transformContextForBox:",
+    "abDatabaseImpl",
+    "_endelement:",
+    "nts_Subgroups",
+    "_stopWatchingWindowKeyness",
+    "initWithColors:atLocations:colorSpace:",
+    "_changeSelectionWithEvent:",
+    NULL,
+    "tokenTextView:shouldUseWritablePasteboardTypes:",
+    "_writeDocumentAttributes",
+    "versionHashInfo",
+    "showCMYKView:",
+    "sharedSpellCheckerExists",
+    "setReadLimit:",
+    "commonCreateDictionaryRef",
+    "_mapForRadius:strokeColor:fillColor:mode:lineWidth:",
+    "encodePropertyList:",
+    "dashPatternRaw",
+    "setFilterProc:",
+    "editName:inView:",
+    "_removeSpellingAttributeForRange:includeAccessibility:",
+    NULL,
+    "acceptVisitor:flags:",
+    "_needsDisplayForEntireRect:",
+    "_generateCombinedVCards",
+    "readToEndOfFileInBackgroundAndNotify",
+    "_scriptCommandTerminologyForName:",
+    "_setEndsTopLevelGroupingsAfterRunLoopIterations:",
+    "pathForAuxiliaryExecutable:",
+    "_renderCurrentPageForPrintOperation:",
+    "_toolbarLabelFontOfSize:",
+    "outlineView:draggingEndedAt:operation:",
+    "_getTitle",
+    "updateBounds",
+    NULL,
+    "setOption:value:",
+    "setMetadata:",
+    "dotMacUserAgent",
+    "zoomFactorX",
+    "attributeRuns",
+    "_needsToolTipRecalc",
+    "offsetControlType:byTime:byValue:keyFrame:",
+    "_underlineIsOn",
+    "_updateQuarantinePropertiesIfNecessary",
+    "_compatibility_initWithUnkeyedCoder:",
+    "_incrementInserted",
+    "_enablesOnWindowChangedKeyState",
+    "_removeAppSmartFolderNode:",
+    "_autosavingContentsURLWithFileNameExtension:",
+    "asDestination",
+    "interiorColor",
+    "createNotification:callback:",
+    "accessibilityDescriptionAttribute",
+    "createRealObjectIfNeeded",
+    "initPutFromWithSession:sourceURI:destinationURI:sourceToken:destinationToken:",
+    "slideshowSwitchToIndexMode:",
+    "_hasOverlayControls",
+    "initWithProperty:",
+    "_requestAnyEnabledState",
+    "_toolbarRegisterForNotifications",
+    "moveLeft:",
+    "createDocumentFragment",
+    "maxStringLength",
+    "_newPrintItem",
+    "_beginUpdate",
+    "conformsToProtocol:",
+    "weightOfFont:",
+    "rangeOfString:options:range:locale:",
+    "_findCursorForView:",
+    "grow",
+    "classDescriptionWithAppleEventCode:",
+    "initWithWindow:delegate:parameters:duration:",
+    "userDataOfType:atIndex:",
+    "_characterIndexForMoveWordLeftFromCharacterIndex:",
+    "setDirectParameter:",
+    "previewMode",
+    NULL,
+    "_URLWithDataAsString:relativeToURL:",
+    NULL,
+    "appendWhereClause:",
+    "removeIndexes:",
+    "_titlebarTitleRect",
+    "removeObjectsFromMasterArrayRelationshipAtIndexes:selectionMode:",
+    "_updateVolume",
+    "nts_DoInitWithRemoteLocation:displayName:readWriteACL:isAll:",
+    "initWithAnnotation:",
+    "_purgeImageManagerResourcesIfNeeded",
+    "addressFormats",
+    "appendFormat:",
+    "updateTextLayer:",
+    "doDelete:",
+    "closeGenieFX:",
+    "_findIndicatorPathsForGlyphRange:",
+    NULL,
+    "tokenField:styleForRepresentedObject:",
+    "_testedObjectTypeDescription",
+    "_valueCountByEnumeratingWithState:objects:count:",
+    "_minimumViewSize",
+    "_clearUndoRegistrations",
+    "_selectorToGetValueWithNameForKey:",
+    "setWasGeneratedWithIconServices:",
+    "disabledImageForControlTint:",
+    "forwardInvocation:",
+    "_notifyOfAnyContentChange",
+    "_updateUIToMatchCachedValues",
+    "setRulerMarker:",
+    "hiddenStateAtIndexPath:",
+    "_decodeWithoutNameWithCoder:newStyle:",
+    "displayedGroups",
+    "isUnauthenticatedMountPoint",
+    "__addStats:",
+    "twoPage:",
+    "entityForFetchRequest:",
+    "setFlags:",
+    "_imageByCroppingToRect:",
+    "inlinePreview:didHidePreview:",
+    "drawTitle",
+    "_maxXBorderRect",
+    "abEntityName",
+    "_setDoCheckPreAuth:",
+    NULL,
+    "defaultInstance",
+    "_dataSourceChild:ofItem:",
+    NULL,
+    "_createValueSetterWithContainerClassID:key:",
+    "_textColorBasedOnEnabledState",
+    "orderBack:",
+    "_shouldShowFocusRing",
+    "importCount",
+    "setInitialFrame:",
+    NULL,
+    "_discardEditingForAllBinders",
+    "registerToMany:forSourceObjectID:relationshipName:andTimestamp:",
+    "selectSegmentWithTag:",
+    "isSubsetOfSet:",
+    NULL,
+    "_temporaryDirectoryPathForWritingToPath:forSaveOperation:error:",
+    "setFileListOrderedByFileProperty:ascending:",
+    "toolTipForSegment:",
+    "trustValues",
+    "nts_RemoveValueForProperty:",
+    "_regularCommitEditingFailureInvocationWithDelegate:didWhateverSelector:contextInfo:",
+    "sama",
+    "setStatus:",
+    "removeAllToolTips",
+    "setupGLState",
+    "enclosingScrollView",
+    "recache",
+    "previewPanel:didLoadPreviewForDocumentURL:",
+    "_tearDownObserving",
+    "gotoNextSelectionPoint:",
+    "helperForView:layoutManager:characterIndex:",
+    "_perDialogPrefString:",
+    "_removeHeartBeartClientView:",
+    "imageFlow:removeItemsAtIndexes:",
+    "windowWillResize:toSize:",
+    "evaluationErrorSpecifier",
+    "tableView:typeSelectStringForTableColumn:row:",
+    "_reorderAppSmartFolderNode:toIndex:",
+    "hasUnautosavedChanges",
+    NULL,
+    "clearControlTintColor",
+    NULL,
+    "recipe",
+    "drawSynchronously",
+    "isReadableFileAtPath:",
+    "_stripForMigration",
+    "member:",
+    "setPrimitiveSortingLastName:",
+    "hideSearchWindow",
+    "initWithTextBlock:charRange:text:layoutManager:containerWidth:collapseBorders:",
+    "applyFunction:context:",
+    "_textDidEndEditing:",
+    "TIFFRepresentation",
+    "setContentResizingMask:",
+    "_setSelectorDictionary:",
+    NULL,
+    NULL,
+    "setBundlePath:",
+    NULL,
+    "timeForControlPoint:",
+    "_optimalThumbnailSize",
+    "_segmentsDeselectedBySegment:",
+    NULL,
+    "setUsesStrongWriteBarrier:",
+    "canInitWithRequest:",
+    "_addPlugIn:allowNonExecutable:",
+    "setReturnsObjectsAsFaults:",
+    "_radioHit:row:col:",
+    "drawRepresentation:inRect:",
+    "whiteColor",
+    "_gatherFocusStateInto:upTo:withContext:",
+    "_addObserver:notificationNamesAndSelectorNames:object:onlyIfSelectorIsImplemented:",
+    "_stopObservingModelObject:",
+    "indicesType",
+    "outlineView:shouldShowCellExpansionForTableColumn:item:",
+    "setCellMargin:",
+    "deleteRequestWithSession:URI:token:",
+    "sizeLastColumnToFit",
+    "pixelFormatI8",
+    "dequeueNotificationsMatching:coalesceMask:",
+    "_web_filenameByFixingIllegalCharacters",
+    "imageAvailable:",
+    "accessiblityChildCells",
+    "showcaseSelectedResult:",
+    "isDirectoryGroupSelected",
+    "_openFile:",
+    "layerForTool:",
+    "setMatrix:",
+    "_performDragOperationForReorder:toIndex:",
+    "isReloading",
+    "XMLString",
+    "matchesWithoutOperatorComponentsKeyPath:",
+    "_cachedObjectForKey:value:",
+    "moveWordBackwardAndModifySelection:",
+    NULL,
+    "deletesObjectsOnRemove",
+    "colorMatrixBiasKernel",
+    "valueForOptionalAttributeKey:",
+    "setRenameGroupUndoable:",
+    "_calculateResponses",
+    "_scanDecimal:into:",
+    "_commonInit",
+    "attributedAlternateTitle",
+    "_deselectUpstream:",
+    "setFontName:size:",
+    "_updateHideExtensionButtonStateFromNameFieldContents",
+    "createWithPublicKey:privateKey:keychain:authenticator:signer:inputParms:error:",
+    "addGroupFromDictionary:",
+    "customCall:sendData:withAuthorization:",
+    "_filesCompleted:",
+    "_drawDropHighlightBackgroundAroundRect:",
+    "persistentDomainNames",
+    "_setNeedToFlushGlyph:",
+    "_compareSingleScalarWithRecordValue:",
+    "_graphEditor",
+    "accessibilitySortDirectionAttribute",
+    "unregisterModalWindow:",
+    "imageWithImageProvider:userInfo:size:format:flipped:colorSpace:",
+    "attributedCertificateName:showsStatus:showsIssuer:selected:prefix:",
+    "_transientProperties",
+    "_registerOrUnregister:observerNotificationsForKeyPath:",
+    "initWithAnnotationDictionary:forFlavor:",
+    "_previewPanelFrameDidChange:",
+    "nts_ParentGroupsOfRecord:",
+    NULL,
+    "taskLoop",
+    "activeProcessorCount",
+    "initDeleteWithSession:URI:token:",
+    "presentableDescription",
+    NULL,
+    "_invalidateGlyphsForExtendedCharacterRange:changeInLength:includeBlocks:",
+    "setValue:forTag:client:",
+    NULL,
+    "_updateDragging:",
+    "cacheImageInRect:",
+    "selectionDictionary",
+    NULL,
+    "initAll:actions:owner:index:",
+    "blurRegionOf:destRect:userInfo:",
+    NULL,
+    "_initMainThread",
+    "setCost:",
+    "menuWillOpen:",
+    "localizedCompare:",
+    "indexOfItemWithTitle:",
+    NULL,
+    "_releaseOneLevelPreWillChangeExpandedNodes",
+    "setCompositions:",
+    "setFileURL:",
+    "beginSheetForDirectory:file:types:modalForWindow:modalDelegate:didEndSelector:contextInfo:",
+    "highlightedTableColumn",
+    "tabViewDidChangeNumberOfTabViewItems:",
+    "_stripDotEntries",
+    "_runFullDialog",
+    "_reallocColors:",
+    "_committedSnapshotForObject:",
+    "removeAllSubviews",
+    "magnifyer",
+    "selectFile:inFileViewerRootedAtPath:",
+    "_getReceiversSpecifierOrUnnamedArgument:fromEvent:usingDescription:",
+    "initWithMemorySize:",
+    "initWithRenderer:renderSize:renderContext:userData:",
+    "findNodeNames:matchType:",
+    "setFrameUsingName:",
+    "setVirtualScreen:",
+    "initWithSourceAttributeName:destinationAttributeName:",
+    "tabViewRemoved",
+    NULL,
+    "_dockIsAlive:",
+    "setLineJoinStyle:",
+    "indexSetWithIndexesInRange:",
+    "movieWithQuickTimeMovie:disposeWhenDone:error:",
+    "_multipleValuesObjectsAtIndexes:",
+    "_wrapsDateComponentArithmetic",
+    "_updateProtectedCurrentDocumentURL",
+    "count",
+    "processRealDocument:",
+    "getNodeAsDeepResolvedNode:",
+    "updatePasswordField:",
+    NULL,
+    "pathCell:willDisplayOpenPanel:",
+    "_notifyDelegate_DidRemoveItems:",
+    "distributionIndexForProperty:person:",
+    NULL,
+    "editedMode:forEditingOrAction:",
+    "layoutGlyphsInHorizontalLineFragment:baseline:",
+    "tokenField:editingStringForRepresentedObject:",
+    "isRunLoopBased",
+    "insertItemWithObjectValue:atIndex:",
+    NULL,
+    "initWithUniqueID:connectionID:",
+    "setUseDistinct:",
+    "appendCountClause:forToManyKeyPath:",
+    "_rectForSegment:inFrame:",
+    NULL,
+    "bezelStyle",
+    "draggingSourceOperationMaskForLocal:",
+    "_recycleResource:",
+    NULL,
+    "initWithData:encoding:",
+    "_readDocumentFragment:fromRange:documentAttributes:subresources:",
+    "_isFilteringEvents",
+    "endEditing",
+    "performanceCountersForVirtualScreen:purgeable:",
+    "ivar",
+    "_topCornerSize",
+    "childContext:didRememberObjectsWithObjectIDs:",
+    "_setPrintInfo:",
+    "initWithName:element:",
+    "initWithResponse:data:userInfo:storagePolicy:",
+    "customPropertyValueKeyNameForPropertyType:isSerializedPropertyList:",
+    "_configureFileListModeControlForMode:",
+    NULL,
+    "_totalMinimumTabsLengthWithOverlap:",
+    NULL,
+    "_drawerDepthOffset",
+    "inputNeutralChromaticityX",
+    "createIdentityImages",
+    "outlineView:isItemExpandable:",
+    "mergeSingleValue:forProperty:",
+    NULL,
+    "loadFindStringFromPasteboard",
+    NULL,
+    "canGoToFirstPage",
+    "leftBorder",
+    "_traverseToSubmenu",
+    "_countWithMergedChangesForRequest:possibleChanges:possibleDeletes:error:",
+    "readAlignedDataSize",
+    "_dispose:",
+    "tearOffTitlebarShadowColor",
+    "cachedImageNamed:",
+    "comboBoxCell:indexOfItemWithStringValue:",
+    "_listClassForList:",
+    NULL,
+    "_accessibilityNextSplitterMinCoordinate",
+    "setOrderingIndex:",
+    "hasAlpha",
+    "tileAndSetWindowShape:",
+    "miniaturize:",
+    "keyUp:",
+    "canCloseDocumentWithDelegate:shouldCloseSelector:contextInfo:",
+    "_setPersistentStore:",
+    "_executeInsert:didCommitSuccessfully:actionSender:",
+    "initByReferencingFile:",
+    "willTurnIntoFault",
+    "__close",
+    "_loadDefaultSetImageRep",
+    "_parseFonts2",
+    "updatePDFPage",
+    "getCFRunLoop",
+    "width",
+    "secondsFromGMT",
+    NULL,
+    NULL,
+    "xAccel",
+    NULL,
+    "closeDown",
+    "_sourceListBackgroundColor",
+    "setTighteningFactorForTruncation:",
+    NULL,
+    "stackSize",
+    NULL,
+    "externalPrecision",
+    "setDefaultPlaceholder:forMarker:withBinding:",
+    "addCollection:options:",
+    NULL,
+    "_userResetToDefaultConfiguration",
+    "createPatternColor",
+    "vectorWithString:",
+    "_NSNibShortcutNameForUIItemIdentifier:",
+    "_needsPopulate",
+    "tableViewColumnDidResize:",
+    "_updateTrackingValueForPoint:",
+    "keyEquivalentModifierMask",
+    "_flushCache:",
+    "deserializeDataAt:ofObjCType:atCursor:context:",
+    "_setNeedsDisplayInColumn:",
+    "_regionForOpaqueDescendants:forMove:",
+    "decrementRefCount",
+    "initNotTestWithTest:",
+    "vectorWithRect:",
+    "deserializePropertyListFromData:mutableContainers:",
+    "_appActive:",
+    "verifyPath:",
+    "setTimeScale:",
+    "tabSelectionChanged:",
+    "schedule",
+    "createCleanCopyOfPropertiesDictionary:",
+    "_hintedGetBucketIndex:bucketFirstRowIndex:containingRowIndex:",
+    "imageWithBaseName:state:backgroundStyle:",
+    "deviceRGBColorSpace",
+    "cardPane",
+    "createSchema",
+    "parseAuthorityInfoAccess:",
+    "_autounbinder",
+    "highlightsBy",
+    "setValue:forBinding:atIndexPath:error:",
+    "_keyViewPrecedingModalButtons",
+    "textUnfilteredPasteboardTypes",
+    "_setRealTitle:",
+    "_bottomBarHeight",
+    NULL,
+    "loadInBackground",
+    NULL,
+    "methodSignature",
+    "mergeFontVariationsInto:",
+    "contentMinSize",
+    "_replaceCharactersInRange:withPastedAttributedString:",
+    "updateClientFreeFormLayoutWithIndexes:",
+    "_temporaryAttributesAtCharacterIndex:longestEffectiveRange:inRange:",
+    "invocationWithMethodSignature:",
+    "setDelegate:withNotifyingTextView:",
+    "supportGLRenderer",
+    "_readFilenameStringsIntoRange:fromPasteboard:",
+    "referenceFile",
+    "__000:",
+    "_selectRowRange::",
+    "initWithController:keyPath:",
+    NULL,
+    "endPrologue",
+    NULL,
+    "initWithFullPath:",
+    "addFilterNotification:",
+    "setParentInDictionary:",
+    "initWithFrame:andController:",
+    "_hasPendingChanges",
+    "decodeValueOfObjCType:at:",
+    "_setCommand:",
+    NULL,
+    "eventWithEventRef:",
+    "_showLanguagePopUp",
+    "mainWindowFrameHighlightColor",
+    NULL,
+    NULL,
+    "_setLabel:",
+    "chooseButton",
+    "toOneRelationship",
+    "_stoleVisibleSharedPreviewView",
+    "initWithString:calendarFormat:locale:",
+    "_setBoundDataSource:withKeyPath:options:",
+    "comparisonPredicateModifier",
+    "_updateMouseTracking",
+    "generatorClass",
+    "applyFunctionOnNodes:context:",
+    "recordsForClass:matchingPredicate:prefetchingKeyPaths:takeLock:",
+    "fontWithFamily:traits:weight:size:",
+    "dictionaryByAddingObjectsFromArray:forKeys:",
+    "_doSynchronizationOfEditedFieldForColumnWidthChange",
+    "updateOptionsWithCopyright:",
+    NULL,
+    "deselect",
+    "transformSize:",
+    "_delegate_isGroupRow:",
+    "valueForProperty:",
+    "abBackupPeopleCount",
+    NULL,
+    "_recursiveLostLayerTreeHostAncestor",
+    "frameOfInsideOfColumn:",
+    "scaleSpeed",
+    "pushBundleForImageSearch:",
+    "focusView:inWindow:",
+    "trackPagingArea:",
+    "findComponentByID:",
+    NULL,
+    "_searchMenuTemplate",
+    "setCountLabel:",
+    "canChooseDirectories",
+    "isTemporary",
+    NULL,
+    "cameraOffText",
+    "numberOfArguments",
+    "setIsMiniaturized:",
+    "setImageZoomFactor:centerPoint:",
+    "isVerticallyCentered",
+    "_conditionallySetsStates",
+    NULL,
+    "setIndentationPerLevel:",
+    "lastPageIndex",
+    "_resizeTopView:",
+    "getKeys:",
+    "moveSelection::",
+    "tableView:acceptDrop:row:dropOperation:",
+    "_isKeyWindow",
+    "singleFieldVideo",
+    "stringsByAppendingPathComponent:",
+    "_colorSyncProfileSpace",
+    "propertiesOfSearchElements:",
+    "sqlStatement",
+    "fileSystemNumber",
+    "_setValidityPeriod:",
+    "setIsModified:",
+    NULL,
+    "_setCellsOutlineColorRed:green:blue:",
+    "setDefaultStringValue:",
+    NULL,
+    "timeValue",
+    "parseABPhoto",
+    "setItemSize:",
+    NULL,
+    "maxCount",
+    "_specifiesMultipleObjectsPerContainer",
+    "keychainName:",
+    "avoidsEmptySelection",
+    "_setKeyEnciphermentUsage:",
+    NULL,
+    "drawCenteredIcon:inRect:reflection:",
+    "keyPointerFunctions",
+    "accessibilityRangeForPositionAttributeForParameter:",
+    NULL,
+    "_whenDrawn:fills:",
+    "getPrimitiveAppleUseCoreUI",
+    "showsPrintPanel",
+    "_validateNodePosition:",
+    "setFilePathFromObject:",
+    "resizeWithEvent:",
+    "_opacity",
+    "setConnected:",
+    "_setupToolbar",
+    "imageRectWithoutRotations",
+    "_performUndoCommand:withName:",
+    "addFontDescriptorToRecents:",
+    "_adjustMovieToView",
+    "_takeColorFromDoAction:",
+    "setDisplayModeState:",
+    "sizeForString",
+    "scrollPoint:",
+    "_setPasswordStrengthString:",
+    NULL,
+    "_setNeedsDisplayForItemViewerSelection:",
+    "_adjustDatePickerElement:by:returnCalendarToHomeMonth:",
+    "_documentEditor:didCommit:contextInfo:",
+    "setSelectionIndexes:byExtendingSelection:",
+    "nts_MembersRecursive",
+    "evaluationErrorNumber",
+    "propertiesByName",
+    "nts_AddRecord:",
+    "setQuadrilateralPoints:",
+    "_maxTitlebarTitleRect",
+    "initWithOriginalString:range:",
+    "saveImageInCache:forEmail:",
+    "setPreservesAspectRatio:",
+    "_registerUndoForOperation:withObjects:withExtraArguments:",
+    "startAnimation:",
+    "pathlessURL",
+    "_hide",
+    "_setHelpCursor:",
+    "_sendSelectionDidChange",
+    "_mouseInPopupRect:",
+    "removeFilterSheetDidEnd:returnCode:contextInfo:",
+    "_finishDownloadDecoding",
+    NULL,
+    "document",
+    "setDeletedObjects:",
+    "_handlePhonemeCallbackWithOpcode:",
+    "initWithOriginalImage:cropSize:cropInfo:smallIcon:",
+    "newCreateIndexStatementsForManyToMany:",
+    "tabViewType",
+    NULL,
+    "saveInDirectory:saveIndexes:",
+    "initialize:",
+    "underlinePosition",
+    "_setNeedsModeConfiguration:",
+    "propagateConnections",
+    "configureAndLoadLayout",
+    "pushRoundedRectPath:inContext:withCornerRadius:topLeftCorner:topRightCorner:bottomRightCorner:bottomLeftCorner:alignOnPixelCenter:",
+    "initWithXMLData:",
+    "characterIdentifier",
+    "restore",
+    "rotationTransform",
+    "writeAttachment:",
+    "reconcileToSuiteRegistry:suiteName:",
+    NULL,
+    "_credentialInfo",
+    NULL,
+    "__setUndoableValue:forKeyPath:updatesState:",
+    "requiresDomain",
+    "CGColorSpace",
+    NULL,
+    "_organization",
+    NULL,
+    "annotationEditing",
+    NULL,
+    "setCurrentToolMode:",
+    "_iconViewDoubleAction:",
+    NULL,
+    "_imageRectForDrawing:inFrame:inView:",
+    "URLHandle:resourceDataDidBecomeAvailable:",
+    "origin",
+    "startSchedule",
+    "setStyleFromDictionary:",
+    "paragraphSpacingBeforeGlyphAtIndex:withProposedLineFragmentRect:",
+    "submenu",
+    "minute",
+    "setDisplaysAsBook:",
+    "readInBackgroundAndNotifyForModes:",
+    "_backingPlistIsNewer",
+    "isExpandable:",
+    "_setNumberOfRowsCacheIsValid:",
+    "_informationField",
+    "fileURLWithPath:isDirectory:",
+    "_updateDefaultState:forCredential:protectionSpace:",
+    NULL,
+    "deferSync",
+    "_updateScrollWithAnimation:",
+    "setLineSpacing:",
+    "defaultPlaceholderForMarker:withBinding:",
+    NULL,
+    "cancelDownload",
+    "_accessibilityIsRadioGroup",
+    "_initializeArchiverMappings",
+    "_getNodeForKey:inTable:",
+    NULL,
+    "animationDidEnd:",
+    "_newParagraphForLibXML2ElementNode:tag:allowEmpty:suppressTrailingSpace:",
+    "updateNib",
+    "_focusRingRect",
+    "setGeneratesDecimalNumbers:",
+    "_isVertical",
+    "getNewRequestMessage:andStream:forRequest:",
+    "_isSelectableItemIdentifier:",
+    "isSpecialGroup",
+    "parser:parseErrorOccurred:",
+    "_releaseWireCount:",
+    "isEnteringProximity",
+    "accountWithName:password:applicationID:",
+    NULL,
+    "_insertPopup",
+    "greenVotingROI:destRect:",
+    "smallSystemFontSize",
+    "accessibilityVisibleRowsAttribute",
+    "getAttribute:index:allowBinary:",
+    "_setLastGuess:",
+    "colorWithDeviceCyan:magenta:yellow:black:alpha:",
+    "_characterRangeForPoint:inRect:ofView:",
+    "_setInputBottomLineParams:",
+    "setPeriodicDelay:interval:",
+    "_allowSmallIcons",
+    "_invokeSelector:withArguments:onKeyPath:",
+    "loadComposition:",
+    "doFileCompletion:isAutoComplete:reverseCycle:",
+    "removeGRLPerformCallbacks",
+    "_handleRecognitionBeginningWithRecognitionResult:",
+    NULL,
+    "doRegexForString:pattern:patternLength:flags:",
+    "translationRatioAtRow:",
+    NULL,
+    "filenameExtension:",
+    "nts_RecordForUniqueId:",
+    "endEditingFor:",
+    "originForPageDisplay:",
+    NULL,
+    "parser:foundElementDeclarationWithName:model:",
+    NULL,
+    "_setInvitation:",
+    "_attributedString:madeToFitInSize:",
+    "_minimizeSucceeded:",
+    NULL,
+    "clearView",
+    "view",
+    "center:didRemoveObserver:name:object:",
+    "subItemAtIndex:",
+    "topPool",
+    NULL,
+    "migratePersistentStore:toURL:options:withType:error:",
+    "setStringValue:resolvingEntities:",
+    "moveGlyphsTo:from:",
+    "maxLabelStringWidth",
+    "hidePalettes",
+    "attachedListDictionary",
+    "applyFunctionOnOutputPorts:context:",
+    "localizedScannerWithString:",
+    "_updateSortDescriptors:",
+    "fieldNamed:",
+    NULL,
+    "cameraDisabledIcon",
+    "bytesPerRow",
+    "isTornOff",
+    "initWithImageManager:options:",
+    "drawKnobSlotInRect:highlight:",
+    "_imageForCell:keyWindow:",
+    NULL,
+    "setMergePolicy:",
+    "isColor",
+    "initWithNamespaces:",
+    "CIImage",
+    "writeStringDocumentAttribute:withRTFKeyword:",
+    "initWithIdentifier:forColorPanel:",
+    "insertItemWithItemIdentifier:atIndex:",
+    "enqueueInvocation:",
+    "addObserver:forKeyPath:options:context:",
+    "_engravedActiveForegroundTextColor",
+    "setObject:forKey:",
+    "_distinctUnionOfArraysForKeyPath:",
+    "_filePathValue",
+    NULL,
+    "openFile:fromImage:at:inView:",
+    "_validateNodePositions",
+    NULL,
+    "_web_createDirectoryAtPathWithIntermediateDirectories:attributes:",
+    "_collapseItem:collapseChildren:clearExpandState:",
+    "initWithCustomSelector:modifier:",
+    "_setClipRect:",
+    "_setImage:",
+    "isReadOnly",
+    "setBorderType:",
+    "_findScrollerToAutoLiveScrollInWindow:",
+    "_drawSliceBackgroundsWithClipRect:",
+    "fileHandleForUpdatingAtPath:",
+    "setPositionX:Y:Z:",
+    "setUserStyleSheetEnabled:",
+    "previewView:timedOutPreviewLoadForURL:",
+    NULL,
+    "registerNodeWithClass:",
+    "moveParagraphBackwardAndModifySelection:",
+    "_registerObjectClass:placeholder:binding:",
+    NULL,
+    "valueAtTime:",
+    "setSharingPreviewPanel:",
+    "imageRotation",
+    "beginCertLookupForEmail:cell:",
+    "addCoachMarkWithContentRect:contentImage:forView:selfDestruct:",
+    "setOneShot:",
+    "shortVersion",
+    "didAddSubview:",
+    "error:",
+    "setVerifyPasswordField:",
+    "publicID",
+    "dateFromHTTPStyleString:",
+    NULL,
+    "saveOptions",
+    "mirrorMode",
+    "grlIndex",
+    "_setHelpBooks:",
+    "setRequestError:",
+    NULL,
+    "cleanupAppNotifications:",
+    "graphView",
+    "levelForRow:",
+    "_setCurrentPreview:documentPreview:displayedView:canDelayDisplay:transition:stealing:",
+    "addAddOperationWithIndex:",
+    "propertyPath",
+    "initWithRealClient:",
+    "_copyAuthorizationRights:toRights:",
+    "pluginForType:",
+    "_willDeleteNodeInputPort:",
+    "alphaValue",
+    "imageWithoutEffectsRect",
+    "setResizingMask:",
+    "setSize:",
+    "selectedColumnEnumerator",
+    "defaultType",
+    NULL,
+    "controlHighlightColor",
+    "findApplications",
+    NULL,
+    "combineStructures:withCustom:",
+    "addRepresentationForElementWithProperty:value:comparison:order:",
+    "abIsUTF16EntourageVCard",
+    "setWindingRule:",
+    "removeFreedWindow:",
+    "crop:to:",
+    "__patchStarted:",
+    "_activePort",
+    "_enableTrackingRect:",
+    "createPlistFromFile:",
+    "_setOneShotIsDelayed:",
+    "movePopupToFrontForAnnotation:",
+    "hasPrefix:",
+    "openInSeparateWindow:",
+    "addFavoriteInWindow:",
+    "_recursiveBreakKeyViewLoop",
+    "_screenFromPoint:",
+    "indexOfNode:inCachedChildrenForNode:",
+    "_objectForProperty:usingDataSize:withRequestedObjectClass:",
+    "_setAutoscrollDate:",
+    "_specifiesValueContainedByObjectBeingTested",
+    "initWithRef:",
+    "initWithGraphicsContext:",
+    "parser:foundProcessingInstructionWithTarget:data:",
+    NULL,
+    "indexLabelsCount",
+    "useStandardLigatures:",
+    "nullImage",
+    NULL,
+    "paragraphSpacing",
+    NULL,
+    NULL,
+    "_plotCurve:offset:scale:sample:min:max:stride:count:",
+    "initGetInfosWithURL:",
+    NULL,
+    "_setSQLType:",
+    "updateChangeCount:",
+    "addObject:forKey:",
+    "setRulerVisible:",
+    "setCompositionAspectRatio:",
+    "_orderedDrawerAndWindowKeyLoopGroupingViews",
+    "setRoundingMode:",
+    "_startSheet",
+    "buttonPressed:",
+    "selectionFromPage:atPoint:toPage:atPoint:",
+    "_accessibilityTitleRect",
+    "quotedStringRepresentation",
+    "_queryValueForItem:inRow:",
+    "_shouldAbortMouseDownAfterDragAttempt:",
+    "hasElasticRange",
+    "_removeAllColumns",
+    "IKIPSliderMouseDown:",
+    "_readRTFDIntoRange:fromPasteboard:",
+    "isEqualToSet:",
+    "highlightedItemIndex",
+    "city",
+    "_setCurrentDirectoryNode:pathToNode:",
+    "revertInvalidXMLEscapedString:",
+    "updateOptionsWithCredits:",
+    "_actOnKeyDown:",
+    "removeGroup:",
+    "_initWithImage:",
+    "classDescriptionForClass:",
+    "_displayAllDrawersIfNeeded",
+    "invert:",
+    "controlDarkShadowColor",
+    "removeRecordsFromGroup",
+    NULL,
+    "unlockTextureRepresentation",
+    "runPromptToSaveQueryWithName:modalForWindow:",
+    "setLastNavigationDirection:",
+    NULL,
+    "setSuperentity:",
+    "applyMultiValue:withCustomProperty:toRecord:managedObject:",
+    "appendRows:",
+    "addIndexButton",
+    NULL,
+    "appendPropertyDeclarationToAETEData:",
+    NULL,
+    "ikMouseDragged:",
+    "_imageFromItemTitle:",
+    "_trackRect",
+    "_pinDocRect",
+    "popupViewEntered:",
+    "updateRoot",
+    "_nameAsRegisteredWithImageClass",
+    "usesGroupInDefinition:",
+    "removeCredential:forProtectionSpace:",
+    "setEstimatedFileSize:",
+    "standardCrop:original:",
+    "addSelectionRange:page:normalize:",
+    "optionFlags",
+    "indexesToRemove",
+    "startSpeakingString:",
+    "minificationFilterBias",
+    "nibInstantiateWithOwner:",
+    "setPredicateString:",
+    "convertIndex:toResults:andOffset:",
+    "_loadViews:",
+    "concludeDragOperation:",
+    NULL,
+    NULL,
+    "getResourceLocator",
+    NULL,
+    "_indicatorFrameForCellFrame:isFlipped:",
+    "initWithRecord:managedObject:property:",
+    "_setHiddenViewsTint:",
+    "_setDefaultUserInfoFromURL:",
+    "externalDataForObjectID:timestamp:",
+    "setHashFunction:",
+    "find:",
+    "redReconstruction:green:phase:image:",
+    "machPort",
+    "saveRoot",
+    NULL,
+    "_resetFragHandlerWithSize:",
+    "download:shouldDecodeSourceDataOfMIMEType:",
+    "numRowsToToggleVisible",
+    "_usesCustomTrackImage",
+    "setSelectedRanges:",
+    "_saveIconViewSize:",
+    "roundingBehavior",
+    "addNormalAppearanceToDictionaryRef:",
+    "attachmentSizeForGlyphAtIndex:",
+    NULL,
+    "mouseTracker:constrainPoint:withEvent:",
+    "valueForOutputKey:",
+    "_makeLinkFromMenu:",
+    "fullscreenFrame",
+    "setThumbnailCount:",
+    "moveToBeginningOfDocumentAndModifySelection:",
+    "addPopupToDictionaryRef:",
+    "commonPrefixWithString:options:",
+    "_managedAttributeKeys",
+    "_specifiedValueInContainer:",
+    NULL,
+    "leftMargin",
+    "serviceName",
+    "setColor:atX:y:",
+    NULL,
+    "intersectsRect:",
+    "controlTextColor",
+    "_doesCAConfigFileExistWithFileName:",
+    "_moveDownWithEvent:",
+    "pageFooter",
+    "sharedTextFinder",
+    "startEditingSmartGroup:",
+    "defaultLineHeightForFont:",
+    "oscPortsConfiguration",
+    "acceptsMarker:binding:overrideWithPlaceholderIfDefined:",
+    "defaultTabInterval",
+    "_readRTFIntoRanges:fromPasteboard:",
+    "abAppendString:",
+    "fixAttachmentAttributeInRange:",
+    "_originalSnapshot",
+    "netServiceDidStop:",
+    "_allowKillRing",
+    NULL,
+    "predicateWithFormat:arguments:",
+    "PDFViewWillClickOnLink:withURL:",
+    "accessibilityIsHorizontalScrollBarAttributeSettable",
+    "knobColor",
+    "addAppleUseCoreUI:",
+    "dataForKey:",
+    NULL,
+    "enableSearchField:",
+    "_getBytesAsData:maxLength:usedLength:encoding:options:range:remainingRange:",
+    "_proxyNonGCPoolPointer",
+    "drawStateImageWithFrame:inView:",
+    "otherEventWithType:location:modifierFlags:timestamp:windowNumber:context:subtype:data1:data2:",
+    "nts_GroupsThatUseGroup:",
+    "_makeKeyNode:inKeyNode:",
+    "drawerShouldClose:",
+    "noResponderFor:",
+    "_subclassManagesData",
+    "_selectDocumentFromLayer:",
+    "stringsFromRows:expanding:",
+    "filterRemoved:filterChain:",
+    NULL,
+    "_propagateDelete",
+    NULL,
+    "addTooltip",
+    "renderingFlags",
+    "lockFocusOnRepresentation:",
+    "nonRetainedCachedRecordForKey:",
+    "moveUp:",
+    "_commonBeginModalSessionForWindow:relativeToWindow:modalDelegate:didEndSelector:contextInfo:",
+    "sourceURL",
+    NULL,
+    "allMetadata",
+    "isReachable",
+    "nodeNameWithClassName:identifier:",
+    "setPersistentDomain:forName:",
+    "setDictionaryRepresentation:",
+    "createAttributesForFont:color:",
+    "propertyForKeyIfAvailable:",
+    NULL,
+    "_alternateButton",
+    NULL,
+    "lowercaseLetterCharacterSet",
+    "invokesSeparatelyWithArrayObjectsWithBinding:",
+    "_enableResizedPosting",
+    "_checkTrashiness",
+    "canSelectPrevious",
+    "moveToEndOfParagraphAndModifySelection:",
+    "_SFCertificateTrustPanel_disclosureStateChanged:",
+    "initWithCallbacks:andEngineRef:",
+    NULL,
+    "scriptingBeginsWith:",
+    NULL,
+    "compressionOptionsForConnection:",
+    "mapTableWithWeakToStrongObjects",
+    "addTrackingArea:",
+    "insertTabViewItem:atIndex:",
+    "createTextureBufferForManager:withFormat:target:bounds:colorSpace:options:",
+    "rootProxy",
+    "addACE:append:",
+    "_lengthForSize:",
+    "_baseTransform",
+    "hasMetadataTable",
+    "_setEnableDelegateNotifications:",
+    "_writeFileListMode",
+    "createChildNodeForRepresentedObject:",
+    "compositionsAtPage:",
+    "setToolTip:forView:cell:",
+    "parserDidEndDocument:",
+    "_popUpMenuCurrentlyInvokingAction",
+    "targetObject",
+    "ab_queryPieces",
+    "toolbarAllowedItemIdentifiers:",
+    "_pageChanged:direction:",
+    "initWithAuthentication:forUser:andPass:",
+    "_postSelectionDidChangeNotification",
+    "controlDidResignFirstResponder:",
+    "setClearsColorBuffer:",
+    "_sendChangeNotification",
+    "_removeObjectsAtArrangedObjectIndexPaths:objectHandler:",
+    "_coreUIDrawBezelWithFrame:inView:",
+    "_stopFadeTimer",
+    "_setNeedsToResetDragMargins:",
+    "dirty",
+    "_getActiveUndoManager",
+    "friction",
+    "setSizeRequisition:",
+    "_setContentInBackground:",
+    "baselineLocation",
+    "countryName",
+    NULL,
+    "initWithDateFormat:allowNaturalLanguage:",
+    "windowWillStartLiveResize:",
+    NULL,
+    "_loadState:",
+    "setUserInfo:",
+    "_addColor:",
+    "filter",
+    "setErrorLine:",
+    "_validateIsSymbolicLink",
+    "resolveWithCallback:target:",
+    "drawSelectionFrame:",
+    "doValidateMetaData",
+    "_toolbarItemViewerClass",
+    "devicesWithIOType:",
+    "suspend",
+    "_endOfParagraphAtIndex:",
+    "pointForPort:inNode:bounds:",
+    "valueExpression",
+    NULL,
+    "setJoins:",
+    "centerAfterViewResize:",
+    "runModalForTrust:message:",
+    "imagePasteboardTypes",
+    "operatingSystemName",
+    "_showAs",
+    "localContextWithOptions:",
+    "_glyphAdvancementCache:renderingMode:",
+    "setScaleFrame:",
+    "contentViewMargins",
+    "nts_SetImageData:",
+    "initWithViewAnimations:",
+    "setFloat:forKey:",
+    "_miniaturizedOrCanBecomeMain",
+    "setColor:forKey:",
+    "accessibilityHitTest:",
+    "delayedSaveCacheIfNeeded",
+    "mappingsForConfigurationWithName:inModel:",
+    "hookUpContext:",
+    "setEditing:",
+    "_cfUppercase:",
+    "onResize:",
+    "_connectGraphUnitsForGenericOutputConnection:error:",
+    "addRowWithCells:",
+    "arrayByAddingObject:",
+    "deleteBackward:",
+    "filterWithImageURL:options:",
+    "senderDidBecomeActive:",
+    NULL,
+    "redReconstruction:green:phase:",
+    "_addHeartBeatClientView:",
+    NULL,
+    "finalizeRenderer",
+    NULL,
+    "shouldDrawInsertionPoint",
+    "updateStrengthBar:",
+    NULL,
+    "_uniqueOutputPortKey",
+    "stringWithFormat:",
+    "_selfBoundsChanged",
+    "setStartingIconSize:",
+    "setAlignmentMode:",
+    "_setNonactivatingPanel:",
+    "stopSpeakingAtBoundary:",
+    "_addRootSeperatorIfNeeded",
+    "_reloadChildrenForNode:",
+    "metadataForPersistentStoreWithURL:error:",
+    "workLoop",
+    "_highlightTextColor",
+    "itemPrototype",
+    "recalcPointersForResolutionData:mask:firstRes:",
+    "_metaProperties",
+    "_itemViewerForDraggingInfo:draggingSource:",
+    "cancelFindString",
+    "_resetTitleWidths",
+    "isAncestorOfObject:",
+    "captureSession",
+    NULL,
+    NULL,
+    NULL,
+    "_accessibilityPanel",
+    NULL,
+    "initWithContent:",
+    "_insertionKeyForDictionary:minimumIndex:",
+    "primitiveModificationDateYear",
+    "_pageForIndex:",
+    "_displayForLayerTime:displayTime:",
+    "_createOverlay",
+    "_defaultScriptingComponent",
+    "initWithPath:options:error:",
+    "_updateSizeAndLocation",
+    "_computeMinimumDisplayedLabelForWidth:",
+    "earlierDate:",
+    "_listener",
+    "setJobDisposition:",
+    "_processEvents",
+    "fileGroupOwnerAccountNumber",
+    "_setDotMacEmailEncryptionUsage:",
+    "textView:shouldDrawInsertionPointInRect:color:turnedOn:",
+    "textView",
+    "setQueryHitResultsFilterUTIs:",
+    "_selectHighlightedSegment",
+    "encodedDataForValue:charsetName:",
+    NULL,
+    "removeObserverTextField:",
+    "convertPointFromDocumentToView:",
+    "loadRulebook:",
+    "preparedImage",
+    "operatingSystemVersionString",
+    NULL,
+    "_resetUpdate",
+    "_columnPositionsTheSame",
+    "setFloatParameterValue:to:inResolutionData:",
+    "initWithDir:values:",
+    NULL,
+    "drawResolutionData:outlineToContext:withFill:",
+    "push",
+    "_convert:row:point:cacheHint:",
+    "getFullFieldNameFromDictionary:",
+    "thumbnailImageWithSize:",
+    "initWithBitmapImageRep:",
+    "_parsePredefinedAttributes",
+    "shouldBeVisibleOnlyOnCurrentSpace",
+    "currentOperation",
+    "generateWhereIntermediatesInContext:",
+    "initWithDataReferenceRecord:",
+    "containerClassID",
+    "rightChild",
+    "availableResourceData",
+    "_postRefreshedObjectsNotificationAndClearList",
+    "encodeRootObject:",
+    "_postNotification:sender:",
+    "_rowHeightStorageUpdateForDeletedRows:atIndex:",
+    "initWithOptions:createFilter:",
+    "_web_objectForMIMEType:",
+    "ciIdentifier",
+    "nts_AddMember:",
+    "isPrimaryKey",
+    "doVariancePass:means:sums:offset:count:factor:",
+    "generatePrimaryKeysForEntity:",
+    "transformVectorFromViewSpaceToCropSpace:",
+    "addInputUnitsForConnection:toGraph:ofCaptureSession:error:",
+    "defaultNeutralChromaticityX",
+    "sortConnections",
+    "writeRTF",
+    NULL,
+    "_applicableSegmentedCellStyle",
+    "annotationPreceding:wrapAround:",
+    "windowDidEndLiveResize:",
+    "invokeSelector:withArguments:forBinding:error:",
+    "initWithReceivePort:sendPort:components:",
+    "dragSelectionWithEvent:offset:slideBack:",
+    "_recomputeLocalizedKeys",
+    "setRenderTime:",
+    "thumbnailsDidFinishLoading",
+    "panelShouldHaveBackPlayNextButtons",
+    "play:",
+    "addDependentTexture:",
+    "joinIntermediates",
+    "_shouldSlideBackAfterDragFailed",
+    "alphaSpeed",
+    "_releaseKVCMaps",
+    "usesButtons",
+    "animationProgressed",
+    "autoresizesAllColumnsToFit",
+    "addFieldWithNoPopup:",
+    "_writeRecentDocumentDefaultsForKey:",
+    "setEndSpecifier:",
+    "_darkGrayRGBColor",
+    NULL,
+    NULL,
+    "lastChild",
+    "_invalidateTypeDescriptionCache",
+    "_minimumSizeNeedForTabItemLabel:",
+    "_beginSessionUpdates",
+    "_delegateWillDisplayCellIfNecessary:forColumn:row:",
+    "displayIfNeededInRectIgnoringOpacity:",
+    "setImageContents:",
+    "isEditing",
+    NULL,
+    "_refaultObject:globalID:boolean:",
+    "nextSlicePiece:",
+    "_setSession:",
+    "revertToInitialValues:",
+    "_web_rangeOfURLScheme_nowarn",
+    "directoryServicesNodes",
+    "_under",
+    "fullTypeName",
+    "_updateAttributes",
+    "removeMarker:",
+    "nodeForPath:",
+    "parser:foundExternalEntityDeclarationWithName:publicID:systemID:",
+    "_updateTooltipsForMouseLocation:",
+    NULL,
+    "toggleShown:",
+    "forwardEvent:to:",
+    "_dataSourceIsItemExpandable:",
+    "isEditingAtIndexPath:withObject:",
+    "detatchFromView",
+    "textureIsDestination:name:userInfo:",
+    "_notifyManagedContextEditorStateChanged:",
+    NULL,
+    "unbindTextureRepresentationFromCGLContext:textureUnit:",
+    "isDaylightSavingTimeForDate:",
+    NULL,
+    "_isAnyBindingInMaskBound:",
+    "rawDataFormat",
+    "writeSelectedGroupsAndPeopleToDefaults",
+    "searchIsInProgress",
+    "descriptionForProtocol:",
+    "_drawerDefaultBottomTrailingOffset",
+    NULL,
+    "instantiate::",
+    "disableFlush",
+    "setAddressBook:",
+    "_performActionOnNodes:context:selectedOnly:",
+    "setDefaultLockDuration:",
+    "selectedMembersSubrows",
+    "drawFeedbackMode",
+    "_setReorderResizeImageCache:",
+    "calculateFigureSize:",
+    "accessibilityCancelButtonAttribute",
+    "_readStreamEvent:",
+    "setEffectID:",
+    "_doDelayedValidateVisibleToolbarItems",
+    "filterWithName:compatibilityVersion:",
+    "initWithDestination:",
+    "redrawSelectedPagesDrawNow:",
+    "setMarkedText:selectionRange:replacementRange:",
+    "createPixelBufferFromImageBuffer:sourceBounds:options:",
+    "application:runTest:duration:",
+    "workaroundReorderResizeProblem",
+    "issueSetImageCommandWithData:",
+    "defaultController",
+    "application:delegateHandlesKey:",
+    "cellIndexAtColumn:andRow:",
+    "actionHasBegun:sender:",
+    NULL,
+    "setSessionUID:",
+    "startControlWithDelegate:duration:",
+    "_noteDefaultMenuAttributeChanged",
+    "fetchRequestWithSortDescriptors:limit:",
+    "changeInLength",
+    "useVisualContext",
+    NULL,
+    "editValueWithEvent:inView:atPoint:",
+    "_windowDidChangeScreenProfile:",
+    "_abortAndRestartTracking:",
+    NULL,
+    "setValue:forTag:",
+    NULL,
+    "fileManager:shouldProceedAfterError:copyingItemAtPath:toPath:",
+    "attributeType",
+    "_expandItemEntryChildren:atStartLevel:expandChildren:andInvalidate:",
+    "windowNibName",
+    "initWithRTF:",
+    "veryShortStandaloneWeekdaySymbols",
+    "_solveForInput:",
+    "graphicsContextWithBitmapImageRep:",
+    "timingFunctions",
+    "inLiveResize",
+    "computeRealDropIndexFromIndex:takingInAccountHiddenItemsIndexes:",
+    "fontWithDescriptor:size:",
+    "_overlapAmount",
+    "_sortCollections",
+    "isCoreImageAccelerated",
+    "unsignedLongValue",
+    "gotoPreviousPage:",
+    NULL,
+    "setSpecifiedRect:",
+    "matchTarget:selector:object:",
+    "dateWithString:calendarFormat:",
+    "_resetAllDrawersDisableCounts",
+    "_certificateData",
+    "_afterAutosavingDocument:closeAndContinue:context:",
+    "textView:willBeginEditingProperty:effectiveRange:",
+    "rotationGizmoRadius",
+    "lineWidth",
+    "stringByPaddingToLength:withString:startingAtIndex:",
+    "displayPattern",
+    "permitRequest:",
+    "setIgnoresViewTransformations:",
+    "usesUserKeyEquivalents",
+    "accessibilityIsMenuBarAttributeSettable",
+    "authenticationDataForComponents:",
+    "_forceSendDoubleActionForPreviewCell",
+    "initWithFileDescriptor:closeOnDealloc:",
+    "leaveSlideshowFullScreen",
+    "_isDrawingMultiClippedContentAtIndex:",
+    "setInitialValues:",
+    "_retrieveAVCDeviceOpcode:",
+    "setNextState",
+    NULL,
+    "_changeBaseWritingDirection:",
+    "_selectFirstKeyView",
+    "updateItemList",
+    "tableView:shouldEditTableColumn:row:",
+    NULL,
+    "_terminate",
+    "objectInTitleAtIndex:",
+    "_initWithCFURLResponse:",
+    "_timeGlyphTree",
+    "_setNeedsModeConfiguration:itemViewers:",
+    "_validateToOnes",
+    "updateWithFocusRingForWindowKeyChange",
+    "renderingMode",
+    "_typesForDocumentClass:includeEditors:includeViewers:includeExportable:",
+    "_labelCell",
+    "_scriptingBooleanWithDescriptor:",
+    "pressure",
+    "_entitysReferenceID",
+    "_startCacheTimeOutTimer",
+    "_setIsInUILayoutMode:",
+    "pumaLDAPServers",
+    "nonThreadedSave",
+    "drawRectShadow:withAlpha:",
+    "glyphAtIndex:isValidIndex:",
+    "_newSaveRequestForCurrentState",
+    "_registerForChildChangedNotifications",
+    "_isHiragino",
+    "_applyHTTPProxyCredentials:forProxyURL:",
+    "instantiateObject:",
+    "_widthOfLongestDateStringWithLevel:",
+    "grlCount",
+    "contentBorderThicknessForEdge:",
+    "_setTransaction:",
+    "_fetchRootDirectory",
+    "shouldShowWhiteLoadingView",
+    "setPoolCountHighWaterResolution:",
+    "_multipleValueForKeyPath:atIndex:",
+    "trackCloseHit",
+    "_newStandardItemWithItemIdentifier:",
+    "fileCreationDate",
+    "connectionWasBroken:",
+    "_itemChanged:",
+    NULL,
+    "displayedStringsArray",
+    "characterIndexForPoint:tracking:inMarkedRange:",
+    "canCalculateEstimatedSize",
+    "DTDString",
+    "isScrollable",
+    "_signatureUsage",
+    "_renderView",
+    "selectGroup:byExtendingSelection:",
+    "specifierWithPath:",
+    "_nestListAtIndex:",
+    "localizedKeyDictionary",
+    "_menuName",
+    "enumeratorOfTitle",
+    "defaultNameOrdering",
+    "ramBindedRange",
+    "scrollToEndOfDocument:",
+    "_suiteDescriptions",
+    "makeWindowsPerform:inOrder:",
+    "_minXTitlebarResizeRect",
+    "sourceAlias",
+    "captureOutput:willFinishRecordingToOutputFileAtURL:forConnections:dueToError:",
+    "_enableScreenUpdatesIfNeeded",
+    "_endEditingIfNecessaryWhenSelectingColumnRange:",
+    "setTest:",
+    "selectionModeDidChange",
+    "compositionsWithProtocols:andAttributes:",
+    "_writePersistentExpandItems",
+    "setData:forType:",
+    "_postNotificationForEvent:notificationName:parent:child:",
+    "hasOrderedToManyRelationshipForKey:",
+    "_web_noteFileChangedAtPath_nowarn:",
+    "_setMenuItemView:",
+    "_setImageInterpolation:",
+    "lastError",
+    "_sortSublayersToMatchSubviews",
+    NULL,
+    "_clockAndCalendarGetClockFrame:calendarFrame:retreatMonthButtonCellFrame:advanceMonthButtonCellFrame:returnToHomeMonthButtonCellFrame:forDatePickerCellFrame:",
+    "_accessibilityLoadBrowserCellsAtRow:count:",
+    "_showToolbar:animate:",
+    "addCrayon:",
+    "sourceInstancesForEntityMapping:destinationInstance:",
+    "helpMenuOpening",
+    "computeColumnCount",
+    "_applyCompressionOptionsForConnection:",
+    "_setKeyCellFromBottom",
+    "nts_SharedAddressBook",
+    "setAutoValidationDisabled:",
+    "amountOfMemoryOfCurrentDataSource:",
+    "_adjustFrame",
+    "updateReferenceIndexesToReflectRemovalAtIndexes:",
+    "_uncachedRectHeightOfRow:",
+    "initWith:::",
+    "_removeNumberOfIndexes:fromSelectionIndexesAtIndex:sendObserverNotifications:",
+    "_rectOfRowRange:",
+    "setHyphenationFactor:",
+    "_checkSpelling:",
+    "setPolicy:",
+    "objcDescriptorCreationMethodSelector2ForClass:",
+    "initWithRulerView:markerLocation:image:imageOrigin:",
+    "additionalHeightAtRow:",
+    "createDirectoryAtPath:attributes:",
+    "_colorForMetal:style:topHeight:bottomHeight:",
+    "_combineWithMultiValue:updating:",
+    "initWithItemIdentifier:",
+    "imageLayer",
+    "_firstTextViewChanged",
+    "_didEndSelector",
+    "removeWindowsItem:",
+    "foreignEntityKeyColumns",
+    "_handleSelectionChanged",
+    "openGLPixelType",
+    "_isNodeFileTypeEnabled:",
+    "laterDate:",
+    "setPreferredMuted:",
+    "convertPointFromViewToDocument:",
+    "_needsRedisplayWhenBeginningToolbarEditing",
+    "defaultClassNames",
+    "_accessibilityTitleForColumn:",
+    "hasReadablePropertyForKey:",
+    NULL,
+    "_sendManufacturedTrackingAreaEventsForMouseDraggedEvent:forceExit:",
+    "paragraphSpacingBefore",
+    "addEffectWithName:",
+    "changeDestinationToPoint:",
+    "binderClassesSuperseded",
+    "drawImage:inRect:fromRect:alpha:",
+    "distributionListConfigWithKey:person:inGroup:",
+    "policiesDisclosedClicked:",
+    "nts_PeopleWithAddressBook:",
+    "_clearCachedKey",
+    "needInitialDataForKey:",
+    "rangeOfComposedCharacterSequenceAtIndex:",
+    "_standardFrameForDrawersInRect:",
+    "_initFromTestRecord:",
+    "_predicateOperator",
+    "_recreateViews",
+    "initWithBytes:",
+    "_postEventHandling",
+    "setWeekdayOrdinal:",
+    "_resultingCertificate",
+    "positionRelativeToAttachedView",
+    "saveDefaults",
+    "_resizeOutlineColumn",
+    "boolForKey:",
+    "accessibilityIsInsertionPointLineNumberAttributeSettable",
+    NULL,
+    "_getAllAvailableItems:values:asChildrenOfItem:inRow:",
+    "environment",
+    "_scriptingValueOfComplexType:withDescriptor:",
+    "localizedDescriptionForVNodeAtPath:",
+    "_wantsMouseMoveEventsInBackground",
+    NULL,
+    "_removeItemAtIndex:notifyDelegate:notifyView:notifyFamilyAndUpdateDefaults:",
+    "_nearestKeyFrameAtX:andY:controlType:timeLineIndex:",
+    "addGRLToTree:",
+    NULL,
+    "_setJavaLastError:",
+    "renderWithRotationsInContext:rect:",
+    "_internalNetService",
+    "_configureProgressIndicator",
+    "saveComposition:",
+    "contentWidthValueType",
+    "_portIsConnected:view:",
+    "inputClientEnabled:",
+    "cancelSheet:",
+    "_storeMetadataForSaving",
+    "pullDownRectForBounds:",
+    "_getValue:forType:",
+    NULL,
+    "initWithKeyPointerFunctions:valuePointerFunctions:capacity:",
+    "tokenTextViewForWindow:",
+    "initWithObject:basicAnimation:",
+    NULL,
+    NULL,
+    "_notifyFamily_InsertedNewItem:atIndex:",
+    "mountedRemovableMedia",
+    "_wantsPastedFile:",
+    "_document:shouldClose:contextInfo:",
+    NULL,
+    "startNote",
+    "setLanguageModel:",
+    NULL,
+    "getItem:",
+    "indexOfItemWithTarget:andAction:",
+    NULL,
+    "drawSelection:forPage:",
+    NULL,
+    "_consistencyError:startAtZeroError:cacheError:inconsistentBlockError:",
+    "buildWhereClauseForRow:optLock:",
+    "ikConvertEventLocationInWindow:toLayer:",
+    "canAddBinding:toController:",
+    "formatAutosaveName",
+    "_populatePopup:withTableView:",
+    "contentRect",
+    "_downloadEnded",
+    "_zeroScreen",
+    NULL,
+    "_setAllowsTearOffs:",
+    "useCredential:forChallenge:",
+    "_unobstructedPortionOfRect:",
+    "_setConversionFromData:type:inPasteboard:generation:item:",
+    "isInInterfaceBuilder",
+    "totalSize",
+    "lockFocusIfCanDrawInFrame:flipped:clip:",
+    "sortIndicatorRectForBounds:",
+    "findSidebarNodeForNode:",
+    "clearProperties",
+    "commandDescriptions",
+    "initBeforeDispatch",
+    "endEdits",
+    NULL,
+    "initWithFrame:pixelFormat:",
+    "setInputData:",
+    "_trackMouseForHitCell:withEvent:",
+    "_insertNewRowAtIndex:ofType:withParentRow:",
+    "_selectionUpdated:",
+    NULL,
+    "updateGridContent",
+    "initWithAffectedRange:layoutManager:undoManager:replacementRange:",
+    "updateIndexPair:subIndex:count:",
+    "_caseInsensitiveNumericCompare:",
+    "useStoredAccessor",
+    "setDecision:forRecord:",
+    "refresh",
+    "removeFromSuperlayer",
+    "_mutableArrayValueForKeyPath:ofObject:atIndex:raisesForNotApplicableKeys:",
+    NULL,
+    "updateSearchViewWithWidth:",
+    "abGroupDatabaseImpl",
+    "stopTimerForSpeaking",
+    "addProperty:atRow:toRecord:withUniqueId:resultsView:tableName:",
+    "currentDirectoryPath",
+    "setProgrammablePatch:sourceType:",
+    "registerCommandDescription:",
+    "kernelsWithString:",
+    NULL,
+    "availableBindings",
+    "setDisplayDirty",
+    "redSpeed",
+    "whitespaceAndNewlineCharacterSet",
+    "_processObjectStoreChanges:",
+    "rightMouseDown:",
+    "fetchPublicRecordsForClass:withPredicate:prefetchingKeyPaths:addressBook:",
+    "parseBDAY",
+    "frameViewClassForStyleMask:",
+    "_doHide",
+    "substitutedValueForPredicate:",
+    "_fetchPreviewTypeTimedOutForDocumentPreview:",
+    "setContextHelp:forObject:",
+    "_handleSendControlSize:toCellOfView:",
+    "cacheZoomState",
+    "initWithContainerClassID:key:baseGetter:baseSetter:containerIsa:proxyClass:",
+    "_getCursorBitmapWidth:andHeight:",
+    "replacePointerAtIndex:withPointer:",
+    "point",
+    "reactToDockSizeChange",
+    "_sourceEntityVersionHashesByName",
+    "labelForPage:",
+    "currentGRLResolved:",
+    "_appendTypeDefinitionsSuiteDeclarationToAETEData:",
+    "_changeAllDrawersFirstResponder",
+    "setStartSpecifier:",
+    "_imp",
+    "arrayRepresentation",
+    NULL,
+    NULL,
+    "animation:didReachProgressMark:",
+    "calculatesAllSizes",
+    "elementTypeDescription",
+    "fastestMipmapItemForSize:forGLRendering:",
+    "_shouldProcessLongTasks",
+    "_configureDirectoryPopup",
+    NULL,
+    "_couldHaveBlinkTimer",
+    NULL,
+    "ignoresAlpha",
+    "revertAndCloseManagedObjectContext:",
+    "_cleanUpOpenGLContext",
+    "endLocalContext",
+    "localizedModelStringForKey:",
+    "initWithSetHeader:",
+    "_dictionaryRepresentationForPropertyTypes:andProperties:",
+    "superclassDescription",
+    "operatorType",
+    NULL,
+    "showNodeInCurrentDirectoryWithFilename:selectIfEnabled:",
+    "mergeNote:",
+    "generateTableAlias",
+    "_writeMetadataData:andMapDataData:toFile:error:",
+    "removeTabStop:",
+    "initWithCalendarIdentifier:",
+    NULL,
+    "isShown",
+    "attributesForParameterPortWithInfo:name:index:",
+    "initWithType:arguments:inHelpBooks:",
+    "setArrowPosition:",
+    "sortingGroup",
+    "findNode:matchType:useFirst:",
+    "setFrameFromString:",
+    "_recacheButtonColors",
+    "scrollDown",
+    "_changed:",
+    "_highlightAllLinesWithColor:",
+    "_getValue:forObj:",
+    NULL,
+    "isSecure",
+    "boundingRectWithSize:options:attributes:",
+    "monthOfYear",
+    "accessibilityRowsAttribute",
+    "_generateMetalBackground",
+    "visibleFrame",
+    "_pageFormatAttributeKeys",
+    NULL,
+    "imageToDrawAtIndex:",
+    "ruleEditor:child:forCriterion:withRowType:",
+    NULL,
+    "curveHullsEnabled",
+    "popupDictionary",
+    "nonmutatingMethods",
+    "_windowDidClose",
+    "_unpackEventRef:",
+    "_menuItemViewerHIViewClassName",
+    NULL,
+    "_setupCallbacks",
+    "indexItemsArray:",
+    "_handleError:delta:fromRect:toPoint:",
+    "localContext",
+    "_result",
+    "drawInRect:withAttributes:",
+    "graphicsPort",
+    "allowPictureEditing",
+    "_drawerDepthInset",
+    "_moveCursor",
+    "_setEncounteredCloseError:",
+    "moveRequestWithSession:sourceURI:destinationURI:sourceToken:destinationToken:",
+    "paperSize",
+    "recycle",
+    "startTrackingWithEvent:inView:withDelegate:",
+    "fullPath",
+    "replaceCharactersInRange:withString:",
+    "_setMultipleValue:forKey:atIndexPath:",
+    "_bottomMargin",
+    "setMaximumSignificantDigits:",
+    "createImageFromImageSourceRef:",
+    "onSliderMouseUp:event:",
+    "_allowAnimated_setShadow:",
+    "_initializeSAX2Callbacks",
+    "abDictionaryForBackupAtPath:",
+    "startProxy",
+    "filesystemItemRemoveOperation:shouldRemoveItemAtPath:",
+    "setDrawsContainmentIndicator:",
+    "totalCount",
+    "initPopUpWindow",
+    "_unprotectEvilCharacter:",
+    "methods",
+    NULL,
+    "_dataRepresentationFromBitmapRepresentation:",
+    "recordToManyUpdatesForObject:withOperation:",
+    "_prefetchWithFetchRequest:withObjectIDs:inContext:",
+    "_renderingInfo",
+    "provideNewSubview:",
+    "setQuotingWithSingleQuote:double:",
+    "countKeyPathForNode:",
+    "_registerOrUnregister:observerNotificationsForKeyPath:ofModelObject:",
+    "initWithAppleEventCode:",
+    "setItemsPerRow:",
+    "_animatedScrollToPoint:",
+    "_doAutoselectEdge",
+    "customProperty",
+    "initGetWithSession:URI:ifModifiedSince:includeRangeHeader:rangeStart:rangeEnd:localDestination:",
+    "_convertRectFromSuperview:test:",
+    "computeAlphaMask",
+    "setMinimumIntegerDigits:",
+    "_updateLayerSize",
+    "sortedArrayUsingSelector:",
+    "confirmCloseSheetIsDone:returnCode:contextInfo:",
+    "shouldColorMatch",
+    "localTimeZone",
+    "indexGreaterThanOrEqualToIndex:",
+    "shouldIndex",
+    "_fetchRequestForPerformingFetch",
+    "_doAutoscroll:",
+    "defaultBoostShadowAmount",
+    "primitiveAppleUseCoreUI",
+    "setUsesDataSource:",
+    "valueWithSize:",
+    "pointingDeviceType",
+    "reflROI:forRect:userInfo:",
+    "_servicesMenuHasLoaded",
+    "_segmentedMenuDelayTime",
+    "_insertNodeIntoEntityCache:",
+    "setClearsFilterPredicateOnInsertion:",
+    "URLsFromRunningOpenPanel",
+    "_receivedSuccessResponse",
+    "_needsLiveUpdates",
+    "cacheMode",
+    "didStartRenderingPatch:",
+    "convertNeutralX:y:toTemperature:tint:",
+    "coveredCharacterSet",
+    NULL,
+    "_endCustomizationPanel",
+    "fastMipmapItemForSize:forGLRendering:",
+    "separatesColumns",
+    "sharingType",
+    "CIContext",
+    "operation:notify:",
+    "resolveDecompressionSessionOptions:pixelBufferAttributes:",
+    "mouseExitedDelegate:",
+    "destinationEntity",
+    "setInterpolateSizeAndColor:",
+    "viewOffsetForCurrentClipRect",
+    "selectRowsWithCachedStatement:",
+    "_addOutputPortWithClass:forKey:attributes:",
+    "_drawFocusRingWithFrame:",
+    "adjustView:frame:forView:characterIndex:layoutManager:",
+    "versionForClassNamed:",
+    "enableSecureInput:",
+    "allProperties",
+    NULL,
+    "setFileAttributes:",
+    NULL,
+    "setCanChooseFiles:",
+    "attributeTypeForXMLInfo:",
+    "registeredImageRepClasses",
+    "setScriptErrorOffendingObjectDescriptor:",
+    "_childrenChangedForNode:",
+    "errorWithDomain:code:userInfo:",
+    "containerNodeWithChildren:",
+    "setCurrentOperation:",
+    "initWithName:",
+    "filesystemItemCopyOperation:shouldCopyItemAtPath:toPath:",
+    "setRepresentedURL:",
+    "_doneEditing:",
+    "canZoomIn",
+    "_setForceOriginalFontBaseline:",
+    "pullDownImage",
+    "_clearTrackingRects",
+    "isZoomable",
+    "imageCropView:keyUp:",
+    "markBegin",
+    "vcHardwareCaps",
+    NULL,
+    "_noDataConnections",
+    "_clientDidEndSelector",
+    "initWithSetFunc:forImp:selector:",
+    "compositionsWithProtocols:andAttributes:sortedBy:",
+    NULL,
+    NULL,
+    NULL,
+    "_keyboardIsOldNeXT",
+    "_isAll",
+    "deviceWithUniqueID:",
+    "movieBeingSet",
+    NULL,
+    "nsImage:",
+    "showsSuppressionButton",
+    "_textBackgroundColor",
+    "nts_IsAll",
+    "_topmostChild",
+    "sharedPreviewView",
+    "bufferBytesPerRow",
+    "writablePasteboardTypes",
+    "setSendsWholeSearchString:",
+    "initWithName:url:filterData:actions:domains:comments:readOnly:owner:",
+    "_getPageHeaderRect:pageFooterRect:forBorderSize:",
+    NULL,
+    "bumpDatasourceVersion",
+    "setWhereIntermediate:",
+    "_windowWithRealWindowNumber:",
+    "_computeMinimumDisplayedLabelSize",
+    "resolveConflict:",
+    NULL,
+    NULL,
+    NULL,
+    "_noUiClearField:",
+    "switchVisualContexts",
+    "_reloadData",
+    "firstResponder",
+    "date",
+    "_acceptSubpredicates:flags:",
+    "screen",
+    "fidelityForEngineOfClass:forDisplayID:",
+    "_checkInName:onHost:andPid:forUser:",
+    "conditionalBehaviorOffByDefault:",
+    "didFinishLoading",
+    "accessibilityRangeForIndexAttributeForParameter:",
+    "usesIndexLabels",
+    "convertFontTraits:",
+    "_adaptPreviewFrameForStaticPreviewSizeHint:minSize:maxSize:",
+    "fieldDataForOid:",
+    "isDateComparison:forProperty:",
+    "_buttonToolTip",
+    "minimumRangeOfUnit:",
+    "initWithFrame:prototypeRulerMarker:",
+    "_isCollectionDecodingUnarchiver:",
+    "accountUpgradeURL",
+    "measureRequirementsOf:query::results:",
+    "ignoresViewTransformations",
+    "pathFromPartialURLOrHFSPath",
+    "roundDeterminateColor",
+    "keyForIndex:",
+    "newWithOwner:",
+    "importFinished:",
+    "closeWithEffect:",
+    "_pathLocationControlDoubleClick:",
+    "_requireMainThreadDefaultBezelCaching",
+    "_initEmptyHTMLNames",
+    "_arrayForPartialPinningFromArray:",
+    "totalLen",
+    "_delegateRespondsToCanSelectRow",
+    "_setResultingCertificateData:",
+    "minuteOfHour",
+    "language",
+    "clearAllFieldVisiblity",
+    NULL,
+    "tableColumn",
+    "bufferBaseAddress",
+    "registeredProtocols",
+    "mouseDown:",
+    "_didCloseFile:",
+    "setKeyBindingManager:",
+    "showGroupMembership",
+    "connection:didReceiveAuthenticationChallenge:",
+    "setCellPrototype:",
+    "filteredImage:keysAndValues:",
+    "lastRange",
+    NULL,
+    "_addProperty:",
+    NULL,
+    "setTreatsDirectoryAliasesAsDirectories:",
+    "_buildGraphUnitsForOutputConnection:error:",
+    "startDragNDropWithEvent:",
+    "setSelectionIndex:",
+    "_raiseNilValueExceptionWithSelector:",
+    "goToPage:",
+    "newNormalizedSearchString",
+    NULL,
+    "initWithFrame:options:",
+    "_doFindIndexesOfNodes:inDirectory:visitedNodes:",
+    "frameSizeForContentSize:hasHorizontalScroller:hasVerticalScroller:borderType:",
+    "_canUseKeyEquivalentForMenuItem:",
+    "freeExpendedRepresentationCaches",
+    NULL,
+    "canDragRowsWithIndexes:inColumn:withEvent:",
+    "_getProgressFrame",
+    "_removeSubview:",
+    "rectOfTickMarkAtIndex:",
+    NULL,
+    NULL,
+    "setFauxFilePackageTypes:",
+    "_closeAlertSheet:wasPresentedWithResult:inContext:",
+    "presentableNames",
+    "_keyViewRedirectionDisabled",
+    "modificationDate",
+    "didChangeValuesForArrangedKeys:objectKeys:indexKeys:",
+    "imageUID",
+    "_superitem",
+    "pointerArrayWithStrongObjects",
+    "_datasourceImageRepresentationType",
+    "_archivedData",
+    "isFloatSupported",
+    "initWithXMLString:options:error:",
+    "_setRemoved:",
+    "invokeSelector:withArguments:forBinding:atIndexPath:error:",
+    "_hasBezelBorder",
+    "nodeAtIndex:",
+    "_singleFilePathValue",
+    "handleEvent:characterIndex:edge:client:",
+    "_layoutOrderForItem:inRow:",
+    "_setLineBreakMode:",
+    "computeInlay",
+    "_updateMeasurements",
+    "_customFieldWindowSheetDidEnd:returnCode:contextInfo:",
+    "client",
+    "removeObserver:name:object:",
+    "outlineView:persistentObjectForItem:",
+    "_didSaveChanges",
+    "commitPendingChangesAndSave:",
+    "fileHandleForReading",
+    "highlightedMenuColor",
+    "runActionForKey:object:arguments:",
+    "_ensureMinAndMaxSizesConsistentWithBounds",
+    "rootProxyForConnectionWithRegisteredName:host:",
+    "scrollOriginForPageTopLeft:",
+    "acceptsRootNode",
+    "animationWithKeyPath:",
+    "_goUp:",
+    "_coreUILinearKnobCallbacksMap",
+    "menuBarVisible",
+    "_animationTimerCallback:",
+    "isHeartBeatThread",
+    NULL,
+    "defaultAttachmentScaling",
+    "_traverseLibXML2Node:depth:",
+    "afmDictionary",
+    "createArrayRef",
+    "_getBucketLocationForBucket:",
+    "addEntriesFromDictionary:",
+    "clearsColorBuffer",
+    NULL,
+    "_cachedObjectValue",
+    "_readURLStringsWithNamesIntoRange:fromPasteboard:",
+    "_setCertAuthorityIsEnabled:",
+    "_inQuickDisplayModeForWindow:",
+    "isErrorStatusCode:",
+    "_recursivelyUpdateKeyEquivalents",
+    "tableView:shouldTrackCell:forTableColumn:row:",
+    "indexOfItemWithObjectValue:",
+    "whitePoint",
+    "settingsView:clearSettingForKey:",
+    "_backingType",
+    "endEditing:",
+    NULL,
+    "_willPresentReopeningError:forURL:contentsURL:",
+    NULL,
+    "superRelease",
+    "clearProgressBarToolTip",
+    "isRotatedOrScaledFromBase",
+    "fadePopUpWindowImmediately",
+    "setOperationColor:",
+    "resetRectCaches",
+    "setTexturePackerIndex:",
+    "createAuxData",
+    "connect:",
+    "setHidesEmptyCells:",
+    "_generateInverseRelationshipsAndMore",
+    "forwardMetadataToObject:",
+    "setAttributedAlternateTitle:",
+    "documents",
+    "_eventRelativeToWindow:",
+    "backupInfoDictionariesSortedByDate",
+    NULL,
+    "changedMembers:",
+    "_distinctUnionOfObjectsForKeyPath:",
+    "getClasses",
+    "_setRowHeaderTableColumn:repositionTableColumnIfNecessary:",
+    "commonInit",
+    "decompressionRequirementsDidChangeForConnection:",
+    "setMeCard:",
+    NULL,
+    "selectionGranularity",
+    "deviceCMYKColorSpace",
+    "srRecognitionSystem",
+    "_maintainInverseRelationship:forProperty:oldDestination:newDestination:",
+    "applyToContext:",
+    "_stopObservingNodeIfNecessary:",
+    "childrenKeyPathForNode:",
+    "alwaysShowsDecimalSeparator",
+    "newUpdateStatementWithRow:",
+    "setHighlighted:",
+    "_errorExpectedTypeDescriptor",
+    "displayCompletions:indexOfSelectedItem:forPartialWordRange:originalString:atPoint:forTextView:",
+    "_subthreadComputePreviewThumbnailImages",
+    "_copyReplacingURLWithURL:",
+    "menu",
+    "_shouldDrawArrow",
+    "insertColor:key:atIndex:",
+    "imageScalingForSegment:",
+    "decodeValuesOfObjCTypes:",
+    "createThumbnailForIndex:subIndex:",
+    "insertObject:atArrangedObjectIndex:",
+    "updateInsertionPointStateAndRestartTimer:",
+    "ownsDestinationObjectsForRelationshipKey:",
+    "_minXTitlebarWidgetInset",
+    "_popUpMenuWithEvent:forView:",
+    "displaceROI:forRect:userInfo:",
+    "_updateMenuForClippedItems",
+    "setNamespaces:",
+    "maidenName",
+    "callbacks",
+    "_initInStatusBar:withLength:withPriority:",
+    "_ungrowFrameForDropGapStyle",
+    "tableColumnWithIdentifier:",
+    "quartzFilterManager:didAddFilter:",
+    "_endInsertionOptimization",
+    "_computeBounds",
+    "sharedCompositionRepository",
+    "_convertToText:",
+    "_promoteGlyphStoreToFormat:",
+    "invalidateCellsLayoutAtIndexes:",
+    "addSample:range:withDuration:sampleDescription:numberOfSamples:withFlags:",
+    "imageWithCGImageSource:",
+    "anyAttributeString",
+    "beginFindStrings:withOptions:",
+    NULL,
+    "lastColumn",
+    "centerScanRect:",
+    "redColor",
+    "setUpDataSourcesAndSelection",
+    "setFilterString:",
+    "_argumentsFromAttributesKey:originalArguments:",
+    "propertiesWithAddressBook:",
+    "_positionWindow",
+    "_coreUILinearBarCallbacksMap",
+    "_drawGapStyleDropHighlightBetweenUpperRow:andLowerRow:atOffset:inGapRect:",
+    "_saveIconViewTextSize:",
+    "displayNameAtPath:",
+    "initWithState:withParent:",
+    "entries",
+    NULL,
+    "_popUpContextMenu:withEvent:forView:withFont:",
+    "_requestAnyHiddenState",
+    "initWithError:",
+    "_printSettingsAttributeKeys",
+    "changeCurrentDirectoryPath:",
+    "sizeForMagnification:",
+    "initMakeCollectionWithSession:path:",
+    "_registerUndoForInsertedObjects:",
+    "stateImageWidth",
+    "_real_willChangeValueForKey:",
+    "removeAllPoints",
+    "_updateAppleMenu:",
+    "getNumberOfRows:columns:",
+    "loadPlugInAtPath:",
+    "postNotification:",
+    "createElementNS:qualifiedName:",
+    "_openDrawerOnEdge:",
+    "_handleSpeechDoneCallback",
+    "_updateVisibleCellIndexes",
+    "detachNewThreadSelector:toTarget:withObject:",
+    "_accessibilityButtonRect",
+    "setCurrencyDecimalSeparator:",
+    NULL,
+    "readFromURL:options:documentAttributes:error:",
+    "setEnableLiveAntialiasing:",
+    "convertCString:toUnsignedInt64:withBase:",
+    "_compositedBackground",
+    "backgrounQueriesRunning",
+    "useExifChanged:",
+    "goToNextPage:",
+    "setTailIndent:",
+    NULL,
+    "setWindowBackingLocation:",
+    "relationshipMappings",
+    "switchToSinglePage",
+    "localizedNameForFamily:face:",
+    "releaseCaches",
+    "_menuItemDictionaries",
+    "_usesLightBottomGradient",
+    "allThumbnails",
+    "_adjustButtons",
+    "initWithGroup:newName:addressBook:",
+    "setImageName:action:target:",
+    NULL,
+    NULL,
+    "accessibilityBoundsForRangeAttributeForParameter:",
+    "_generateSQLForExpressionCollection:allowToMany:inContext:",
+    "_isChecked",
+    "arrayWithRanges:count:",
+    "selectDraggedFileNode:",
+    "_ownedByPopUp",
+    "_createDefaultCollectionRep",
+    "removeAttribute:values:",
+    "_setDocumentDictionaryName:",
+    "__oldnf_addThousandSeparatorsToFormat:withBuffer:",
+    "setArray:",
+    "tooltipEntered:",
+    "validateImage",
+    "_setContentHasShadow:",
+    "initWithComposition:controller:",
+    "openGLStateDidChange",
+    "attributesForKey:",
+    "resultCode",
+    "_informParentStore:noLongerInterestedInObjects:",
+    "matchForPredicate:",
+    "_computeFolderContentsThumbnailsContinuously:requestIndex:",
+    "setMaximumCacheSize:",
+    "_visibleRowIndexesForObject:",
+    NULL,
+    "attributesAtIndex:longestEffectiveRange:inRange:",
+    "_setPrintNameWithName:item:",
+    "_setHeaderLocalizer:",
+    "sizeWhenSizedToFit",
+    "setDefaultCredential:forProtectionSpace:",
+    NULL,
+    "fillOval:color:context:",
+    "fontPanel:",
+    "sourceDidChangeNotification:",
+    "recalcInsideShadow:forResolutionData:",
+    "_postFrameChangeNotification",
+    "_enqueueEndOfEventNotification",
+    "smartDeleteRangeForProposedRange:",
+    "isGreaterThan:",
+    "setOptionsDictionary:",
+    "removeSubNodesAtIndexes:",
+    "conditionallySetsEnabled",
+    "_loadWordData",
+    "drawDividerInRect:",
+    "_initWithCFCachedURLResponse:",
+    "sizeValueForAccessibleChildAtIndex:",
+    "limitRect",
+    "imageForSegment:",
+    "selectResult:",
+    "flushAllCachedChildren",
+    "evaluateUTF8String:sourceURL:line:",
+    "_scrollToFinalPosition",
+    "CA_distanceToValue:",
+    "receivePort",
+    NULL,
+    "doPerformSCTViewGRL:",
+    "commands",
+    NULL,
+    "buttonResultForResolutionData:",
+    "_synchronizerThread:",
+    "enumeratorWithArray:",
+    NULL,
+    "getAllObjects:",
+    "mappingForEntity:forConfigurationWithName:",
+    "firstSubscribedGroup",
+    "splitView:resizeSubviewsWithOldSize:",
+    "_attributedStringValue:invalid:",
+    "setPrimitiveValue:forKey:",
+    "addMember:forKey:",
+    "initFromGrayValue:toGrayValue:colorSpace:",
+    "child:withModifier:referenceType:value:",
+    "stringWithString:",
+    "_isWhitespace:",
+    "pointInTitleRect:inNode:bounds:",
+    "annotationFollowing:wrapAround:",
+    "_changeDrawerMainState",
+    "_postNicestDraw",
+    "foldPolys:aboutCenterX:Y:atAngle:up:",
+    NULL,
+    NULL,
+    "_delegateRespondsTo_nextTypeSelectMatchFromIndex",
+    "_appendKeyFrame:",
+    "_lookUpDefiniteRangeInDictionaryFromMenu:",
+    "transformEnclosedArea:by:",
+    "_prefersTrackingWhenDisabled",
+    "writeEPSInsideRect:toPasteboard:",
+    "_insertObjects:atArrangedObjectIndexes:objectHandler:",
+    "mutableCopy",
+    "newSegmentOfSize:",
+    NULL,
+    "appendClause:forProperty:keypath:",
+    NULL,
+    "_resizedWidth",
+    "setRef:toObj:",
+    "liveAntialiasingEnabled",
+    "serializePListValueIn:key:value:",
+    "spinningArrows",
+    "_doInvokeServiceIn:msg:pb:userData:error:unhide:",
+    "inputDevicesWithMediaType:",
+    "runDotMacToolWithArguments:wait:",
+    "setDefaultLineJoinStyle:",
+    "_exitedFullscreen",
+    "_updateFormattedQueryString",
+    "startListeningForCameraEvents",
+    "viewAnimations",
+    "_setNeedsDisplayInRectWithFocus:",
+    NULL,
+    "pixelBlockWidth",
+    "_initWithRetainedCFSocket:protocolFamily:socketType:protocol:",
+    "_dragCanBeginFromHorizontalMouseMotion",
+    "_recomputeBucketIndex:bucketFirstRowIndex:",
+    "pixelFormatXRGB8",
+    "_binderForBinding:withBinders:createAutoreleasedInstanceIfNotFound:",
+    "ISS__ay_postNotificationName:object:userInfo:inThread:beforeDate:",
+    "cycleToNextInputScript:",
+    "tabView:shouldSelectTabViewItem:",
+    "_tabViewWillRemoveFromSuperview",
+    "_arrangeToHaveMetadata:",
+    "initWithResource:",
+    "removeMember:",
+    "sendAction:to:from:",
+    NULL,
+    NULL,
+    "_scrollRowToCenter:",
+    "rowAtY:",
+    "setPanelFont:isMultiple:",
+    "_computeDragImage",
+    "drawerDidClose:",
+    "accessibilityWindowAttributeValueHelper",
+    "objectIsForcedForKey:",
+    "_flushCachedChildrenForNode:",
+    "analyzeRevealedGRLs:withWindow:withWindowGRL:",
+    NULL,
+    "_loadColors",
+    "_didRender:",
+    NULL,
+    "inputNeutralTint",
+    "_frameDescriptor",
+    "copyGlobalRootContext",
+    "cancelDelayedPicture",
+    "initWithRow:column:outlineView:",
+    "_verifyDefaultButtonCell:",
+    NULL,
+    "sharedFileInfoCache",
+    "parseNICKNAME",
+    "decodeSizeForKey:",
+    "_QCView",
+    "pathControl:validateDrop:",
+    "isEncrypted",
+    NULL,
+    "_isExplicitlyNonEditable",
+    "_createElementContent:",
+    "isInfinite",
+    "_topLevelObjectClassDescription",
+    NULL,
+    "_unpackMouseEventRef:",
+    NULL,
+    "positiveFormat",
+    NULL,
+    "_createMenuMapLock",
+    "rootElement",
+    "visualContextRef",
+    "ql_commonInit",
+    "messageFontOfSize:",
+    "accessibilityIsSelectedTextAttributeSettable",
+    "stringForType:",
+    "_setMouseEnteredGroup:entered:",
+    "invokeSelector:withArguments:forBinding:atIndex:error:",
+    "setHasShadow:",
+    "visibleCellIndexesDidChange",
+    "_typesetterBehavior",
+    "canAllocateSize:",
+    "_readFilenamesIntoRange:fromPasteboard:",
+    "rectForItem:inBounds:",
+    NULL,
+    "perspectiveROI:forRect:userInfo:",
+    NULL,
+    "setLocation:forStartOfGlyphRange:",
+    "removeFilterNotification:",
+    "canIgnoreSettingMinAndMaxForObject:",
+    "_drawStandardPopUpBorderWithFrame:inView:",
+    "_setContextInfo:",
+    "initWithDataSource:",
+    "objectInInputTopLineAtIndex:",
+    "_registerForSessionNotifications",
+    NULL,
+    NULL,
+    "_web_guessedMIMETypeForExtension:",
+    "incrDBRetainCount",
+    "removeColumns:",
+    "showWindow",
+    "customMipmapIsValidAndMatchSize:andQuality:",
+    "_web_stringByExpandingTildeInPath",
+    "_getFSRefForPath:withOptions:",
+    "fxButton",
+    "recalculateKeyViewLoop",
+    "scanForPopupsUserOpened:",
+    "_setNeedsDisplayForDropCandidateItem:childIndex:mask:",
+    "fillSubrowList:forDisplayedRecords:withDelegate:",
+    "defaultLineWidth",
+    "setLeadingOffset:",
+    "_animatePanel",
+    "selectWord:",
+    "_copyNeedsDisplayRegionInRect:validateSubtractedRegion:",
+    NULL,
+    "topAutoreleasePoolCount",
+    "_presentModalAlertWithError:responder:relatedToBinding:",
+    "tableView:dataCellForTableColumn:row:",
+    "localizedCatalogNameComponent",
+    NULL,
+    NULL,
+    "classDescriptionForKey:",
+    "sortsChildrenEfficiently",
+    "_protocolClassForRequest:allowCF:",
+    NULL,
+    NULL,
+    "gradientWithParameters:inRect:",
+    "_descriptorByTranslatingColor:ofType:inSuite:",
+    "_setStdTextAttrs:select:font:color:",
+    "invokeWithTarget:",
+    "drawInsertIcon:inContext:",
+    "indexPathByRemovingLastIndex",
+    "valueForProperty:shouldTranslateToStrings:",
+    "isCurrListEditable",
+    NULL,
+    "recordsMatchingSearchElement:",
+    "_isClosable",
+    "setThumbnailQuality:",
+    NULL,
+    "wantsToInterpretAllKeystrokes",
+    "_shouldAttemptDroppingAsChildOfLeafItems",
+    "shortValue",
+    NULL,
+    "setUnquotedStringCharacters:lowerCaseLetters:upperCaseLetters:digits:",
+    "_trackMouse:forSegment:inRects:count:inCellFrame:ofView:untilMouseUp:",
+    "_removeMouseMovedListener:",
+    "outlineViewItemDidExpand:",
+    "willFireFault",
+    "screenRectForItem:",
+    "chapterTrack",
+    "resolveURL:withResponseTarget:",
+    "drawPlaceHolder:inRect:reflection:",
+    "setRunning:",
+    "directoryResultsPane",
+    "setReferenceOf:",
+    "isBusyForTaskManager",
+    "_willDisplayOpenPanel:",
+    "initWithOpenGLContext:options:",
+    "_knobRectFromPercentage:radius:",
+    "_convertValueToObjcValue:originRootObject:rootObject:",
+    "_createImageFromPasteboard:",
+    "_totalAdvancementForNativeGlyphs:count:",
+    "recordToMany:forSourceObjectID:relationshipName:",
+    "_automateLiveScroll",
+    "_batchExpandItemsWithItemEntries:expandChildren:",
+    "_contentToFrameMaxYHeight:",
+    "_launchOrWaitForDaemon",
+    "dividerThickness",
+    "genieFXLoop:",
+    "spaceItemIdentifier",
+    "_saveSheetDidEnd:returnCode:contextInfo:",
+    "_highlightColumn:clipRect:",
+    "sessionUsername",
+    "itemWithTitle:",
+    "_createSurface",
+    "setCommentColor:",
+    "abbreviationForDate:",
+    "unscheduleOnRunloop:mode:",
+    "_requestEnabledState:",
+    "analyzeAndIndexAppDidComplete:",
+    "setFormatAutosaveName:",
+    "shouldChangeTextInRange:replacementString:",
+    "_contextMenuTargetForEvent:",
+    "_undoRedoChangeProperties",
+    "_captureReorderResizeColumnImageCaches",
+    NULL,
+    "setHref:",
+    "setTrust:",
+    "getGlyphs:range:",
+    "savedQueryData",
+    "insertSublayer:below:",
+    "dismissTimeMachine",
+    "_preparePredicateOperator:",
+    "canFocusCell:atTableColumn:row:",
+    NULL,
+    "initWithUID:dataFile:",
+    "indexForUID:",
+    "from:subtract:",
+    "_destroyRealWindowIfNeeded",
+    "_simpleDeleteGlyphsInRange:",
+    NULL,
+    "_setNextKeyBindingManager:",
+    "_postFromSubthread:",
+    "_computeMinHeightForSimpleSavePanel:",
+    "setDirectory:",
+    "setPreviewFeatures:",
+    "_hasHorizontalOrientation",
+    "_computeAllRevealovers",
+    "scheduledTimerWithTimeInterval:invocation:repeats:",
+    "orPredicateWithSubpredicates:",
+    "_createWindowsMenuEntryWithTitle:enabled:",
+    "allowsSubpatchesWithIdentifier:",
+    "_isAXConnector",
+    "sendWillCacheResponse:",
+    "setWithObjects:count:",
+    "flushBuffer",
+    "_parseText2",
+    "_setDidWarnAboutSelfSignedCert:",
+    "trackStandardTextSelection:",
+    "idleAllMovies:",
+    "removeAppleUseCoreUI:",
+    "countOfInputBottomLineParams",
+    NULL,
+    NULL,
+    "orderedDocuments",
+    "updateWithinDateWidgetsWithInterval:",
+    "_accessibilityNumberOfChildren",
+    "typeForProperty:withComparison:",
+    "inspectorClassWithIdentifier:",
+    "nodeClassDescription",
+    "_cancelInPerforms:target:selector:",
+    NULL,
+    "switchedInputMode:",
+    "_updateCAConfigFileSerialNumberToInt:",
+    "setGhostCellCountOnTheRight:",
+    "_hasSelectedRow",
+    "initWithContentsOfMappedFile:error:",
+    "previewView:dragOperationForDrop:forURL:",
+    "_specifiedIndicesOfObjectOrObjectsInContainer:count:",
+    "invalidateGlyphsForCharacterRange:changeInLength:actualCharacterRange:",
+    "mouseDownStyle",
+    "showsToolbarButton",
+    "shortcutIsVisible",
+    "_editOnSingleClick",
+    "updateMovieBoxIsOpaque",
+    "mnemonicLocation",
+    "_buttonFrameSizeForSizeMode:",
+    "abGlobalMailRecentAPILockInFile:line:",
+    "_applicationStatusChange:",
+    "initQCContextWithSize:",
+    "_handleMouseEvent:",
+    "unhideAllApplications:",
+    "_carbonNotification",
+    "state",
+    "setAutoAddExtensionToNextInput:",
+    "tabStopType",
+    "_installPending",
+    "coerceArray:toColor:",
+    "initWithBitmap:rowBytes:bounds:format:options:",
+    "_unpinViews:resizeMasks:",
+    "overlayForType:",
+    "sortsSublayers",
+    "mouseLocationOutsideOfEventStream",
+    NULL,
+    "_minimizeToDock",
+    "enumeratorWithDictionary:",
+    NULL,
+    "initWithContentsOfURL:usedEncoding:error:",
+    "_setMinColumnLayoutMinRequiredVisibleWidth:",
+    "simpleQueryString",
+    "imageCropViewEditedImageDidChange:",
+    "drawRotationGizmo",
+    "_tryToSetCurrentPageNumber:",
+    "addMovieToIdleList",
+    "_checkExecutionMode",
+    NULL,
+    "insertObject:inAppleUseCoreUIAtIndex:",
+    "setCurrent:",
+    "_ruleAreaRect",
+    "_glyphIndexForCharacterIndex:startOfRange:okToFillHoles:",
+    "_allowAnimated_removeFromSuperviewWithoutNeedingDisplay",
+    NULL,
+    "reload",
+    "accessibilityContentsAttribute",
+    "setReplyTimeout:",
+    "rectWithoutShadow",
+    "scrollWheelMultiplier",
+    "beginSecureMode",
+    "_readRTFIntoRange:fromPasteboard:",
+    "verbForImportPanel",
+    NULL,
+    "_setColumnSpan:",
+    "exporterForImageManager:",
+    "allAssociatedMembersAndSubgroups:",
+    "pointerFunctions",
+    "hostname",
+    "writePlist:toURL:withMode:owner:group:format:",
+    "_minXWindowBorderWidth",
+    "startAddress",
+    "lastRangeOnPage:",
+    "serviceWithName:inManagedObjectContext:",
+    "indexOfRecord:",
+    "setCompareSelector:",
+    "encodeInteger:forKey:",
+    "tableView:updateVisibleRowInformation:",
+    "resizePathFrom:to:",
+    NULL,
+    NULL,
+    "setFidelity:",
+    "utiAsString",
+    "_canRunCustomizationPanel",
+    "importPeople:intoGroup:",
+    "fillRect",
+    "transformPoint:",
+    NULL,
+    "_putKeyFormAndDataInRecord:",
+    "_validateGroupsSelection",
+    "printJobTitle",
+    "externalType",
+    "_cachedCompositions:",
+    "_displayTemporaryToolTipForView:withDisplayDelegate:displayInfo:",
+    "readRTFDFromFile:",
+    "setMouseOnIcon:",
+    "handleEventDelegate:",
+    "accessibilityIsVisibleCharacterRangeAttributeSettable",
+    "createCGImageForManager:withOptions:",
+    "textContainerInset",
+    NULL,
+    NULL,
+    "day",
+    "setupItem",
+    "_removePopUpWithTag:",
+    "resizedColumn",
+    "_defaultLineHeight:",
+    "setAutosaveTableColumns:",
+    "scriptingIsLessThan:",
+    "_loadMediaBrowserNodeIfRequired",
+    "sizeOfTitlebarToolbarButton",
+    "_setAsSystemColor",
+    "pixelFormatIf",
+    "_isPixelAlignedInWindow",
+    "automaticallyHandleGutter",
+    "setNotificationCenterSerializeRemoves:",
+    "_characterIndexForMoveForwardFromSelectedRanges:",
+    "putLength",
+    "newIncrementedSearchString",
+    "accessibilityIsRoleDescriptionAttributeSettable",
+    "initialConditionsFromResolutionData:",
+    "isEditingGroupName",
+    "childWindows",
+    "_handleFileListModeChanged",
+    "setSelected:forKeyFrame:inTimeLine:extendSelection:",
+    "_imageRectWithRect:",
+    "cellNotification:cell:",
+    "_contentChanged:regenerate:",
+    "indexOfDirectoriesGroup",
+    NULL,
+    "enumeratorAtPath:",
+    "setDisplayedCard:",
+    "loadSidebar",
+    "visibleCellIndexes",
+    "_adjustTimerForAutosync",
+    "_distanceFromToolbarBaseToTitlebar",
+    "_canDrawOutsideLineHeight",
+    NULL,
+    "_setErrorNumber:",
+    "_userKeyEquivalentModifierMaskForTitle:",
+    "beginSheetForSavePanel:withFilepath:didEndSelector:contextInfo:",
+    "availableStateGRLs",
+    "_readStringIntoRanges:fromPasteboard:",
+    "_notifyObserversForKeyPath:change:",
+    "audioStreamBasicDescription",
+    "minSize",
+    NULL,
+    "indexValue",
+    "initWithAutoUpdate:",
+    "setCharacterIndex:layoutManager:",
+    "_dateForString:",
+    "modeButton",
+    "startUpDelay",
+    "commonKaleidoscopeROI:forRect:userInfo:",
+    "removeComponent:",
+    NULL,
+    "_referenceData",
+    "labelAtIndex:",
+    "fontNamed:hasTraits:",
+    "vertBlur1ROI:destRect:",
+    "_addConversionsFromTypes:",
+    NULL,
+    "loadCache",
+    "performActionFlashForItemAtIndex:",
+    "restoreDefaults",
+    "_lastSnapshot",
+    "allowableCharacters",
+    "_URLStringForString:",
+    "initialized",
+    "accessibilityTextLinkAtIndex:",
+    "releaseIndex:",
+    "insertKnownAbsentItem:",
+    "URLResourceDidFinishLoading:",
+    "languageModel",
+    "savesAppearanceStream",
+    "propertyIsComposite:",
+    "allowsColumnResizing",
+    "insertItemWithTitle:action:keyEquivalent:atIndex:",
+    "setCachedSeparately:",
+    "appearanceStyle",
+    "shouldCloseWindowController:",
+    "_validateShadowEffect:",
+    "imageWithCVImageBuffer:",
+    "preloadHint",
+    "setKeyEquivalentFont:",
+    "operationShouldBeLaunchedNow:",
+    "centerPointForZoomAndRotation",
+    "setMigrationDebugLevel:",
+    NULL,
+    "_drawKeyboardUIIndicationForView:debuggingIndex:",
+    "addNextButton",
+    "cancelUserAttentionRequest:",
+    "_animateSheet",
+    "_flattenProperties",
+    "fileSystemChanged",
+    "_setContextMenuEvent:",
+    "setTextMargins:",
+    "rasterize:",
+    NULL,
+    "setLabel:",
+    "fk",
+    "XMLStringWithOptions:",
+    "draw",
+    "directParameter",
+    NULL,
+    "_shouldHavePeriodicEventsForPoint:",
+    "timeLineActive:",
+    "unvalidatedPath",
+    NULL,
+    "_setChangedObjectIDs:",
+    "_releaseRowHeightStorageIfNecessary",
+    "putRequestWithSession:data:URI:includeRangeHeader:rangeStart:rangeEnd:token:",
+    "endUpdatePixels",
+    "_standardFrame",
+    "scaleMeasurements:byFactor:",
+    "dataTypeDoesNotExist:forKey:inCurrentStruct:inCustomStruct:",
+    NULL,
+    NULL,
+    "pixelFormatIh",
+    "allDirectoriesServer",
+    "_isInConfigurationMode",
+    NULL,
+    "locationInView:hitCellAtIndex:",
+    "__oldnf_addInternalRedToTextAttributesOfNegativeValues",
+    NULL,
+    "getColor:location:atIndex:",
+    "_autoLockValue",
+    "movieController",
+    "arrayByExcludingObjectsInArray:",
+    "registerNodeWithClass:identifier:isPrivate:",
+    "progressIndicator",
+    "card",
+    "URLProtocol:wasRedirectedToRequest:redirectResponse:",
+    "keyPathIfAffectedByValueForKey:exactMatch:",
+    "_applyValues:context:",
+    "useCredential:forAuthenticationChallenge:",
+    "isBycopy",
+    "addServiceProvider:",
+    "firstTextView",
+    "setMaxConcurrentOperationCount:",
+    "_presentableFileNameFromURL:",
+    "positionDidChange",
+    NULL,
+    "currentEntityMapping",
+    "_cachedValuesAreValid",
+    "setOriginalImageIsInvalid:",
+    "initWithData:",
+    "stopListeningForCameraEvents",
+    "controlMenu:",
+    "defaultPrinter",
+    "burn:into:opacity:",
+    "coversAllCharactersInString:",
+    "printInfo",
+    "pathControl:shouldDragPathComponentCell:withPasteboard:",
+    "attributes",
+    "decodeBytesForKey:returnedLength:",
+    "_barberImage:",
+    "_showsAllDrawing",
+    "compareWithRecordValue:",
+    NULL,
+    "_nextInputManagerInScript:",
+    "detachDrawingThread:toTarget:withObject:",
+    "isDeletableFileAtPath:",
+    "valueForUndefinedKey:",
+    "matchableResultsForString:inSingleProperty:",
+    "_deleteDigit",
+    "abManagedObjectContextDidSave:",
+    "isSetOnMouseEntered",
+    "drawImageWithFrame:inView:",
+    NULL,
+    "initOrTestWithTests:",
+    "initWithFrame:textContainer:",
+    "applicationShouldTerminateAfterLastWindowClosed:",
+    "topLevelNode",
+    "blend:over:blendKind:",
+    "_applyTargetConfiguration:",
+    "dynamicToolTipRectAtPoint:",
+    "setLastCheckDate:",
+    "_configureImage:",
+    "localizedRecoveryOptions",
+    "eventType",
+    "displayIfNeededIgnoringOpacity",
+    "mipmapCache:didImportMipmapItem:withUID:",
+    "_parentWindowForSheet",
+    "_performSanityCheckForMapping:fromSourceModel:toDestinationModel:",
+    "pictureDirPath",
+    "setPath:",
+    "appendJoinClauseToSQL",
+    "genericColorSpace",
+    "replaceObjectsAtIndexes:withObjects:",
+    "writeToURL:withOptions:",
+    "irisClosed",
+    "_noteNote4:",
+    "_failsafeAllocAuxiliaryStorage",
+    "_preparedPrintPanel",
+    "inputStreamWithFileAtPath:",
+    "_numberOfItems",
+    "prepareComparisonPredicate:",
+    "_cancelAnyScheduledAutoCollapse",
+    "_invalidateTitleCellWidth",
+    "removeObjectForDatabaseKey:",
+    "nodeListWithNodes:count:",
+    "allowsEditingTextAttributes",
+    "changeFontTrait:",
+    "setLayoutValid:",
+    NULL,
+    NULL,
+    "_shouldHaveResizeCursorAtPoint:",
+    "_minimumVerticalPopupPadding",
+    "initMultiStatusRequestWithSession:method:path:",
+    "nameProperties",
+    "_ensureLayoutCompleteToEndOfCharacterRange:",
+    "initAddressWithString:",
+    "_setRangeContainerClassDescription:",
+    "_changeShadowOpacity:",
+    "_inTSMPreProcess",
+    "canPopulateWithPlaceholders",
+    "screenFont",
+    "didTurnIntoFault",
+    NULL,
+    "validateAndCommitValueInEditor:editingIsEnding:errorUserInterfaceHandled:",
+    "_overflowHeaderCellPrototype",
+    "_isSelected",
+    "firstWeekday",
+    "dataFromPropertyList:format:errorDescription:",
+    NULL,
+    "_generateCompositedBackground",
+    "_forceDisplayToBeCorrectForViewsWithUnlaidGlyphs",
+    "doPerform",
+    NULL,
+    "ISOLanguageCodes",
+    "column",
+    NULL,
+    "_windowDidBecomeVisible:",
+    "modificationTime",
+    "inverseForRelationshipKey:",
+    "_isaForAutonotifying",
+    "imageTitle",
+    NULL,
+    "_resolveNamespaceForPrefix:",
+    "_classDescriptionsFromPropertyListDeclarations:suiteName:",
+    "operationWillAbort",
+    NULL,
+    "_applicableLabelIsEnabledAtIndex:forDisplayMode:isInPalette:",
+    NULL,
+    "unlockObjectStore",
+    "stroke",
+    "encodeReturnValue:",
+    "recordsMatchingSearchElement:takeLock:",
+    "_initWithBitmapImageRep:",
+    "_newParagraphForElement:tag:allowEmpty:suppressTrailingSpace:",
+    "getCString:",
+    "CGLContextObj",
+    "messagingAddresses",
+    "zoomOutX",
+    NULL,
+    "_modalSession:sendEvent:",
+    "createNewDatabaseImplForInstance:withUniqueId:addressBook:",
+    "_setBool:ifNoAttributeForKey:",
+    "_dismissMenuBecauseWindowBecameMain:",
+    "_scrollViewForColumnsDidTrackHorizontalScroller:",
+    "creationDateYearless",
+    "translateOriginToPoint:",
+    "isReady",
+    "_analogClockTrackMouse:inRect:ofView:untilMouseUp:",
+    "previewView:didShowPreviewForURL:",
+    "_loadXSLT",
+    "memberOfAppleUseCoreUI:",
+    "openInSeparateWindow:model:mainWindow:",
+    "printOperationWithView:printInfo:",
+    "_addEntityMapping:",
+    "imageWithBaseName:state:backgroundStyle:effects:",
+    "synchronizeBackBuffer",
+    "dayOfMonth",
+    "readLength",
+    "decimalNumberBySubtracting:withBehavior:",
+    "trustPopupSelected:",
+    NULL,
+    "doRemoveRecordsAndCreateLogsWithAddressBook:",
+    "loadMetadata:",
+    "resetOrderingWithCount:",
+    "setProxyAuthFromKeychainForRequest:proxyConfig:",
+    "_loadDataIfNotYetLoaded",
+    "addPlayButton",
+    "hyphenationFactorForGlyphAtIndex:",
+    "draggedImage",
+    "_servicesMenuIsVisible",
+    "launchABDForSyncing",
+    "objectsForKeys:notFoundMarker:",
+    "loadKnobImage",
+    "joinWithSourceAttributeName:destinationAttributeName:",
+    "_buttonBezelColors",
+    "initWithLocaleIdentifier:",
+    "updateNextPreviousState",
+    "setFilter:",
+    "_setEDotMacEmailSigningUsage:",
+    "loadPlugInsInLibrary:withExtensions:",
+    "hasCompatibility:",
+    "setCanBeVisibleOnAllSpaces:",
+    "textShadowForButtonState:",
+    "termPointersForResolutionData:",
+    "objectClass",
+    NULL,
+    "glyphGeneratorForEncoding:language:font:makeSharable:",
+    "_endEditingIfFirstResponderIsASubview",
+    "initWithRange:",
+    "decodeReleasedProxies:",
+    "_parentWindow",
+    "noteDirectoryResultsChanged",
+    "_dockItem",
+    "_deallocData",
+    "printOperationDidRun:success:contextInfo:",
+    "modelLayer",
+    "_argumentDescriptionsFromUnnamedImplDeclaration:presoDeclaration:namedImplDeclarations:presoDeclarations:suiteName:commandName:",
+    "viewTitle",
+    "_setScrollerNeedsDisplay:",
+    NULL,
+    "nestingLevel",
+    "setNeedsDisplayInRect:",
+    NULL,
+    "areAllContextsOutputTraced",
+    "_handleSelectionConfirmed",
+    "_filterNodeList:ofParentNode:",
+    "writeFilterXML:toURL:",
+    "byteSize",
+    "iconForSize:",
+    "removeExpandedNode:",
+    ".cxx_construct",
+    "_surfaceWillGoAway",
+    "tableView:objectValueForTableColumn:row:",
+    "willPushRenderState:",
+    "_display",
+    "type",
+    "_drawHeaderCell:withFrame:withStateFromColumn:",
+    "isPortableUser",
+    "setFontMenu:",
+    "outlineview",
+    "setSearchButtonCell:",
+    "prepareForDragOperation:",
+    "_basicAttributesRequestPostHandler:",
+    "_createAndShowProgressPanelIfAppropriate:",
+    "_columnWidthAutoSaveNameWithPrefix",
+    "_configureFormatEditor",
+    "_nextUnusedItems:andValues:forRow:forRowType:",
+    "_updateMatrix",
+    "setOutline:",
+    "_editableStateWithMode:",
+    "_sharedDocumentControllerNoCreate",
+    "saveAllDocuments:",
+    "setAlternateTitle:",
+    NULL,
+    "receiveStringWithTimeOut:",
+    "cleanAperture",
+    "addListenerIfAbsent:",
+    "convertPoint:toLayer:",
+    NULL,
+    NULL,
+    NULL,
+    "angledROI:forRect:userInfo:",
+    "_canChangeVisibilityTo:",
+    "_value",
+    "returnResult:exception:sequence:imports:",
+    "initAndTestWithTests:",
+    "indexOfLastImportGroup",
+    "imageRepClassForPasteboardType:",
+    NULL,
+    "_localizedPropertyNameForProperty:entity:",
+    "getAXUIElementRef",
+    "mouseTracker:didStopTrackingWithEvent:",
+    "initWithCFNetService:",
+    "managedObjectIDForURIRepresentation:",
+    "abViewDoubleClicked:",
+    "refrROI:forRect:",
+    "_prepareFindIndicatorForRange:",
+    "indexOfTabViewItemWithIdentifier:",
+    "_loadSuitesForAlreadyLoadedBundles",
+    "new",
+    "shouldShowPreviewColumn:",
+    "_isDeviceColorSpace",
+    "_disablePosting",
+    "keyEnumerator",
+    "_setupSearchParts",
+    "enableFlushWindow",
+    "similar:originalPassword:",
+    "_setRFC822Name:",
+    "setCurrentAppleEventAndReplyEventWithSuspensionID:",
+    "_predicateIsNoneAreTrue:",
+    "mapROI:forRect:userInfo:",
+    "_nextResponderForEvent:",
+    "recipeDiffers:from:",
+    "setContentAspectRatio:",
+    "accessibilityIsSplittersAttributeSettable",
+    "_coreProperties",
+    "EPSRepresentation",
+    "_pauseLayerTreeRenderingForUserSwitchOut:",
+    "_finishWritingWithOverwriteRetryingInfo:afterSuccess:",
+    "setColumnResizingType:",
+    "initWithBitmapData:bytesPerRow:size:format:colorSpace:",
+    "inputBias",
+    "decodePropertyList",
+    "_updateFocusRing",
+    NULL,
+    "updateFreeFormLayout",
+    "actionForControlCharacterAtIndex:",
+    NULL,
+    "updateDateRelatedSmartGroups",
+    "lightweightHandleChildChanged:parent:property:",
+    "_parseFile",
+    "_hiliteWindow:fromWindow:",
+    "_focusFromView:withContext:",
+    NULL,
+    "uri",
+    "toggleAutomaticQuoteSubstitution:",
+    "lastComponentOfFileName",
+    "builtInLabelsForProperty:",
+    "_chooseIssuer",
+    "apply:to:options:",
+    "_setPassword:",
+    "defaultParagraphStyle",
+    "_setSuppressingChangeNotifications:",
+    "setAllowSubrowSelection:",
+    "_toolbarIsInTransition",
+    "trust",
+    "setContentMaxSize:",
+    "highlightColorWithFrame:inView:",
+    "needLoading",
+    "sendPort",
+    "updateChomaticityXAndY",
+    "representativeIcon",
+    "initWithFileProperty:dataSource:ascending:",
+    "_drawRepresentation:inRect:withScaling:",
+    "selectedMenuItemTextColor",
+    "setLeaf:",
+    "_originPointInRuler",
+    "attributesFromComposition:",
+    "newGroup",
+    NULL,
+    "showFeaturesPanel:",
+    "sharedImageEditPanel",
+    "resetProfilingData",
+    "_buildAndAssignNewContentDictionary",
+    "setActivated:sender:",
+    "_recursiveLostHiddenAncestor",
+    "ignorableStatusCode:",
+    "suiteDescriptions",
+    "createCopy:filterArray:",
+    "trackMouse:",
+    "originalDontResolveDataRefsFlag",
+    "bestMipmapIndexToValidateForSize:",
+    "didChange",
+    "_commonInitWithColorArray:colorSpace:padStart:padEnd:",
+    "hasCredentials",
+    "_showOpenHandCursor:",
+    "accessibilityEnabledAttribute",
+    "_knobFrame",
+    "createMDQueryNodeRefIfNecessary",
+    "writeFont:",
+    "pixelFormatCMYKf",
+    "_bodyStreamRead:bufferLength:error:atEOF:",
+    "saveDocumentToPath:",
+    "_selectIssuerBasedOnPublicKeyHash",
+    "setObjectValuePreservingEntitiesForNode:string:",
+    "setVerticallyResizable:",
+    "updateProgressBar:",
+    "_shouldShowDocumentIcon",
+    "_web_errorWithDomain:code:URL:",
+    "propertiesWithStatusCode:",
+    "minusSet:",
+    "CGRect",
+    "reloadGroupsMaintainingSelection:",
+    "bindThumbnail:toLocation:",
+    "setAttributeValue:",
+    "deleteMeansRemoveSubscription:",
+    "_concealBinding:",
+    "PMPrintSession",
+    "_toolbarContentsChanged:",
+    "layerDidBecomeVisible:",
+    "sourceNode",
+    "copySerializationInto:",
+    "cancelTracking",
+    "dataWithBytesNoCopy:length:freeWhenDone:",
+    "expectSeparatorEqualTo:",
+    "accessibilityIsChildFocusable:",
+    "truncatesLastVisibleLine",
+    "currentThread",
+    "enclosingClipView",
+    "lineBreakBeforeIndex:withinRange:",
+    "initWithDelegate:",
+    "triggerSearchAndSelectBestMatch:",
+    "_setURL:forPersistentStore:withCoordinator:",
+    "editedColumn",
+    NULL,
+    "_deletePBUffer",
+    "isGrabbing",
+    "clearAnnotation",
+    "_dataCellForTableColumn:row:",
+    "tokenField:tooltipStringForRepresentedObject:",
+    "reviewUnsavedDocumentsWithAlertTitle:cancellable:delegate:didReviewAllSelector:contextInfo:",
+    "mergeROI:destRect:",
+    "timeMachineDelegate",
+    "setUsesWeakReadAndWriteBarriers:",
+    "inSafeMode",
+    "itemAdded:",
+    "setVerticalAlignment:",
+    "application:willPresentError:",
+    "_setWindowWantsSquareToolbarSelectionHighlight:",
+    "migrationDebugLevel",
+    "_web_stringForKey:",
+    "_highlightColor",
+    "setCacheFragHandler:",
+    "completionWindow",
+    "setLocalURL:",
+    "initWithPrintInfo:",
+    "_rangeByEstimatingAttributeFixingForRange:",
+    "initWithPerson:propertyPath:oldValue:inputController:",
+    "_updateText:",
+    "_removeObjects:objectHandler:",
+    "setImageScaling:forSegment:",
+    "_locality",
+    NULL,
+    "_mergeLayoutHoles",
+    "typeOfProperty:forRecord:",
+    "setMemoryCapacity:",
+    "importVCards",
+    "initWithTarget:invocation:",
+    "_enumeratedEnabledBindings:",
+    "_activateTimeLineFromLegend:",
+    NULL,
+    "allocateNewCell",
+    "_observeIconOfChild:",
+    "initWithSuiteName:commandName:dictionary:",
+    "groupsController:outlineView:willDisplayCell:forTableColumn:item:",
+    "zoomOut:",
+    "nts_ImportAddressBookFromMetaKitIfNeeded",
+    "_setState:ofCell:",
+    "setCachedSQLiteStatement:",
+    "pickerView",
+    "removeAllResources",
+    "_AppleUseCoreUI",
+    "ISS_stringByXMLQuoting",
+    "_copyDetailsFromBinder:",
+    "_commonInitFrame:styleMask:backing:defer:",
+    "accessibilityPopUpMenuParent:",
+    "_setDirectoryPath:",
+    NULL,
+    "setSourcePosition:",
+    NULL,
+    NULL,
+    "flushClassKeyBindings",
+    "_createWindowOpaqueShape",
+    "findParentOfWindowGRL:",
+    "ownerCard",
+    "operationNotAllowedCursor",
+    "customOutputPorts",
+    "setEntities:",
+    "itemAtRow:",
+    "areEventsTraced",
+    "initialLoadItemAtIndex:",
+    "canApplyValueTransformer:toBinding:",
+    NULL,
+    "_eventWithEventRefInternal:",
+    "countOfVisibleCellsOnEachSide",
+    "forceClipViewUpdate",
+    "insertText:replacementRange:validFlags:",
+    "appendLimitClauseToSQL:",
+    "activeColumnIdentifier",
+    "measurements:fromResolutionData:",
+    "initGetPropsWithSession:URI:properties:",
+    "CIColorWithColorSpace:",
+    "_dragShouldBeginFromMouseDown:",
+    "_doSetParentWindow:",
+    "pictureTakerSessionDidEndWithCode:",
+    "doSpecialSelectionStuffForRow:extendingSelection:",
+    "insertObject:atArrangedObjectIndexPath:",
+    "backupDirectory",
+    "setCenterControls:",
+    NULL,
+    "_theMap",
+    "getLineFragmentRect:usedRect:forParagraphSeparatorGlyphRange:atProposedOrigin:",
+    "_doCallback",
+    "drawGizmo",
+    NULL,
+    "_highlightedLayer",
+    "allowsDuplicatesInToolbar",
+    "_nonAutomaticObservingKeys",
+    "gradientBorderWidth",
+    "initWithEvent:replyEvent:",
+    "initHeadWithSession:URI:",
+    "_allocImageForRepresentationInstance:forCell:",
+    "_requiredCarbonCatalogInfoMask",
+    "_web_carbonPathForPath_nowarn:",
+    "_canMoveItemAsSource:",
+    "openPersonInSeparateWindow:",
+    "initWithParent:child:",
+    "tokenFieldCell:styleForRepresentedObject:",
+    "maxAnimationFrameRate",
+    "_createUserKeyPair:privKey:keychain:algorithm:size:userName:accessRef:inputParms:",
+    "altModifySelection:",
+    "drawParts",
+    "enclosingMenuItem",
+    "_buttonImageSource",
+    "__createProxyPortWithNode:portKey:forKey:withUserInfo:",
+    "loadedCellAtRow:column:",
+    "initWithUID:",
+    "_addHeaders:toRequest:",
+    "directoryAtIndex:",
+    "hasSelectedColor",
+    "releaseAllResources",
+    "_setOriginalSnapshot:",
+    "finalizeOperation",
+    "transformation",
+    "capsuleRectForDirection",
+    "mainDocumentURL",
+    "addEntries:fromSession:",
+    "canBeVisibleOnAllSpaces",
+    "representedFilename",
+    "bottomMargin",
+    "_scriptingCanInsertBeforeOrReplaceObjectsAtIndexes:inValueForKey:",
+    "updateCellSize",
+    "initWithParent:index:",
+    "partWithCode:parent:",
+    "willPerformMigrationWithManager:",
+    "_bottomContentBox",
+    "nextObject",
+    "mutableChildNodes",
+    "loadPlugIn",
+    "conformsTo:",
+    "_unhideHODWindow",
+    "_indexInAppliedGridForPoint:",
+    "_setShowControls:",
+    "_connectGraphUnitsForVideoOutputConnection:error:",
+    "_cfPad:length:padIndex:",
+    "format",
+    "_setSheet:",
+    "setIsResizable:",
+    "_createCachedImage:",
+    "setAccessoryView:",
+    "_processLibXML2ElementNode:tag:",
+    "__clearPreLiveColumnWidths",
+    "setReadOnly",
+    "maximumLength",
+    "drawWithRect:options:attributes:",
+    "selectedPagesContainsPage:",
+    "accessoryViewContainerContentFrameDidChange:",
+    "_scriptStringWithPropertyAccess:",
+    "_isContainedInMenu",
+    "_setTextFieldStringValue:",
+    "_textListsForListNumber:level:",
+    "hideItem:",
+    "_setHighlighted:pieces:forItemAtIndex:displayNow:",
+    "revealWithFinder:",
+    "setShowControls:",
+    "_deltaForResizingTextField:",
+    NULL,
+    "_shouldShowParentNode:",
+    "loadCGImageNamed:fromBundle:into:",
+    "_coveredCharSet",
+    "portNumber",
+    "_heartBeatBufferWindow",
+    "glyphRangeForCharacterRange:actualCharacterRange:",
+    "_setEndSubelementFromDescriptor:",
+    "marker",
+    NULL,
+    "startEditingWithEvent:text:",
+    "findString:selectedRange:options:",
+    "toolTip",
+    "indexOfAllGroup",
+    "_listClass",
+    "specifiedRect",
+    "fetchTableNames",
+    "commitComposition",
+    "computeGroupIndexTransformations",
+    "nameForIndex:",
+    "replaceTextContainer:",
+    "cellSelectionStateWillChange",
+    "_drawInsertionPointInRect:color:",
+    "postNotificationName:object:",
+    "relativeString",
+    "_objectIndexForSubelementIdentifier:subelementIndex:fromIndexes:",
+    "_makePreviousCellKey",
+    NULL,
+    "_drawLiveResizeHighlightWithFrame:inView:",
+    NULL,
+    "_createImage:::",
+    "preloadMipmapsWithQuality:",
+    NULL,
+    "moveLeftAndModifySelection:",
+    "_adjustNeedsDisplayRegionForNewFrame:",
+    "hotspotCount",
+    "allFrameworks",
+    "outlineView:shouldTrackCell:forTableColumn:item:",
+    NULL,
+    "adjustDocumentSize",
+    "small:",
+    "chatWithPerson:",
+    "draggingEnded:",
+    "loadDictionaries:",
+    "numberOfVisibleRows",
+    "_undoRedoAttributedSubstringFromRange:",
+    NULL,
+    "_computeHeaders",
+    "focusedImageIndex",
+    "simpleACLBodyForReadPrincipals:writePrincipals:",
+    "nameFromPath:extra:",
+    "toolbar:newItemForItemIdentifier:",
+    "valueForProperty:atRow:tableName:recordUniqueId:",
+    "initWithX:",
+    "abStandardizedPhoneNumber",
+    "blur:pass:",
+    "_selectFirstSubfield",
+    NULL,
+    "_accessibilityShowMenu:withProxy:",
+    "_taskRedisplay",
+    "unbindTextureFromContext:textureUnit:savedState:",
+    "_doOrderWindow:relativeTo:findKey:forCounter:force:isModal:",
+    "nearestPageToPoint:",
+    "_searchInGoogle:",
+    "getNodeAsInfoNode:",
+    "_setCurrentBrowsingNodePath:makeHistory:notify:",
+    "_maxXTitlebarDecorationMinWidth",
+    "optionsAttributes",
+    "moveFirst:",
+    "_lockQuickDrawPort",
+    "stopAnimation:",
+    "initWithQuickTimeMovie:disposeWhenDone:error:",
+    "readPrintInfo",
+    NULL,
+    "tokenField:displayStringForRepresentedObject:",
+    "setAnimationBlockingMode:",
+    "iconView:typeSelectStringForIndex:",
+    "drawInsertionPointInRect:color:turnedOn:",
+    "_setAlternateImage:",
+    "_selectPreviousSubfield",
+    "enumeratorWithMapTable:",
+    NULL,
+    "fileExistsAtURL:",
+    "setRaisesForNotApplicableKeys:",
+    "cssValueType",
+    "_animatedScrollingPreferencesChanged:",
+    "accessibilityHelperForToolbarItemViewer:",
+    "initWithElement:withParent:",
+    "bottomBorderColor",
+    "moveIndex:toIndex:",
+    "_startingWindowForSendAction:",
+    "setLong:forKey:",
+    "initializeDataFileInfo:",
+    "replaceSublayer:with:",
+    "drawRoundedRect:radius:lineWidth:cacheIt:",
+    "_hiddenViewsTint",
+    "mapMember:originalKey:value:",
+    "attribute:atIndex:effectiveRange:",
+    "accessibilityZoomButtonAttribute",
+    "vendor2",
+    "_openURLs:withAppPath:options:additionalEventParamDescriptor:launchIdentifiers:",
+    "methodReturnType",
+    "_parsePantoneLikeList:fileName:",
+    "_spanClassForAttributes:inParagraphClass:spanClass:",
+    "render:toBitmap:rowBytes:bounds:format:colorSpace:",
+    "_accessibilityWindowPointForShowMenuWithProxy:",
+    "_htmlFromTidyNode:tidyDoc:appendingToString:",
+    "prepareInsertStatementWithCorrelation:",
+    "_compareMultiNoLabelArrayWithRecordValue:",
+    "imageWithPNGFile:",
+    "_writeSelectionToPasteboard:fromPoint:",
+    "_zoomToFitRect:",
+    "_extraWidthForCellHeight:",
+    "isGrammarCheckingEnabled",
+    "accessibilityIsSelectedColumnsAttributeSettable",
+    "valueForKeyPath:",
+    "_setNeedsDisplayInPrimarySortColumnsIfNecessary",
+    "doDrawInContext:",
+    "_noVerticalAutosizing",
+    "_markViewedForPeople:",
+    "willChangeValueForKey:withSetMutation:usingObjects:",
+    "_fileURLValue",
+    "goToLastPage:",
+    "setPredicateOperator:",
+    "setCopyright:",
+    "newChildWithKey:",
+    "viewWillBecomeInActive",
+    "selectedMediaObjects",
+    "registeredDraggedTypes",
+    "cacheForSize:",
+    "invert",
+    "initWithInt64:sqlType:",
+    "setupTooltipViewForPoint:tooltipBounds:",
+    "_scriptingNullDescriptor",
+    "_setRefreshesAllModelKeys:",
+    "nextKey",
+    "_setDeclaredKeys:",
+    "glImageInfoInContext:owner:createIfNeeded:",
+    "filterEvents:",
+    "resetDirectoryResultsSubrows",
+    "_doAttachDrawer",
+    "configureForTreatsDirectoryAliasesAsDirectories:",
+    "initWithTexture:size:options:",
+    "normalizedRect:",
+    "_changeIconViewIconSize:",
+    "_scriptingValueForKey:",
+    "_getFSRefForServiceName:",
+    NULL,
+    "setTarget:",
+    "inlinePreview:frameForURL:",
+    "isCompatibleWithSource:sourceMD5:",
+    "_setDrawerEdge:",
+    "moveToEndOfLine:",
+    "initializeWidgetStructureAtX:y:forResolutionData:",
+    "updateFilterInfo",
+    "minFrameSizeForMinContentSize:styleMask:",
+    "_graphiteAlternatingRowColor",
+    "colorForControlTint:",
+    "doEditOperation:",
+    "addPopupView:",
+    "calculateFigure:center:",
+    "showcaseMenuItem:itemIndex:",
+    "performMiniaturize:",
+    "_highlightLine:withColor:",
+    "_resizeSegmentsForCellFrame:",
+    "lineSpacing",
+    "_initWithGraphicsPort:flipped:",
+    "_pasteboardDictionaryForPeople:",
+    "shouldShopShowcaseForTransitionToGRL:",
+    "lastComponent:",
+    "_initSaveMode",
+    "_buildAndRunGraph",
+    "textView:completions:forPartialWordRange:indexOfSelectedItem:",
+    "XMLData",
+    "_normalizedMouseLocationWithOptionalEvent:",
+    "associatePopup:withProperty:",
+    "convolutionInitROI:destRect:userInfo:",
+    "_cancelCurrentToolTipWindowImmediately:",
+    "_web_scriptIfJavaScriptURL",
+    NULL,
+    "_rotationForGlyphAtIndex:effectiveRange:",
+    "drawBack:",
+    "setTearOffMenuRepresentation:",
+    "sharedFontPanel",
+    "_setAttributesNoCopy:pageFormat:orFlattenedData:printSettings:orFlattenedData:",
+    "imageFlow:itemAtIndex:",
+    "detailsDisplayed",
+    "_runBlocking",
+    "revert:",
+    "baselineOffsetInLayoutManager:glyphIndex:",
+    "visibleStringRange",
+    "titlebarRectForBounds:",
+    NULL,
+    NULL,
+    "editingWasAborted:",
+    "initWithURL:error:",
+    "valueInParagraphsAtIndex:",
+    "setPendingAttributes:",
+    "errorInSetImageFromPath",
+    "_updateContainerReferenceCounterForItems:direction:",
+    "_errorDuplicateColor:",
+    NULL,
+    "initWithData:options:",
+    "setRuleThickness:",
+    "LDAPConfigChanged:",
+    "storeText:",
+    "expandFilter:",
+    "setSubentityID:",
+    "_clearFocusForView",
+    "updateFromPath:",
+    "_insertObject:atArrangedObjectIndex:objectHandler:",
+    "holeWithStart:len:",
+    "beginPictureTakerWithDelegate:didEndSelector:contextInfo:",
+    "_createSelectedRowEntriesArrayIncludingExpandable:includingUnexpandable:withCurrentExpandState:",
+    "widthForSegment:",
+    "tokenField:menuForRepresentedObject:",
+    "flatness",
+    "capitalizedLetterCharacterSet",
+    "removeItemViewerAtIndex:",
+    "rowSpan",
+    "leaveSlideshowFullScreenWithStartRect",
+    "addBinding:toController:withKeyPath:valueTransformer:options:",
+    "sqlTypeForExpressionConstantValue:",
+    "setFramesProvider:",
+    "_stopRearrangementObservingForSuppressedContentObjects",
+    NULL,
+    "instancesRespondTo:",
+    "elementWithName:stringValue:",
+    "selectionForWordAtPoint:",
+    "browser",
+    "_setDefaultTextAttributes",
+    "_determineDropIndexForDragInfo:",
+    "commandDescription",
+    "ctFontRef",
+    "pixelFormatRGBAh",
+    "_crosshairCursor",
+    "stopAutoscroll",
+    "setInertia:",
+    "_disposeObjects:count:notifyParent:",
+    "_isDocModal",
+    "isBezeled",
+    "_initWithCFURLRequest:",
+    "_findFirstValidKeyViewStartingFrom:inTabViewItem:",
+    "_typeString",
+    "_setFlags:",
+    "knownKeyValuesForObjectID:withContext:",
+    "readableTypes",
+    "initWithContentRect:styleMask:backing:defer:slideshowPanel:",
+    "authenticateName:withPassword:authOnly:",
+    "attributedStringValue",
+    "attributeName",
+    "newObjectIDForEntity:pk:",
+    "createImageDataForManager:withOptions:",
+    "_proxyNonGCFinalize",
+    "_drawTabViewItem:inRect:",
+    "subrows",
+    "initWithRegistryString:andObjectClass:",
+    "drawInView:",
+    "openRoot:",
+    "setAnnotationNeedsDisplay:padding:",
+    "isMPEG",
+    NULL,
+    "animationShouldStart:",
+    "_totalHeightOfTableView",
+    "_computeColorScaleIfNecessaryWithSize:",
+    "_processPendingUpdates:",
+    "applyToRequest:",
+    "_refreshOutputFileURL",
+    "replaceSubviewWith:",
+    "initWithFBENode:",
+    "dropOverCell",
+    "appendObjectClassDeclarationToAETEData:",
+    "_minWidth",
+    "_shouldHideSubtractButtonForSlice:",
+    NULL,
+    "saveCofigurationUsingName:",
+    "_buttonCellInitWithCoder:",
+    "_NSNibHelpStringForUIItem:binding:",
+    "executeRefreshRequest:withContext:",
+    "controlCharacterSet",
+    "_buildSlideShowIndexesArray",
+    "initWithResumeInformation:",
+    "_isLastMultiValue:",
+    "hidePalettes:",
+    "_wantsUserCancelledOperation",
+    "registerObject:withServicePath:",
+    "updateHelpResults:",
+    "_processNotifications:",
+    "_fileAttributesToWriteToURL:ofType:forSaveOperation:originalContentsURL:error:",
+    "timeForKeyFrame:controlType:",
+    "setResourceLocator:",
+    "_unaffixedMarkerForItemNumber:",
+    "zoomActualSize:",
+    "_changeMediaBrowserTypeTo:",
+    "lengthOfBytesUsingEncoding:",
+    "_updateTrackingLocation:",
+    "_childrenForNode:",
+    "_validateCachedVirtualScreen",
+    "_moveToNextBlock",
+    "_registerUndoForDeletedObjects:withDeletedChanges:",
+    "_neighbourhoodIndexesWithCacheSize:cellSize:",
+    "nts_Connect",
+    "sharedKeychainSavePanel",
+    NULL,
+    "drawHoverTarget",
+    "_setRemovalNeeded:",
+    "_viewDetaching:",
+    "setDefaultLineWidth:",
+    NULL,
+    "readToEndOfFileInBackgroundAndNotifyForModes:",
+    "internalSetScaleFactor:",
+    "buttonHeight",
+    "_setupIPAddresses:numIPAddresses:inCEGeneralNames:",
+    "nts_ClearTemporaryCache",
+    "setTimeZoneName:",
+    "backgroundColor",
+    "_replyToOpen:",
+    "_scriptingValueForSpecifier:",
+    "findNextOccuranceOfAttributeNamed:startingRange:",
+    "_usesATSTypesetter",
+    "_setIsEnabled:",
+    "addIndexLabel",
+    "setStatusMenu:",
+    "deadKeyState",
+    "wantsToDrawIconInDisplayMode:",
+    "authenticationList",
+    "HTMLFileWrapper",
+    "convertFont:toFace:",
+    "initWithObject:",
+    "canonicalLanguageIdentifierFromString:",
+    "addMaxLenToDictionaryRef:",
+    "observationCount",
+    "replaceCharactersInRange:withRTFD:",
+    "quality",
+    "_drawSourceListHighlightInRect:",
+    "_forgetObject:propagateToObjectStore:removeFromRegistry:",
+    "setSpellingState:range:",
+    "_synchronizeWindowTitles",
+    "setupTooltipView",
+    "_tryFileLock",
+    "resourceData",
+    NULL,
+    "accessibilityCharacterRangeForPosition:",
+    NULL,
+    "_drawThemeBezelBorder:inRect:",
+    "rectForBorderWidth",
+    "instancesRespondToSelector:",
+    "_setDrawingBackground:",
+    "actionHasEnded:sender:",
+    "addressBookDataFile",
+    "registerSnapshots:",
+    "keyEquivalent",
+    "_clockAndCalendarTakeDisplayedMonthFromTodaysDate",
+    "classDescription",
+    "exportedText:forFile:",
+    "sharedDragManager",
+    "_shiftRight:",
+    NULL,
+    "didPopRenderState:",
+    "_configureHistoryControl",
+    "_inBackgroundLayout",
+    "propertyTypesForRecordOfClass:",
+    "lockBeforeDate:",
+    "configurationPaletteIsRunning",
+    "portForPoint:inNode:bounds:",
+    NULL,
+    "_doImageDragUsingRows:event:pasteboard:source:slideBack:",
+    "rangesForUserTextChange",
+    "accessibilityFilenameAttribute",
+    "_beforeDrawRow:clipRect:",
+    "_displayLDAPServerSheetOrPanel",
+    "_initWithGraphicsPort:flipped:carbonOffscreen:",
+    "_contentRectIncludingToolbarAtHome",
+    "handlePathname:",
+    NULL,
+    "addLineEndingStylesToDictionaryRef:",
+    "subrowGroup",
+    "_setPlaceHolder",
+    "_configureSynchronousMode",
+    "cellAtRow:column:loaded:",
+    "attributeDescription",
+    "makeThumbnailTopPriority:",
+    NULL,
+    "_setUsesFastJavaBundleSetup:",
+    "_allowAnimated_setHidden:",
+    "keyForParameter:",
+    "volume",
+    "_setRowTypeToAddFromPlusButton:",
+    "_errorWithErrno:atPath:",
+    "setNoImage:",
+    "selectItemAtIndex:",
+    "_parseFonts",
+    "getLocalizedFormattedDisplayLabels:andLocalizedFormattedDisplayValues:",
+    "nullNode",
+    "_depopulateOpenRecentMenu:",
+    "entityDescription",
+    "fontWithDescriptor:textTransform:",
+    "internalForDomains:Categories:Objects:Manager:",
+    "setMovieControllerView:",
+    "addSuiteNamed:",
+    "synchronizeTableViewSelectionWithStringValue:",
+    "_doPrintFiles:withSettings:showPrintPanels:",
+    "defaultColorSpace",
+    "_cachedDisplayValue",
+    "setNeedsDisplayForNode:",
+    "_vCard30RepresentationOfRecords:",
+    "terminateResolutionData",
+    "setBackgroundLayoutEnabled:",
+    "preservesContentDuringLiveResize",
+    "portsForMode:",
+    NULL,
+    "_itemCanBeDraggedInTemporaryEditingModeFromPoint:",
+    "setCountryName:",
+    "stateKeysForIdentifier:",
+    "sharedFilterPanel",
+    "mainScreen",
+    "addChildWindow:ordered:",
+    "cellAtIndex:",
+    "refreshObjects:",
+    "setForeignKeySlot:int64:",
+    "usesLocalContextForIdentifier:",
+    "initWithProperties:quartzFilter:",
+    "initWithAttributeName:",
+    "helpAnchor",
+    "_sortDescriptors",
+    "_drawSelectionRingWithColor:width:forNode:bounds:",
+    "setupDrawingState:page:",
+    NULL,
+    "fire",
+    "orderFront:",
+    "_removeWindowFromCache:",
+    "_hasTitle",
+    "addPort:forMode:",
+    "_shieldingWindowLevel",
+    "objectForServicePath:app:doLaunch:limitDate:",
+    "_pwaDidUpdateNewPasswordField:",
+    "_scriptingIntegerWithDescriptor:",
+    "isPreview",
+    "_dealloc",
+    "setParamDescriptor:forKeyword:",
+    "_viewFromCompoundTypes:",
+    "redComponent",
+    "abDecodedUTF7",
+    "_writeDataForkData:resourceForkData:",
+    "addPropertiesAndTypes:forClass:withAddressBook:acquireLock:save:",
+    "_setKeyCellNeedsDisplay",
+    "initAddressWithData:",
+    "parseAlternativeName:",
+    NULL,
+    "convertSize:fromView:",
+    "_selectionStateChanged:",
+    "checkSpellingOfString:startingAt:language:wrap:inSpellDocumentWithTag:wordCount:",
+    NULL,
+    "_userCanEditTableColumn:row:",
+    "pushDelayedPerformWithTarget:selector:object:soon:",
+    NULL,
+    "_prepareToRunForSavePanel:withFilepath:",
+    "_enableChangeNotifications",
+    "_loadSearchKinds",
+    "CGBitsPerComponent",
+    "_createStatusItemControlInWindow:",
+    "setSearchState:",
+    "region",
+    "clickedOnLink:atIndex:",
+    "_setPasswordStrengthTitleString:",
+    "_web_backgroundRemoveLeftoverFiles:",
+    "stopGrabbing",
+    "accessibilitySubroleAttribute",
+    "makeSelectedPrimary:",
+    "moveToX:andY:",
+    "widgetInView:withButtonID:action:",
+    "_postRuleOptionChangedNotification",
+    "floatValue",
+    "_updateQueryString:",
+    "_removeTargetAnimation:start:",
+    "getAppleUseCoreUI",
+    "propertyTypesWithAddressBook:",
+    "deserializeNewString",
+    "_nodeResignsFirstResponder:",
+    "_scriptingCanSetValue:forSpecifier:",
+    "setAllowAliasing:",
+    "superviewFrameChanged:",
+    "_doLookupAnchor:inBooks:",
+    "_web_splitAtNonDateCommas_nowarn",
+    "selectedItemIdentifier",
+    NULL,
+    "speechRecognizer:didRecognizeCommand:",
+    "greySliderFrameChangedNotification:",
+    "addChildren:",
+    "conditionallySetsHidden",
+    "_parseKey:value:errorDescription:",
+    "setBeginTime:",
+    "removeImmediately:",
+    "isDeadKeyProcessingEnabled",
+    "_chooseSizeFromSlider:",
+    "setNextActions:forDocument:",
+    "fractionOfDistanceThroughGlyphForPoint:",
+    "_setCertificates:",
+    "whiteComponent",
+    "nts_AddRecordsOfClass:fromDictionaryRepresentations:recordsByUniqueId:",
+    "accessibilityTextLinks",
+    "_widthForStringRange:",
+    "sharedIndex",
+    "searchFrameInScreenCoordinates",
+    NULL,
+    "runModalForDirectory:file:types:relativeToWindow:",
+    "initWithProperty:label:key:value:searchPeople:searchSubscribed:comparison:",
+    "_editQueryButtonClick:",
+    "startGrabbingForReceiver:",
+    "_generateFindIndicator",
+    "_objectValue:forString:errorDescription:",
+    "attributeMappings",
+    "setMipmapSizes:",
+    "_setZoomValue:",
+    "setOnOpenGLContext:unit:fromBounds:withTarget:mipmappingLevels:matrix:",
+    "selectedIndexes",
+    "download:didReceiveDataOfLength:",
+    "accessibilityIsSharedCharacterRangeAttributeSettable",
+    "buttonImageNamePrefixForButtonState:",
+    "updateQueue:",
+    "_handleRecognitionDoneWithRecognitionResult:",
+    "glyphInfoWithCharacterIdentifier:collection:baseString:",
+    "performRenderTimeLayoutModifiers:",
+    "rollbackChanges",
+    NULL,
+    "readOnly",
+    "_setCanUseReorderResizeImageCache:",
+    "setShownAboveComboBox:",
+    "_preferAlternateContent",
+    "nts_hasUnsavedChanges",
+    "_doInsertMember:inMemberList:",
+    NULL,
+    "visualMovieBoxIsOpaque",
+    "dispose",
+    "statistics",
+    "positionsForCompositeSequence:numberOfGlyphs:pointArray:",
+    "fileHandleForWriting",
+    "_endTableRow",
+    "_innerTrackRect",
+    "smemapROI:forRect:",
+    "close",
+    "addTypesToArray:ofType:useExtension:useNewFileImporters:useAggressive:",
+    "_readSelectionFromState:toPoint:",
+    "_startInsertionOptimizationWithDragSource:",
+    "setOriginalDontInteractFlag:",
+    "forcePromise:",
+    "_setShadowStyle:",
+    "minusSign",
+    "libxml2Content",
+    "_realDoModalLoopForCarbonWindow:peek:",
+    "itemsCount",
+    "_controlInterspace",
+    "entryForProperty:withComparison:",
+    "dragImageForIndexes:withEvent:offset:",
+    "_setupIndexSheet",
+    "_setEnabledAttributesOnCell:",
+    "_dontSaveButtonTitle",
+    "recordClassFromUniqueId:",
+    "heightFieldFrom:radius:initial:constraint:",
+    "_layoutUpdated:",
+    "image:withOpacity:",
+    "_setKeyViewLoopNeedsRecalc:",
+    "_swapContextForCarbonDrawing:",
+    "mailRecentsCoreDataDatabaseFile",
+    "initForManagedObjectContext:",
+    "accessibilityBoundsForCharacterRange:",
+    "_unsetFlags:",
+    "_firstMatchingProperty:",
+    "_characterCannotBeRendered:",
+    "setNSImage:",
+    "addConnection:toRunLoop:forMode:",
+    "autoscrollWithLocalPoint:andSensitiveMargin:",
+    NULL,
+    "keepReorderingItems",
+    "_placeHelpWindowNear:",
+    "boundsDidDidChange:",
+    NULL,
+    "_embossedActiveForegroundTextColor",
+    "_ADKeySet",
+    "setAttributedStringForNotANumber:",
+    "_pullsDown",
+    "IKIPMakeDirectoriesInPath:mode:",
+    "_testPredicatesMatchRecordInStore",
+    "searchPeople",
+    "takePicture",
+    "subgroups",
+    NULL,
+    "_validateValue:forKeyPath:ofObjectAtIndex:error:",
+    NULL,
+    "setAutoresizesSubviews:",
+    "valueInCharactersAtIndex:",
+    "maximumCacheSize",
+    "_autoCreateBinderForObject:withController:",
+    "_objectMatchesFetchPredicate:",
+    "initLockWithSession:path:",
+    "_keyForLocalizedKey:",
+    "windowShouldClose:",
+    "initTextCell:",
+    "abortOperation",
+    "_switchTabViewItem:oldView:withTabViewItem:newView:initialFirstResponder:lastKeyView:",
+    "_adjustWindowToScreen",
+    "row",
+    NULL,
+    "isProxy",
+    "containsAmbiguousPaths:inCategory:replacingNode:subtreeWith:",
+    "_enteredFullscreen",
+    "_inputWhiteParams",
+    "splitCells",
+    "_animationIdler:",
+    "accessibilityOrientationAttribute",
+    "_sendFileSystemChangedNotificationForSavePanelInfo:",
+    "toggleIsExpanded:",
+    "setSmartInsertDeleteEnabled:",
+    "_dateByTranslatingLongDateTimeDescriptor:toType:inSuite:",
+    "fontDescriptorWithFamily:",
+    "setRowsPerScreen:",
+    "serverName",
+    "initWithAffectedRange:layoutManager:undoManager:",
+    "_avgForKeyPath:",
+    "_finalize_QCCache",
+    "dealloc",
+    "CI_arrayWithAffineTransform:",
+    "setUsesSignificantDigits:",
+    "CA_attributes",
+    "editingStringForObjectValue:",
+    "getAppearancesFromDictionary:ofType:",
+    "thousandSeparator",
+    "_decreaseContainerReferenceCounter",
+    "spoolPath",
+    "imageWithRenderer:userData:renderSize:renderContext:options:",
+    "_specialPurposeType",
+    "autoupdatingCurrentCalendar",
+    "setHasHorizontalScroller:",
+    "_createSliceDropSeparator",
+    "_showCertButton",
+    "collapseItem:collapseChildren:",
+    "_setupOpenGLContext",
+    "_setKeychainName:",
+    NULL,
+    "_setZoomFactor:",
+    "_setQCView:",
+    "closeWidgetInView:withButtonID:action:",
+    "defaultNeutralTemperature",
+    "previousText",
+    "_handleCoreEvent:withReplyEvent:",
+    "_boundsForCellFrame:",
+    "removeOldestIcon",
+    "_addTypeParentsAndType:toSet:",
+    "dmCreateWithSession:data:props:URI:",
+    "_setupKernelStandardMode:",
+    "setObjectForCurrentRecognition:",
+    "occurrence",
+    "treatNilValuesLikeEmptyCollections",
+    "_getDVVideoInfo:fromFigSampleBuffer:",
+    "_setNeedsDisplayForDropCandidateRow:operation:mask:",
+    "filesystemItemMoveOperationWithSourcePath:destinationPath:",
+    "_changeDrawerFirstResponder",
+    "parseSingleValue",
+    "reconcileToSuiteRegistry:suiteName:className:",
+    "_glyphHoleDescription",
+    "_noteToolbarSizeModeChanged",
+    "_referenceArray",
+    "setPrimitiveSortingFirstName:",
+    "_previousNextTab:loop:",
+    NULL,
+    "_turnOffVerticalScroller",
+    "reloadContext",
+    "setItemType:",
+    "_message:",
+    "removeItemWithIdentifier:",
+    "segmentedBufferLength",
+    "doButtonHit:",
+    "_setTextColorInObject:mode:compareDirectly:toTextColor:",
+    "_fixUpDatePickerElementFlags",
+    "_setUserRFC822Name:",
+    NULL,
+    "_smallEncodingGlyphIndexForCharacterIndex:startOfRange:okToFillHoles:considerNulls:",
+    "setUsesGroupingSeparator:",
+    NULL,
+    "openCategoryFile:",
+    "_scriptingTextWithDescriptor:",
+    "compact",
+    "_setFrameAutosaveName:changeFrame:",
+    "loadDisplayBundle:",
+    "inputBottomLineParamsAtIndexes:",
+    "relationshipDescription",
+    "underline:",
+    "initWithTextureSize:textHeight:",
+    "_iChatSigningUsage",
+    NULL,
+    "convertRectFromDocumentToView:",
+    "set:containsEntity:",
+    "RTF",
+    "doConvolutionPass:weights:sums:",
+    "resumeRendering",
+    "previewHelperClass",
+    "_storeNewColorInColorWell:",
+    "_registerNotificationsForWindow:",
+    "_cellInitWithCoder:",
+    "CIFormat",
+    "_refreshesAllModelKeys",
+    "mutableCopyWithZone:",
+    "invertedSet",
+    NULL,
+    "mouseLocation",
+    "unbindActions",
+    "_isEventProcessingDisabled",
+    "_setColorToChange:",
+    "returnsObjectsAsFaults",
+    "setProperty:forKey:inRequest:",
+    "canonicalString",
+    NULL,
+    "setIsPrimary:",
+    "sharedServiceMaster",
+    NULL,
+    "hasApertureModeDimensions",
+    "_checkCardAndColumns",
+    "setCopiesOnScroll:",
+    NULL,
+    NULL,
+    NULL,
+    "lineSpacingAfterGlyphAtIndex:withProposedLineFragmentRect:",
+    "initJava2",
+    "_autoscrollDelay",
+    "tokenField:setUpTokenAttachmentCell:forRepresentedObject:",
+    NULL,
+    "_removeToolTip",
+    "_mergeTableCellsHorizontally",
+    "setHorizontalPageScroll:",
+    "_setHelpKey:forObject:",
+    "_needsDisplayfromColumn:",
+    "setAutoScales:",
+    "methodForSelector:",
+    "applicationDidUpdate:",
+    NULL,
+    "setBrightnessOnAllDisplays:",
+    NULL,
+    "dateWithTimeIntervalSinceNow:",
+    "_setImageAndNotifyTarget:",
+    "coerceColor:toString:",
+    "_logicalTestFromDescriptor:",
+    NULL,
+    "_unregisterForDocViewFrameAndBoundsChangeNotifications",
+    "buttonImageSourceWithName:",
+    NULL,
+    NULL,
+    "titleForAccessibleChildAtIndex:",
+    "sharedKeyBindingManager",
+    "didEndSheet:returnCode:contextInfo:",
+    "_alignColumnForStretchedWindowWithInfo:",
+    NULL,
+    "_setInactiveStateShowsRollovers:",
+    "_chooseCollection:",
+    "TIFFRepresentationOfImageRepsInArray:",
+    "initWithColor:",
+    "_cleanupHelpForQuit",
+    "initWithRulerMarker:parent:",
+    "_scrollingDirectionAndDeltas:",
+    "forInfoKey:addKey:fromDictionary:toArray:",
+    "setTrackMouseCoordinates:",
+    NULL,
+    "referenceURL",
+    "startObservingModelObject:",
+    "_allocExtraData",
+    "_registerWithDock",
+    "_frameForButtonOnTheRight:",
+    "removeValueAtIndex:fromPropertyWithKey:",
+    "dictionaryRep",
+    "unregisterWindowNotifications",
+    "tokenFieldCell:shouldAddObjects:atIndex:",
+    "notationName",
+    "_resizeToolbarViewToFit:",
+    "animationForKey:",
+    "_doClickAndQueueSendingOfAction:removeAndAddColumnsIfNecessary:",
+    NULL,
+    "setMarkedText:selectionRange:replacementRange:validFlags:",
+    "_minXTitleOffset",
+    "_manuallyDrawSourceListHighlightInRect:",
+    "actionForApparentlyAbandonedLock:onAttempt:",
+    "_downloadFile:toPath:",
+    "nts_AffectsSmartGroupsIsNew:record:",
+    "_hitTest:dragTypes:",
+    "selectAll:",
+    NULL,
+    "sortedArrayUsingDescriptors:",
+    "_clipIndicator",
+    NULL,
+    "shownValueInObject:",
+    "writeToFile:atomically:encoding:error:",
+    "nts_initWithDatabaseImpl:addressBook:",
+    "smallestEncoding",
+    "extent",
+    "_glyphLocationDescription",
+    "_setMultiValueIfNeeded:withLabel:inMultiValue:",
+    "didRefresh:",
+    "addPauseButton",
+    "_handleChildrenChanged:",
+    NULL,
+    "promotedImage:",
+    "initWithBadAuthResponse:username:password:",
+    NULL,
+    "_setCurrentWidth:",
+    "fontDescriptorWithFontAttributes:",
+    "setImplementor:atIndex:",
+    "_generateSQLType2InContext:",
+    "imageByCroppingToRect:",
+    "_title:",
+    "tooltipText",
+    "characterEncoding",
+    "headerCell",
+    "scheduleCameraPictureNotificationAfterDelay:",
+    "addItemWithObjectValue:",
+    "setDataRef:",
+    "lowercaseWord:",
+    "_setFileName:",
+    "openGLPixelFormat",
+    "clearStartAnimation",
+    "imageFrame",
+    "_unbind:existingNibConnectors:connectorsToRemove:connectorsToAdd:",
+    "_setInputExtent:",
+    "autoResizeToRect:clipView:",
+    NULL,
+    "_createLayerAndInitialize",
+    "reenableDisplayPosting",
+    "initWithView:withParent:",
+    NULL,
+    "waitUntilDate:",
+    "symbolicTraits",
+    NULL,
+    "setHeaderToolTip:",
+    "selectionForRange:",
+    "_allocateExtraFields",
+    "defaultLanguageContext",
+    "_updateFrameWidgets",
+    "isSimpleKeypath:",
+    "_initTextRenderer",
+    "_checkSpellingOfString:startingAt:language:wrap:inSpellDocumentWithTag:wordCount:reconnectOnError:",
+    "stripesAt:width:angle:softness:phase:red1:green1:blue1:alpha1:red2:green2:blue2:alpha2:",
+    "locationY",
+    "contentBinder",
+    "userServer:",
+    "initWithEntity:foreignKey:",
+    "imageWithBitmapData:bytesPerRow:size:format:colorSpace:",
+    "initWithMenu:item:",
+    "setString:forType:",
+    "_executeWithMode:andReturnError:",
+    "startSelectionProcess:",
+    "_stopAnimationCompletingOperations:",
+    "implementorAtIndex:",
+    "insertObject:inNamespacesAtIndex:",
+    "_rowArrayForBlock:atIndex:text:layoutManager:containerWidth:withRepetitions:collapseBorders:rowCharRange:indexInRow:startingRow:startingColumn:previousRowBlockHelper:",
+    "localizedStringForProperty:",
+    "valueForIdentifier:",
+    "convertToRGBA:",
+    "elementAtIndex:effectiveRange:",
+    NULL,
+    "drawTextContainer:withRect:graphicsContext:baselineMode:scrollable:padding:",
+    "alternateTitle",
+    "setupInspectorViewsForNode:",
+    "setWhitespace:",
+    "_setVisible:",
+    "_removeSpellingAttributeForRange:",
+    "valueForAttribute:",
+    "_setKeyCellFromTop",
+    "subscriptions",
+    "_appendArcSegmentWithCenter:radius:angle1:angle2:",
+    NULL,
+    NULL,
+    "_displaySelectedCard",
+    NULL,
+    NULL,
+    "_clearImageForLockFocusUse",
+    "setVisibilityPriority:",
+    "deleteWordForward:",
+    "colorForTimeLine:",
+    "_cleanupAndAuthenticate:sequence:conversation:invocation:raise:",
+    "_setFrameAfterMove:",
+    "buttonType",
+    "_parseContentsDictionary",
+    "serializedValueForKey:",
+    "drawAnnotationsWithBox:",
+    "accessibilityIsContentsAttributeSettable",
+    "_execute:arguments:",
+    "_removeObserver:notificationNamesAndSelectorNames:object:",
+    "_appkitViewBackingLayerUniqueMethod",
+    "_selectOrEdit:inView:target:editor:event:start:end:",
+    "redoIt",
+    "cropBounds",
+    "getFileSystemInfoForPath:isRemovable:isWritable:isUnmountable:description:type:",
+    "setDataRepresentation:",
+    "loadPlugInsInFolder:withExtensions:",
+    "stopPlayer:",
+    "_autosaveDefaultsKeyForName:",
+    "initWithCharacterSet:",
+    "_continueRunWithStartTime:duration:",
+    "makeUntitledDocumentOfType:error:",
+    "_calendarRangeOfAllDaysForDisplayedMonth",
+    "lowercaseString",
+    "takeValue:forKeyPath:",
+    "otherMouseDownDelegate:",
+    NULL,
+    "deserializeIntAtCursor:",
+    "__redrawBounds:",
+    "_cacheObjectValue:",
+    "handleAnimationProgress",
+    "setDomainName:",
+    "doRemoveAnnotaion:",
+    "shouldManageVisibilityForPreviewView:",
+    "adjustedRectForBox:",
+    "_old_encodeWithCoder_NSTableView:",
+    "getTransform",
+    "applyObjectValue:forBinding:operation:needToRunAlert:error:",
+    "doesContain:",
+    "succeeded",
+    "boundsForControlAtIndex:",
+    "beautifyMetaData",
+    "fromValue",
+    "_clearUnprocessedDeletions",
+    "getReturnValue:",
+    "_setHighlightedLayer:animate:update:",
+    "_unmarkEventFromString:",
+    "allMipmapItemsAreValid",
+    "coerceString:toTextStorage:",
+    "endIgnoreChanges",
+    "textColorAtIndex:",
+    "initWithContainer:key:mutableSet:",
+    "autoScales",
+    "setBrowserType:",
+    "pushGlyph:",
+    "CI_arrayWithRect:",
+    "_sortObjects:",
+    "_shouldShowInlinePreview",
+    "accessibilityIndexAttribute",
+    "_valueWithOperatorKeyPath:",
+    "setInternationalCurrencySymbol:",
+    NULL,
+    NULL,
+    "_shouldStealHitTestForCurrentEvent",
+    "collectionView",
+    "dictionaryWithObjects:forKeys:",
+    "helpRequested:",
+    "buttons",
+    "appendField:label:withText:",
+    "_parse",
+    "_currentFileModificationDate",
+    "removeRows:",
+    "_saveDocuments:",
+    "decodeNXColor",
+    "characterIsMember:",
+    "parseBasicConstraints:",
+    "launchedApplications",
+    "attributesByName",
+    "editableBinder",
+    "selectionType",
+    "dataToSave",
+    "sourceInfoForAddress:",
+    "fileNameFromRunningSavePanelForSaveOperation:",
+    "updateReferenceIndexesToReflectInsertionAtIndexes:",
+    "resultAtIndex:",
+    NULL,
+    "indexForKey:",
+    "_scrollViewForColumnsDocumentViewVisibilityChange:",
+    "_sendProgress:",
+    "_lineBorderColor",
+    "_allocateObserationStorage",
+    "initWithStore:",
+    "_containerAtIndex:traversingBackward:inContainerTree:ofDepth:",
+    NULL,
+    "thumbnailsFitOnScreen",
+    "_entryForPath:",
+    "lastDirectoriesSearchString",
+    "generateTexts:withAttributes:atIndex:renderMode:",
+    "_applicationDidActivate:",
+    NULL,
+    "_setChild:forUniqueName:",
+    "selectedItem",
+    "_setCursorForCurrentMouseLocation",
+    "hasNonContiguousLayout",
+    "punctuationCharacterSet",
+    "_setPendingInsertion:",
+    "pixelFormatRGBA8",
+    "_bytesAreVM",
+    "_menuRepresentationIsDefault",
+    "comboBox:completedString:",
+    NULL,
+    "nextWordInString:fromIndex:useBook:forward:",
+    "convertFont:toNotHaveTrait:",
+    "_noteAutosavedContentsOfDocument:",
+    "_createFileIfNecessary",
+    "setIMChineseName:",
+    NULL,
+    "optimizeCaches",
+    "frequency",
+    "nts_InitializeDatabase",
+    "adjustToUTType:",
+    NULL,
+    NULL,
+    "_temporaryAttribute:atCharacterIndex:effectiveRange:",
+    "URLWithAttributeString:",
+    "getOutputImage",
+    "_rankIndicatorSize",
+    "setAllowsUserCustomization:",
+    "_lockUnlockCachedImage:",
+    "scanFloat:",
+    "initMkcolWithSession:URI:token:",
+    NULL,
+    "_systemColorsChanged:",
+    NULL,
+    "saveCustomOutputPortStates:toState:",
+    "_invalidateLiveResizeCachedImage",
+    "buildWhereClauseWithSelectPredicate:",
+    "setMirrorMode:",
+    "_ciContext",
+    "adapterOperator",
+    NULL,
+    "ruleEditor:canSelectCriterion:andDisplayValue:inRow:",
+    "isStandalone",
+    "addNewPropertiesToRecipe:",
+    "willDie",
+    "outlineExpandCollapse:",
+    "_web_createFileAtPath:contents:attributes:",
+    "processMetaData:",
+    "_openRecentDocument:",
+    "retainBindingTargetAndUnbind",
+    "strokeLineFromPoint:toPoint:",
+    "userSelection",
+    "accessibilityIsCancelButtonAttributeSettable",
+    "comparisonPopUpFrame",
+    NULL,
+    "_ensureMetadataLoaded",
+    NULL,
+    "setRecentsPopUpHidden:",
+    "directoryContentsAtPath:",
+    "_addSource:",
+    "_doubleClickAtIndex:limitedRangeOK:",
+    "userFullName",
+    NULL,
+    "_uploadPath:toPath:",
+    "_cacheSelectedObjectsIfNecessary",
+    "setBinderSpecificFlag:atIndex:",
+    "setInputValuesWithPropertyList:",
+    "_enclosingBrowserForControlView:",
+    "setAutohidesScrollers:",
+    "_windowInitWithCoder:",
+    "migrateStoreFromURL:type:options:withMappingModel:toDestinationURL:destinationType:destinationOptions:error:",
+    "localizeOptionDictionaries:",
+    "_renameChild:toName:",
+    "annotationAtPoint:",
+    "_cycleWindows:",
+    "syncingEnabled",
+    "notifyListenersForUpdate:",
+    "imageSizeForCellSize:withAspectRatio:",
+    "initWithXMLString:",
+    NULL,
+    "rangeOfTextTable:atIndex:",
+    "audioChannelLayout",
+    "appleEventWithEventClass:eventID:targetDescriptor:returnID:transactionID:",
+    NULL,
+    "_setFrameNeedsDisplay:",
+    "setCellBackgroundColor:",
+    "pauseAnimation",
+    "reloadAll:",
+    "_saveConfigurationUsingName:domain:",
+    "setPaddingPosition:",
+    "menuForGraph",
+    "spellServer:didLearnWord:inLanguage:",
+    "setBoundsOrigin:",
+    "setMessage:",
+    "registerForFilenameDragTypes",
+    "currentInputContext",
+    "toolPath",
+    "insertNewButtonImage:in:",
+    "displayStringForLineHeightMultiple:min:max:lineSpacing:paragraphSpacingBefore:after:",
+    "qtUtilities",
+    "_updateCell",
+    "_realControlTint",
+    "cameraStatusDidChange:",
+    "_stringForNode:property:",
+    "_updateCellImage:",
+    "bindTextureRepresentationToCGLContext:textureUnit:normalizeCoordinates:",
+    "setUpPrintOperationDefaultValues",
+    "iSightRanOffWithItsListener:",
+    "dateValueYear",
+    "insertCompletion:forPartialWordRange:movement:isFinal:",
+    "maxResults",
+    "setClientView:",
+    "setOrientation:anchorPoint:",
+    "powerOffIn:andSave:",
+    "_inPreview",
+    "_calendarDayNamesStringForFirstWeekday:",
+    NULL,
+    "_wantsToolbarContextMenu",
+    "contents",
+    "optionDescriptionsForBinding:",
+    "_initParticle:atTime:",
+    "_forceSuccess",
+    "keysSortedByValueUsingSelector:",
+    "setIsEmpty:",
+    "registerServiceProvider:withName:",
+    "_calcTrackRect:andAdjustRect:",
+    NULL,
+    "windowDidChangeScreenProfile:",
+    "jobTitle",
+    "pixelColorModel",
+    "initWithIconRef:size:",
+    "_inputTopLine",
+    "_nonRepudiationUsage",
+    "setImagingModeAllowsVisualContext:",
+    "tableView:shouldShowCellExpansionForTableColumn:row:",
+    "drawArrow:highlightPart:",
+    "publicRecordClassFromUniqueId:inAddressBook:",
+    "moveToEndOfDocument:",
+    NULL,
+    "cachedSQLiteStatement",
+    "_lastLeftHit",
+    NULL,
+    "instantiateView",
+    "authenticateName:withPassword:",
+    "requestUserAttention:",
+    "_shouldShowFirstResponderAtRow:column:ignoringWindowKeyState:",
+    "initForView:",
+    "key:",
+    "validateAdditionalHeightToRow:",
+    "_memoryCacheAppendNodeToLRUList:",
+    "nts_hasUnsavedMailRecentsChanges",
+    "_editingIsPossibleForColumn:row:",
+    "_colorForMouseEvent:",
+    "predicateForRow:",
+    "_addKeychainItem:",
+    "cameraPictureNotification:",
+    "_isRuleStaticTextField:",
+    "hitTestForEvent:inRect:ofView:",
+    "_containerDescription",
+    "applicationDidResignActive:",
+    NULL,
+    NULL,
+    "_embossedOffsetTextColor",
+    "writeBody",
+    "nestingMode",
+    "_defaultGroupViewIfUsed",
+    "initWithIndexes:length:",
+    "_baselineRenderingMode",
+    "_attributeRunForCharacterAtIndex:",
+    "alphaComponent",
+    "setMode:",
+    "recentRepository",
+    "removeColorWithKey:",
+    "CA_stringByAppendingPathComponent::",
+    "_editNoteAtIndex:",
+    NULL,
+    "indexOfItemAtPoint:",
+    NULL,
+    "IKIPContainsObjectIdenticalTo:",
+    "stupidKitWorkaround",
+    "_invalidateTimeMode",
+    "setStopError:",
+    NULL,
+    "_getResolvedNavNodeForFilename:",
+    "_setupOverlayLayer",
+    "sharedEmptyIconViewCell",
+    "controlsFixedForKeyFrame:",
+    "_rowHeaderFixedContentRect",
+    "_labelAttributes",
+    NULL,
+    "setDefaultButtonTitle:",
+    "brightColor",
+    "initWithGroup:records:addressBook:",
+    "accessibilityArrayAttributeValues:index:maxCount:",
+    "cellFrameAtIndex:",
+    "setFrameTopLeftPoint:",
+    "setGenericView:",
+    "_executeAddChild:didCommitSuccessfully:actionSender:",
+    "documentForURL:",
+    NULL,
+    "_enumeratorDescriptionsFromImplDeclarations:presoDeclarations:",
+    "getValueForKey:",
+    "currentAppleEvent",
+    "_locationForPopUpMenuWithFrame:",
+    "initWithCyan:magenta:yellow:black:alpha:",
+    "_rectWithSingleThickness:",
+    "setRectSetBeingDrawn:forView:",
+    "setLocation:withAdvancements:forStartOfGlyphRange:",
+    "_topMenuView",
+    "rightMouseDragged:",
+    NULL,
+    "syncStateForKeychain:",
+    "_removeTrackingRect:",
+    NULL,
+    NULL,
+    "_accessibilityIndicatorRect",
+    "accessibilityIsEditedAttributeSettable",
+    "_deallocAuxiliaryStorage",
+    "updateInvalidatedObjectValue:forObject:",
+    "initWithQCImageKernelPatch:",
+    "rotateImageLeft:",
+    "_coreUILinearState:",
+    NULL,
+    "issueCommand",
+    "_minWidthForPass:forView:withProposedMinWidth:",
+    NULL,
+    NULL,
+    "getBagdeBackgroundForObjectCount:",
+    "isPartialStringValid:newEditingString:errorDescription:",
+    "hasImageWithAlpha",
+    "pixelFormatM_I8",
+    "runLoop",
+    "setNumberStyle:",
+    "setRootObject:",
+    "decodeColumns:",
+    "isEqualToDictionary:",
+    "newZoomButton",
+    "kaleidoscopeROI:forRect:userInfo:",
+    "saveSyncList",
+    "setImage:",
+    "populateWithDictionary:skipUnknownProperties:generateMultiValueIDs:recordIsNew:",
+    "_atEndOfTextTable:atIndex:",
+    "setDisplayedCard:withHistory:",
+    "processEndElement:",
+    "resource",
+    "convertScreenToBase:",
+    "negativeFormat",
+    "setSourceView:",
+    "scheduleTrickleSyncAndAllowLocking:",
+    "_adjustSheetEffect",
+    "realm",
+    "_registerMenuForKeyEquivalentUniquing:",
+    "_destroyRealWindow",
+    "_needsDisplayfromRow:",
+    "hyphenGlyphForFont:language:",
+    "me",
+    "startRendering:",
+    "writeLinkInfo:",
+    "writeToURL:options:error:",
+    "_localizedNameForColorWithName:",
+    "_maxXmaxYResizeRect",
+    "stateImageOffset",
+    "runInNewThread",
+    NULL,
+    "matchesRecord:",
+    "initWithOperation:",
+    "upToDateImageForEmail:",
+    "_doCommandBySelector:forInputManager:",
+    "selectionShouldUsePrimaryColor",
+    "_addToolTipRects",
+    "findMatchingWindowInWindowList",
+    "previewView:doubleClickedForURL:",
+    "endFetch",
+    "setMCDraggable:",
+    "connection:willSendRequest:redirectResponse:",
+    "setDatePickerElements:",
+    "_setOrientation:inPageFormat:",
+    "linkToURL:",
+    "columnIndexesInRect:",
+    NULL,
+    "disposeAudio",
+    "_shouldSendObserverNotificationForModelOrProxyKey:keyPath:ofObject:",
+    "_setInstallPending:",
+    "_setAttributes:isMultiple:",
+    NULL,
+    "imageInterpolation",
+    NULL,
+    "_isGeneratedClass",
+    "commonResetForm:inclusive:",
+    "contentLayer",
+    "dynamicToolTipRevealoverInfoAtPoint:trackingRect:",
+    "_hasSurface",
+    "defaultMenu",
+    "coalesceAffectedRange:replacementRange:selectedRange:text:",
+    "_drawDropHighlightAboveRect:",
+    "_scrollRowToVisible:animate:",
+    "_useMetalPattern",
+    "setDefaultAttachmentScaling:",
+    NULL,
+    "_currentApplication",
+    "_addSubfieldForElement:withDateFormat:stringValue:alternateStringValue:",
+    "exportRecords:",
+    "computeHostname",
+    "propertyLineForGenericABProperty:vCardProperty:is21:groupCount:",
+    "countOccurrences:",
+    NULL,
+    "segmentedRawBufferForResolution:",
+    "dateWithString:",
+    "_drawCenteredVerticallyInRect:",
+    "setDefaultPlaceholder:forBinding:onObjectClass:",
+    "initWithName:elementNames:",
+    "importPumaAddressBook:",
+    "updateOptionsWithApplicationIcon:",
+    "createUniqueKey:",
+    NULL,
+    "setHour:",
+    "loadPlugIn:allowNonExecutable:",
+    "_validItemViewerBoundsAssumingClipIndicatorShown",
+    "reenableFlush",
+    "_copyDisplayNameForKey:value:",
+    "setSQLString:",
+    NULL,
+    "setShowsPrintPanel:",
+    NULL,
+    "autoResizeToRect:clipView:allowZoomIn:",
+    "_validateEntryString:uiHandled:",
+    "_leftmostInsertionIndexForNode:inOrderedNodes:",
+    "_doDetachDrawer",
+    "_forgetObject:propagateToObjectStore:",
+    "transformedScaledImageSize",
+    "accessibilityChildrenAttribute",
+    "startAnimation",
+    "processInputKeyBindings:",
+    "mouseEntered:",
+    "setEditingCanceled:",
+    "initWithPanel:",
+    "windowLevel",
+    "renderLevel",
+    NULL,
+    "scrollSelectionToVisible:",
+    "getMagnificationFilter",
+    "accessibilityTopLevelUIElementAttribute",
+    "_replaceAccessoryView:with:topView:bottomView:previousKeyView:",
+    "attributesForResultPortWithInfo:name:index:",
+    "_indexesToPrefetch",
+    "application:openFiles:",
+    "httpStatusCode",
+    "controlHeight",
+    "hasNameData",
+    "contentWidth",
+    "_cancelAutoExpandTimer",
+    "morphologyInitROI:destRect:userInfo:",
+    "_removeHiddenWindow:",
+    NULL,
+    NULL,
+    "_rendererPropertyValue:",
+    "noteFontFavoritesChanged",
+    "updateWithinDateTense",
+    "_countPartsInFormat:",
+    "removeSubItem:",
+    "pathControl:acceptDrop:",
+    "setMaxValue:",
+    "_outlineView",
+    "_classNameForType:",
+    "setInactiveColor:",
+    "releaseFxPicker:",
+    "_setBox:enabled:",
+    "_viewIsEnabledAtIndex:",
+    "drawsBackground",
+    "isEditableByThisApp",
+    "initWithModel:entityDescription:",
+    "showsHelp",
+    NULL,
+    "isPreviewColumn",
+    "_unregisterForNotifications",
+    "ok:",
+    "initWithWindowNibPath:owner:",
+    "initWithSession:",
+    "_progressBarRect",
+    "_trackButton:forEvent:inRect:ofView:",
+    "openInSeparateWindowWithoutAsking",
+    "firstRange",
+    NULL,
+    "_setConsistencyCheckingEnabled:superCheckEnabled:",
+    "tagForNSTag:",
+    "_mainWindow",
+    "managerForNodeNamespace:",
+    "_removeSortDescriptorForTableColumn:",
+    "_preferedColumnWidth",
+    "selectCompositionIfNeeded",
+    "sqlTypeForPropertyAtEndOfKeyPath:",
+    "bundleIdentifier",
+    "_defaultMetadata",
+    "hashFunction",
+    "bind:toLayer:",
+    "shapeZ",
+    "partialObjectKey",
+    "descriptorWithEnumCode:",
+    "_switchInitialFirstResponder:lastKeyView:forTabViewItem:",
+    "_changeIntAttribute:by:range:",
+    "initPropPatchWithSession:path:patchProperties:deleteProperties:",
+    "willHaveItemsToDisplayForItemViewers:",
+    "setServiceType:",
+    "_emptyContents",
+    "fixAttributesInRange:",
+    "externalDataForSourceObjectID:key:timestamp:",
+    "leaveCropMode",
+    "characterIndexForInsertionAtPoint:",
+    "_draggedColumnImageInset",
+    "_QTMovieViewClass",
+    "_isGUIDUnique:",
+    "drawForPage:withBox:active:",
+    "scrollMode",
+    "setCellSize:",
+    "_syncFrameMetrics",
+    "_controlSizeForScrollers",
+    "showPanel:andNotify:with:",
+    "_drawBezelWithFrame:highlighted:inView:",
+    "contentValueKey",
+    "_indexOfDocumentAtRow:column:",
+    "_performChangesWithAdapterOps:",
+    "cacheNodes",
+    "initWithContainerClassID:key:containerIsa:ivar:",
+    "textureMatrix",
+    "setHasViewControls:",
+    "hasSubentities",
+    NULL,
+    "_defaultObjectClassName",
+    "_finalize_QCImageBuffer",
+    "_inputImage",
+    "serializePropertyList:intoData:",
+    "URLWithQuery:inHelpBooks:",
+    "awakeFromFetch",
+    "createResourceWithDownloadedData:sourceURL:",
+    "_commandDescriptionsFromPropertyListDeclarations:suiteName:",
+    "limitDateForMode:",
+    "createRepresentationOfType:withProvider:transformation:bounds:colorSpace:options:",
+    "_resetMeasuredCell",
+    "deminiaturize:",
+    "adjustToPDFView:",
+    "deletedObjects",
+    NULL,
+    "externalScale",
+    "runOperation",
+    "setDay:",
+    "setWindowFrameForAttachingToRect:onScreen:preferredEdge:popUpSelectedItem:",
+    "outputPorts",
+    "enlargedBounds:withYOffset:andCount:",
+    "extraLineFragmentTextContainer",
+    "netServiceBrowserWillSearch:",
+    "_MOClassName",
+    "initWithMigrationManager:",
+    "addRotationLayer:",
+    "_valueClass:",
+    "imageWithRenderer:userData:renderSize:renderContext:",
+    "constraintWithAttribute:relativeTo:attribute:offset:",
+    "_feedbackWindowIsVisible",
+    "setWithCapacity:",
+    "_updateLayerShadowFromView",
+    "loadNib",
+    "_dragEndedNotification:",
+    "getBoundingRects:forGlyphs:count:",
+    "dstDraggingEnteredAtPoint:draggingInfo:",
+    "initWithBytesNoCopy:length:freeWhenDone:",
+    "accessibilityIsHelpAttributeSettable",
+    "_subrowObjectsOfObject:",
+    "_webPreferences",
+    "processEditing",
+    "setInitialBoundsWithOptions:",
+    "_findFirstKeyViewInDirection:forKeyLoopGroupingView:",
+    NULL,
+    "contextDictionary",
+    "_lazyFetchResultProxyForObjects:",
+    "configureForActiveState",
+    "_setProperty:forKey:",
+    "observedNodeForExpandedNode:createIfNeeded:",
+    "variableRows",
+    "converterForImageManager:",
+    "setBalance:",
+    "_sessionData",
+    "localizedStringWithFormat:",
+    NULL,
+    NULL,
+    "analyzeKeyPath:registerOrUnregister:",
+    "isReleasedWhenClosed",
+    "didShow",
+    "allowGroupSelection",
+    "_doSomeBackgroundLayout",
+    "_recursiveGainedLayerTreeHostAncestor",
+    "selectRowAfterTargetingItem:withMenu:",
+    "serializedStateKeysWithIdentifier:",
+    "menuLocation",
+    "_writeDocumentProperties",
+    "filterNamesInCategories:",
+    "_setMenuClassName:",
+    "saveCustomInputPortStates:toState:",
+    "bundleWithIdentifier:",
+    "setGlyphID:forIndex:",
+    "connectionsForObject:",
+    "sourceKey",
+    "_transplantReplacementBackingLayer:",
+    "_accessibilitySupportedPartCodes",
+    "precision",
+    "_drawAnimationStep",
+    NULL,
+    "_sendDelegateToolTipForCell:tableColumn:rect:row:mouseLocation:",
+    "processSignificantWhitespace:",
+    "nodes",
+    "removeBinding:",
+    "_blueKeyboardFocusColor",
+    "setShouldReportNamespacePrefixes:",
+    "createCopy:",
+    "_updateOutputDeviceUniqueIDFromPropertyListener",
+    "stopSpeaking:",
+    "_rectOfRowAssumingRowExists:",
+    "raiseBaseline:",
+    "addSubrecord:",
+    "specialColorSpaceWithID:",
+    "node",
+    "setUseSSL:",
+    "automaticallyManageVisibility",
+    NULL,
+    "_lastItemIsNonSeparator",
+    NULL,
+    "_printSessionAttributeKeys",
+    "_setLocalizedKeyWithoutKey:",
+    "searchElementForProperty:label:key:value:comparison:",
+    "_sendAction:to:row:column:",
+    "_scrollRect:fromLayer:",
+    "initWithContentsOfFile:ofType:",
+    "imageFlowWillStabilize:",
+    "notificationCenter",
+    NULL,
+    "FilterApplyButton",
+    "setUserInterfaceItemIdentifier:",
+    "_uiClearField:",
+    "hitTestWithPoint:",
+    "dsDirRef",
+    "noteNumberOfTableRowsChanged:",
+    "drawTokenWithFrame:inView:",
+    "specialGroupForAddressBook:",
+    "pageUpAndModifySelection:",
+    "centerPanel",
+    NULL,
+    "_scriptingValueOfValueType:withDescriptor:",
+    "getBytes:maxLength:usedLength:encoding:options:range:remainingRange:",
+    "_delegateRepondsToValidateDrop",
+    "_setPKINITClientAuthUsage:",
+    "setSelectedIndex:",
+    "_layoutThumbnailLayers",
+    "_bundle",
+    "setUnsignedInt:",
+    "_incrementInUseCounter",
+    "FilterRemoveButton",
+    "cachePath",
+    "filepathLabel",
+    "decimalNumberBySubstracting:",
+    "connectionWillDeleteFromGraph",
+    "setDefaultBehavior:",
+    "sharedRemoteImageLoader",
+    "setParent:",
+    NULL,
+    "_checkForClipViewScrolling",
+    "copy:",
+    "_scriptingCanHandleCommand:",
+    "_previousNibBindingConnector",
+    "setMenuFormRepresentation:",
+    "scanHexDouble:",
+    "_handleAEOpenContentsEvent:replyEvent:",
+    "threadedGenieFXFromWindow:toWindow:",
+    "textContainerChangedTextView:",
+    "_setPrimaryIdentifier:",
+    "exactlyMatchesFileNameExtensionOrHFSFileType:",
+    "setIgnoresAlpha:",
+    "_inputBottomLineParams",
+    "namespaces",
+    "printShowingPrintPanel:",
+    "deserializeNewList",
+    "initPropPatchWithSession:URI:updatingProps:inNameSpace:",
+    "primitiveModificationDateYearless",
+    "searchResultAtIndex:",
+    "revertToBackupFromPath:",
+    "fileNameExtensionForType:saveOperation:",
+    "unlockDelegate",
+    "_propertyDescriptionForPresentableName:checkSubclasses:superclasses:",
+    NULL,
+    "drawBarInside:flipped:",
+    "_updateMaxIndexFromLabels",
+    "_scriptingFileWithDescriptor:",
+    "_defaultTitlebarTitleRect",
+    "writeColor:type:",
+    "layoutParameters",
+    "_finishWritingFileAtPath:byMovingFileAtPath:addingAttributes:error:",
+    NULL,
+    "_gridGeometryChanged:",
+    "findOnPage",
+    "accessibilitySetSizeAttribute:",
+    NULL,
+    NULL,
+    "recentIsACustomRecent:",
+    "setPreferredFontNames:",
+    "_updateNodeList:forChangedProperty:ofNode:",
+    "complete:",
+    "_processOwnedObjects:set:boolean:",
+    NULL,
+    NULL,
+    "_computeStepsInSequence:withConverters:softwareOnly:accelerated:sourceTarget:sourceFormat:sourceColorSpace:destinationTarget:destinationFormat:destinationColorSpace:transformation:bestScore:baseCost:inLoop:",
+    "_setDefaultButtonCycleTime:",
+    "_setHIViewIsDrawing:",
+    "_scrollFirstVisibleColumnIntoView",
+    "_startTimeOutWithSelector:documentPreview:object:stopOnCondition:",
+    "flushTextForClient:",
+    NULL,
+    "_validatePaginationAttributes",
+    "urlForEmail:",
+    "getDirInfo:",
+    "infoDictionary",
+    "setSpeechFeedbackServicesTimer:",
+    NULL,
+    "bitsPerBlock",
+    "initWithRepresentedObject:",
+    "updateOnlineStatus",
+    "textView:shouldChangeTextInRange:replacementString:",
+    "_toolbarCommonFinishInit",
+    NULL,
+    "_accessibilityCompatibilityHitTest:",
+    "refreshWithGroupsController:",
+    "markPersonAsViewed:",
+    "_wordsInDictionary:",
+    "newInsertedObject",
+    "initWithContainerClassID:key:method:",
+    "draggedImage:endedAt:deposited:",
+    "infoForBinding:",
+    "sourceEntityVersionHash",
+    NULL,
+    "metadataQuery:replacementObjectForResultObject:",
+    "_needImportMipmap:forCellSize:exactSizeMode:",
+    "setScrollView:",
+    "orderFrontFontPanel:",
+    "streamEnumeratorWithTrack:",
+    "updateFont:",
+    "_stashedOrigin",
+    "valueTextAttributes",
+    "_currentWidth",
+    "saveToDocument:removeBackup:errorHandler:",
+    "flushDataForTriplet:littleEndian:",
+    "setRootNode:",
+    "initWithString:relativeToURL:",
+    "standardDeviation",
+    "_attributedSubstringForCopyingFromRange:",
+    "rulerStateDescription",
+    "hasChanged",
+    "_windowDeviceRound",
+    "setEditMode:",
+    "setZoomValue:",
+    "_automaticRearrangementKeyPaths",
+    "_changeIconViewTextSize:",
+    "_lastSelectedSliceIndex",
+    NULL,
+    "_shouldLiveResizeUseCachedImage",
+    "accessibilityValueAttribute",
+    "addRunLoop:",
+    "_boundsWithAllKeyFrames:",
+    "glID",
+    "numberOfPages",
+    "deleteProxyPortWithOriginalPort:",
+    "indexForIdentifier:",
+    "willBeRemovedFromSuperlayer",
+    "_sendingTableViewRowAction",
+    "runProcess:arguments:wait:",
+    "deleteObjectsInRange:",
+    "_elementIsBlockLevel:",
+    "interpretKeyEvents:forClient:",
+    "_modifiedGrammarRangeForRange:details:",
+    "transformForOrientationAndDPIWithTranslationForWidth:height:",
+    "_resetScreens",
+    "unionHashTable:",
+    "fillExactInterior",
+    "cellsHaveTitle",
+    "_removeAllTrackingRects",
+    "_applyDisplayedValueIfHasUncommittedChangesWithHandleErrors:typeOfAlert:discardEditingCallback:otherCallback:callbackContextInfo:didRunAlert:",
+    "viewMovingToWindow",
+    "_removeBinding:",
+    "syncWithRemoteToolbars",
+    "getReadableNotWritable:names:",
+    "_hasKeyboardFocus",
+    "removePortAtIndex:",
+    "_centerLayerInParentLayer",
+    "setDocWindow:",
+    "accessibilityIsDefaultButtonAttributeSettable",
+    "closeStartContentWindow",
+    "isInherited",
+    "setScreenRectCG:",
+    "pushRoundedRectPath:inContext:withCornerRadius:alignOnPixelCenter:",
+    "slideshowClose:",
+    "setColorSpace:",
+    "portMaxValue",
+    "iconView",
+    "_stringRepresentation",
+    "_umask",
+    NULL,
+    NULL,
+    "setPrimitiveDisplayFlags:",
+    NULL,
+    "setIndexValue:",
+    "_composite:delta:fromRect:toPoint:",
+    "imageRepresentationType",
+    "initWithObjectID:",
+    "maxRows",
+    "_inActiveBackgroundColor",
+    "updateFromPMPrintSettings",
+    "_setDisplayNodes:",
+    "runModalForCarbonWindow:",
+    NULL,
+    "sleep",
+    "initWithRTFDFileWrapper:documentAttributes:",
+    "cancelIncrementalLoad",
+    "initWithMembers:keyPrefix:",
+    "addLayoutManager:",
+    "enqueueNotification:postingStyle:coalesceMask:forModes:",
+    "scanHexInt:",
+    "initToMemory",
+    "_updateInputManagerState",
+    "contextForSecondaryThread",
+    "resetSearchResults",
+    "defaultCompletionDelay",
+    "dictionaryByAddingObject:forKey:",
+    "addElementView:",
+    "_activateTrackingRectsForApplicationActivation",
+    "startRendering:options:",
+    "setGRL:",
+    "setInUserDomain:",
+    "supportedTextureBufferTargetsForManager:",
+    "_shouldShowCursorRects",
+    "_scriptingAnyWithDescriptor:",
+    "objectIDForEntity:referenceObject:",
+    "initWithKind:",
+    "_replaceRangeInArrayAtIndex:withRange:",
+    "nsImage",
+    "_selectAllNoRecurse:",
+    "_itemAdded:",
+    "setContentsTransform:",
+    "setAttributes:ofItemAtPath:error:",
+    "add:to:",
+    "downloadTextureWithBounds:toAddress:bytesPerRow:",
+    "orderedSetWithObjects:count:",
+    NULL,
+    "initWithSource::dest::",
+    "hasFrameImageAtTime:",
+    "_removeStatusItem:",
+    "primitiveCreationDateYearless",
+    "sourceOptions",
+    "setAcceptsMouseMovedEvents:",
+    "fontInvalidationCapableObjectForObject:",
+    "doubleAction:",
+    "_dropHighlightBackgroundColor",
+    "reallyReplaceObjectAtIndex:withObject:",
+    "_nodeAtPosition:outBounds:",
+    "setOutlinesCells:",
+    "EPSOperationWithView:insideRect:toPath:printInfo:",
+    "objectForResolution:",
+    "editWithFrame:inView:editor:delegate:event:",
+    "verticalRulerView",
+    "endOperationWithError:",
+    "rowForObjectID:",
+    "unbindItemWithResolution:withUID:",
+    "initWithIndex:",
+    "colorSwathesChangedInAnotherApplicationNotification:",
+    NULL,
+    NULL,
+    "accessibilityPostNotification:",
+    "_lockViewHierarchyForModification",
+    "popupClosing:",
+    "_layoutViews:startingInsetFromXOrigin:insetFromTop:withSpacing:sizeToFit:horizontal:",
+    "valueForBinding:resolveMarkersToPlaceholders:",
+    "fireDidStartAnimating",
+    "_containsColorForTextAttributesOfNegativeValues",
+    "usesFeedbackWindow",
+    "connectionUnitOutputNumberForConnection:",
+    NULL,
+    NULL,
+    "isAttached",
+    NULL,
+    "inputRampParamsAtIndexes:",
+    "_isValid",
+    "_destroyRealWindowForAllDrawers",
+    "sender",
+    NULL,
+    NULL,
+    "_updateSyncState",
+    "_modifyInvitationWithObject:forKey:",
+    "stringForIndexing",
+    "setTargets:",
+    "_importedCard",
+    "setChildren:",
+    "selectionRectChanged:",
+    "checkAllocCellLayoutInfo",
+    "browser:shouldShowCellExpansionForRow:column:",
+    "_startDraggingUpdates",
+    "initWithItem:forToolbarView:",
+    "storedAttributes",
+    "initWithImage:foregroundColorHint:backgroundColorHint:hotSpot:",
+    "paragraphs",
+    "_performArrayBinderOperation:singleObject:multipleObjects:singleIndex:multipleIndexes:selectionMode:",
+    "vectorWithSize:",
+    "mediaBox",
+    "initWithNavView:",
+    "_cursorRectCursor",
+    "_effects",
+    "setDoubleClickOpensImageEditPanel:",
+    "initWithCFURLProtocol:",
+    NULL,
+    NULL,
+    "_validateLDAPServer",
+    "_deselectAllAndEndEditingIfNecessary:",
+    NULL,
+    "appDidActivate:",
+    "escapeInvalidXMLCharactersInString:",
+    "setLeafKeyPath:",
+    "handleGetAETEEvent:withReplyEvent:",
+    "initAll:owner:index:",
+    "_loadSuitesFromSDEFData:bundle:",
+    NULL,
+    "_labelFont",
+    NULL,
+    "defaultValues",
+    "initWithManagedObjectModel:",
+    "_enqueueAnimation:forObject:keyPath:",
+    NULL,
+    "drawShadow",
+    "settingsView:shouldRenameKey:",
+    "_entityDeallocated",
+    "registerForCommandDescription:",
+    "_showsPreviewByDefault",
+    NULL,
+    "__timebaseChanged:",
+    NULL,
+    "_reconfigureAnimationState:",
+    "sharedWithString:",
+    "priorityForFlavor:",
+    "wantsLayer",
+    "render:arguments:",
+    "drawDropHighlightOnRowFirst:",
+    "descriptorType",
+    "createInputPortWithArguments:forKey:",
+    "_setDragAndDropCharRange:",
+    "_recordPreviousKeyWindowProperties",
+    "setSelectionType:",
+    "setSortDescriptorPrototype:",
+    "setURL:blockingUntilLoading:",
+    "authenticateWithDelegate:",
+    "_addDeletesToDatabaseOp:forManyToMany:",
+    "removeObjectFromAppleUseCoreUIAtIndex:",
+    "resumeExecutionWithResult:",
+    "mappingModel",
+    "_country",
+    "typographicBounds",
+    "_segmentHighlightState:",
+    NULL,
+    "shouldRefreshDisplayAfterSelectionMechanismWasDismissed:",
+    "root",
+    "initWithRow:tableColumn:realElement:",
+    "stringByReplacingOccurrencesOfString:withString:",
+    "_showFindIndicator",
+    "parseStream",
+    "cellFrameForCell:",
+    "didSave",
+    "initWithTextRenderer:options:",
+    "enabled",
+    "processName",
+    "setFontManagerFactory:",
+    "setParagraphStyle:",
+    "_registerUndoObject:",
+    "isLayoutValid",
+    "_objectDidTriggerAction:bindingAdaptor:",
+    "unbindItem:withUID:",
+    "drawImage:inRect:forAA:reflection:alpha:fog:baseline:",
+    "initToFile:error:",
+    "_inactiveStateShowsRollovers",
+    "notActiveWindowFrameShadowColor",
+    "setMaxContentSize:",
+    "cleanupAfterPrintOperation:",
+    NULL,
+    "_dragRowIndexes:inColumn:withEvent:pasteboard:source:slideBack:",
+    "documentURLs",
+    "metadataJobType",
+    "controlViewWillBecomeFirstResponder:",
+    "flushCachedChildrenForNode:",
+    "setMailRecent:",
+    "segmentSize",
+    "_getCString:maxLength:encoding:",
+    "setOption:forKey:",
+    "contains:",
+    "isBaseFont",
+    "windowTitlebarTitleLinesSpacingWidth",
+    "replyMode",
+    "unarchiver:cannotDecodeObjectOfClassName:originalClasses:",
+    "moveInDirection:",
+    "_objectForAttributeKey:",
+    "typefaceInfoForFontDescriptor:",
+    "setPickerMode:",
+    NULL,
+    "_pageUpWithEvent:",
+    "stringForKey:inTable:",
+    NULL,
+    "setAsyncLaunch:",
+    NULL,
+    "migrationManager",
+    "acceptsRootNodeOrWarn:usingParent:",
+    "_textHighlightColor",
+    "_userClickOrKeyInColumnShouldMaintainColumnPosition",
+    "initWithName:appleEventCode:enumeratorDescriptions:",
+    "getInfoForFile:application:type:",
+    "_computeAndAlignFirstClosestVisibleColumn",
+    NULL,
+    "_stripAttachmentCharactersAndParagraphStylesFromAttributedString:",
+    "showState:",
+    "_reflectFont",
+    "highlightedSelections",
+    "bestMatchingFontForCharacters:length:attributes:actualCoveredLength:",
+    "_setSelectedCell:",
+    "nonAutorotatedOriginalImageSize",
+    "_compositePointInRuler",
+    "_initWithContentsOfURL:ofType:error:",
+    "UID",
+    "keywordForDescriptorAtIndex:",
+    "_positionalSpecifierFromDescriptor:",
+    "pathForResource:ofType:inDirectory:forLanguage:",
+    "_appendObjectClassDeclarationsToAETEData:includingParts:",
+    "accessibilityIsSelectedAttributeSettable",
+    "verifyInvitationFile:invitationDictionary:trustRefOnErr:signerIdentity:",
+    "_menuCellInitWithCoder:",
+    "_toolbarFrameSizeChanged:oldSize:",
+    "toolbar:itemForItemIdentifier:willBeInsertedIntoToolbar:",
+    "accessibilityIsColumnsAttributeSettable",
+    "localizedName",
+    "setUserInfo:forKey:",
+    "_nonNilMutableArrayValueWithSelector:",
+    "authenticateWithBufferItems:authType:authOnly:",
+    "_defaultSelectionColor",
+    "iconView:performKeyEquivalent:",
+    "_setSelectionRange::",
+    "_performActionOnSelectedNodes:context:",
+    "fractionOfDistanceThroughGlyphForPoint:inTextContainer:",
+    "tangentialPressure",
+    "beginPageSetupRect:placement:",
+    NULL,
+    "boolParameterValue:",
+    "_inputPortAttributesWithKey:index:count:type:",
+    "scrollRect:by:",
+    "undoWithObject:",
+    "_setPathLocationEmptyTitle:",
+    "resolvesAliases",
+    "_bindVariablesWithDeletedRow:",
+    "parentItemRepresentedObjectForMenu:",
+    "applicationID",
+    "_decodeDownloadHeaderData:dataForkData:resourceForkData:",
+    "_handleFocusToolbarHotKey:",
+    "createFileFormatInfo",
+    "horizontalPageScroll",
+    "sharedController",
+    "_canDrawOutsideOfItsBounds",
+    "addRGBColor:forKey:toDictionaryRef:",
+    "_initWithGraph:mutable:",
+    "_installTrackingArea:",
+    NULL,
+    "initializeSlice:withOptions:",
+    "reshape",
+    "objectInInputBottomLineParamsAtIndex:",
+    "sizeWidthToFit",
+    "_orderOutAndCalcKeyWithCounter:stillVisible:docWindow:",
+    "shadowImageAroundPath:",
+    "animationDidStop:finished:",
+    "getComponents:",
+    "initWithDir:strings:",
+    "setHasVerticalRuler:",
+    "viewNibName",
+    "gridCapacity",
+    NULL,
+    "setInputTopLine:",
+    NULL,
+    "supportsDragAndDrop",
+    "_setupMessagePort",
+    "createCommandInstance",
+    "_setNeedsStateUpdate:",
+    "_notifyFamily_MovedFromIndex:toIndex:",
+    "analyzeCurrentWindow:",
+    "_setKeyViewRedirectionDisabled:",
+    "abBackupDate",
+    NULL,
+    "brightness",
+    "_updateContainerReferenceCounterForArraysOfItems:direction:",
+    "_setInputColor0:",
+    "setNumberOfVisibleItems:",
+    "getInfoButtonCell",
+    NULL,
+    "_pushState",
+    "_unlearnSpellingFromMenu:",
+    "objcCreationMethodSelector",
+    "setForegroundColor:",
+    "setHasLineNumbers:",
+    "normalize",
+    "writeDictionary:toURL:securely:andReturnResultCode:",
+    NULL,
+    "_allowAnimated_removeFromSuperview",
+    "_minXResizeRect",
+    NULL,
+    "cellPadding",
+    "_changeWasRedone:",
+    "setEnableSelectionHighlightDrawing:",
+    "doAutoResizeToRect:clipView:",
+    "_removeFromKeyViewLoop",
+    "begin",
+    "setSelection:",
+    "_findLastViewInKeyViewLoopStartingAtView:",
+    NULL,
+    "removeContext:",
+    "insertInAttachments:",
+    "updateState:",
+    "plusSign",
+    "deepSubnodeCopy:",
+    "imageCroppedRect",
+    NULL,
+    "windowControllerDidLoadNib:",
+    "minimum",
+    "frameSize",
+    "setSynchronousMode:",
+    "_userReplaceRange:withString:",
+    "compressMipmapItemIfNeeded:withUID:",
+    "indexOfMember:",
+    NULL,
+    "_boundsForSelection",
+    NULL,
+    "_itemChangedLabelOrPaletteLabel",
+    "addNewColor:andShowInWell:",
+    "foreignKeys",
+    "adapter",
+    NULL,
+    "parser:foundCharacters:",
+    "tileVertically",
+    "deviceDeltaX",
+    "_coreUIDrawSegmentBackground:withCellFrame:inView:",
+    "unescapedString",
+    "addQuadPointsToDictionaryRef:",
+    "_collectionWithName:index:",
+    "_templateType",
+    "_setSSLClientAuthUsage:",
+    "noteUserDefaultsChanged",
+    "lazyGetChildrenForNodeWithIdentifier:",
+    "_finalizeWithGC",
+    "mediaKeysForType:",
+    "sortAnnotations",
+    "localizedStringForKey:value:table:",
+    "_setCounterpart:",
+    "clearDataFileInfo",
+    "allowsUndo",
+    "getObject:atIndex:",
+    "ikVisibleRect",
+    "renderStateClass",
+    "addAnimation:forKey:",
+    "setIsOpen:",
+    "addFontTrait:",
+    "drawSelectionRingWithColor:width:forNode:bounds:view:",
+    "_chooseEvaluatorFunction",
+    NULL,
+    "setShowGroupMembership:",
+    "setZipCode:",
+    "mutableArrayValueForKeyPath:",
+    "_populateEntityDescription:fromNode:",
+    "_minNonExpandedFrameSize",
+    "_widthRequiredForLabelLayout",
+    "graphiteControlTintColor",
+    "parseKeyName:",
+    "valueWithQTTimeRange:",
+    "contentColor",
+    NULL,
+    "_moveParent:andExpandPanel:toFrame:",
+    "_allAttributeKeys",
+    "_setLockingFocus:",
+    "shouldDelayWindowOrderingForEvent:",
+    "_otherMenuItemForAttributeName:",
+    "_CGSinsertWindow:withPriority:",
+    "shouldAntialias",
+    "_descriptorWithNumber:",
+    "removeIndexesInRange:",
+    NULL,
+    "usesGroupingSeparator",
+    "setJavaScriptEnabled:",
+    "contentsTransform",
+    "metadataQuery:replacementValueForAttribute:value:",
+    "toolbarDefaultItemIdentifiers:",
+    "setSubIndex:",
+    "setPropertyList:forType:",
+    "_numberEnumerator",
+    "addIndex:",
+    "_labelColorIndex",
+    "_preparePredicate:",
+    NULL,
+    "view:customToolTip:frameForToolTipWithDisplayInfo:",
+    "_setCRLSigningUsage:",
+    "buildOrderByClauseWithSortDescriptors:",
+    "addObjectToArray:",
+    "_deallocatePPDStuff",
+    "_removeAllDrawersImmediately:",
+    "initFileURLWithPath:isDirectory:",
+    "accessibilityIsIgnored",
+    "setAnimationCurve:",
+    "adjustPosition",
+    "restoreCustomOutputPortStates:fromState:",
+    "setBackingType:",
+    "_parseCharacterAttributes2",
+    "_initContent:styleMask:backing:defer:contentView:",
+    "addAppleUseCoreUIObject:",
+    "label",
+    "initWithTextureTarget:textureInternalFormat:textureMaxMipMapLevel:pixelsWide:pixelsHigh:",
+    "_audioNodeFormatDescriptionDidChangeFromPropertyListener",
+    "offsetControlType:byTime:byValue:keyFrame:inTimeLine:",
+    "_markAsExplicitlyIncluded:",
+    "encodeDataObject:",
+    "contentRectForString",
+    "removeAllPopupViews",
+    "focusView",
+    "markOneShot",
+    "_fontPanelRemoveCollectionSheet:returnCode:contextInfo:",
+    "handleRollOverAtPoint:",
+    "newLegalColorSwatchHeightFromHeight:",
+    "_setKeyWithoutLocalizedKey:",
+    "advanceToUnicodeString",
+    "closeFullscreenWithEffect:",
+    "_encodeIntValuedMapTable:withCoder:",
+    "transactionDidBegin",
+    "initWithCountryCode:identifier:label:insertPopups:andInputController:",
+    "threadPriority",
+    "_windowWillOrderOut:",
+    "clearColor",
+    "separateWindowForPerson:",
+    "_scriptingAddObjectsFromSet:toValueForKey:",
+    "_incrementSelectedSubfield",
+    "_setObjectID:",
+    "_readSelectionFromUnarchiver:toPoint:",
+    "setVerticalScroller:",
+    "_popupHeightIsFlexible",
+    "decodeInt64ForKey:",
+    "_getHintString:",
+    "_requestHiddenState:",
+    "shouldLinkItemAtPath:toPath:",
+    NULL,
+    "fieldDescriptions",
+    "getICMDecompressionOptions:pixelBufferAttributes:forVideoConnection:",
+    "isInputBottomLineParams",
+    "removeTable",
+    "removeAllObjectsWithTarget:",
+    "registerClassDescription:",
+    "_printVerboseDebuggingInformation:",
+    "_getUnmodifiedCharacters:length:fromEvent:",
+    NULL,
+    "appendCharacter:",
+    "_postEvent:",
+    "ab_StringByMakingNameUnique",
+    "_setCertAuthorityIsCertAuthority:",
+    "updateSlideshowButtonWithPlaying:",
+    NULL,
+    "_addInternalRedToTextAttributesOfNegativeValues",
+    "tableView:shouldSelectTableColumn:",
+    "componentAddNotification:",
+    "_loadIconlessMenuContentsIfNecessary",
+    "loadCache:fromFile:",
+    "resumeAnimation",
+    "_initWithName:",
+    "selectFarthestRangeForward:",
+    "baseKeyFrameIndexAtTime:inTimeLine:",
+    "objectForCacheKey:",
+    "initWithSortDescriptors:inScope:",
+    "intercellSpacing",
+    "contextWithBitmap:rowBytes:bounds:format:",
+    "insertionReplaces",
+    "initFromPList:target:andIdentifier:",
+    NULL,
+    "_tooltipForColorPicker:",
+    NULL,
+    "defaultExpandOutlineItem:",
+    "_labelOnlyModeRectForItemAtIndex:inBounds:",
+    NULL,
+    "setContentMinSize:",
+    "_selectedNodesaIncludingDirectory:",
+    "action",
+    "_didChangeValuesForArrangedKeys:objectKeys:indexPathKeys:",
+    NULL,
+    "crosshairCursor",
+    "drawLineFromPoint:toPoint:",
+    "_setProgress:",
+    "_stealSharedPreviewViewForURL:",
+    "drawPushButton:inContext:",
+    "safeURLFromURL:",
+    "_resizeAccordingToTextView:",
+    "closing",
+    "__oldnf_copyToUnicharBuffer:saveLength:",
+    "deleteToEndOfParagraph:",
+    "defaultTimeZone",
+    "_getCommonTypeFor:",
+    "nextPage:",
+    "_getConvertedDataFromPasteboard:",
+    "openUntitledDocumentOfType:display:",
+    "importUnlock",
+    "_discardEventsForTrackingArea:",
+    "layoutStateDidChange",
+    "resolveClassMethod:",
+    "discardEventsMatchingMask:beforeEvent:",
+    "setCurrentDirectoryNode:",
+    "shouldDisplay",
+    "_issuePropFindAtPath:withDepth:lookingForProps:includingParent:",
+    "_setupForWindow:",
+    "apply:arguments:options:",
+    "runModalForIdentities:message:",
+    "_currentTableCellIsPlaceholder",
+    "_reloadInspector",
+    "_setStartSubelementFromDescriptor:",
+    "accessoryView",
+    "setDirection:",
+    "dataReferenceWithReferenceToData:name:MIMEType:",
+    NULL,
+    "layoutToFitInIconWidth:",
+    "userKeyEquivalentModifierMask",
+    "arrangedObjects",
+    "_usingAlternateHighlightColorWithFrame:inView:",
+    NULL,
+    "_parseText1Full",
+    "stopSequenceGrabber",
+    NULL,
+    "setMaxRows:",
+    "setNextAction:forDocument:",
+    NULL,
+    "endContainer",
+    "_addPersistentStore:identifier:",
+    NULL,
+    "processEndEntity:",
+    "updateOutlineSelection",
+    "initWithInitialSearchRow:totalRows:forView:",
+    "resolveResourceAndInvoke:",
+    NULL,
+    "setAlignment:",
+    "objectController",
+    "transformContext:forBox:",
+    "_setTrue:",
+    "accessibilitySizeAttribute",
+    "canFindHoleForLen:",
+    "_singleMutableArrayValueForKeyPath:",
+    "_setCurrentChildOperation:",
+    "_glyphDrawsOutsideLineHeight:",
+    "name",
+    "accessibilityTabsAttribute",
+    "setRate:",
+    "snapshotDate",
+    "_drawFrame:",
+    "wouldUseVisualContext",
+    "_computeInv",
+    "_accessibilityShowMenu:",
+    "_adjustedFrameFromDefaults:",
+    "typefaceInfoForPostscriptName:",
+    "_registerForQueryStateChangeNotifications:",
+    "initWithRTFD:documentAttributes:",
+    NULL,
+    "nts_PredicateMatchesRecord:",
+    "connection:handleRequest:",
+    "_autoComplete:",
+    "executionModeWithIdentifier:",
+    "tabKeyTraversesCells",
+    "__removeFromSelection:context:",
+    "setShowsAttributeFilter:",
+    "_windowTitlebarTitleMinHeight",
+    "addClassNamed:version:",
+    "_expandButtonClicked:",
+    "aCellIsPlayingInView:",
+    "fillObjCType:count:at:",
+    "_setValue:forInputkey:forPort:",
+    "ab_timeIntervalSinceToday",
+    "_refreshLinkedDevicesAttribute",
+    "_addParent:",
+    "registerView:name:",
+    "replacementClassForClass:",
+    "registerLayer:",
+    "helpButtonClicked:",
+    "attributedStringWithAttachment:",
+    "setPersistentStoreCoordinator:",
+    "setContentView:",
+    "ramNodeForResolution:uid:",
+    "_setWindowOriginOffsetWhenHidingHint:",
+    "stopRendering",
+    "_importThreadFinished",
+    "setAllowsAnimatedImageLooping:",
+    "_resetModificationDate",
+    NULL,
+    "_getInputBottomLineParams",
+    "showXcodeHelp:",
+    "uniqueKey:",
+    "evaluateStatus",
+    "_setKeyboardLoopNeedsUpdating:",
+    NULL,
+    "encodeSize:",
+    "proxy",
+    "_setupDNSNames:inCEGeneralNames:",
+    "_finalize_QCPlugInPatch",
+    "setLineScroll:",
+    "applicationLaunched:handle:",
+    "willPresentError:",
+    "diskLabelValues",
+    NULL,
+    "values:forResolutions:withCount:fromArrayOrNumber:",
+    "_endDrawView:",
+    "swapIndex:withIndex:",
+    "_atStartOfTextTable:atIndex:",
+    "_document:shouldClose:forScriptCommand:",
+    "selectedTextAttributesForCharacterAtIndex:effectiveRange:",
+    "connections",
+    "endFetchAndRecycleStatement:",
+    "_scrollInProgress",
+    "_userDeselectRow:",
+    "_drawClockAndCalendarWithFrame:inView:",
+    NULL,
+    "itemArray",
+    "_setConnectedPort:",
+    "implClassForPublicRecordClass:",
+    "_doTypeSelectNodeInDirectory:withSearchString:visitedNodes:expandedNodesToVisit:recursively:",
+    "stringByAbbreviatingWithTildeInPath",
+    "_crunchyRawUnbonedPanel",
+    "setTitleWithRepresentedObject:",
+    NULL,
+    "doCancelCrop:",
+    "gState",
+    "abortModal",
+    "trackingNumber",
+    "_finishPrintingDocumentsInContext:success:",
+    "initWithContainerSize:",
+    "accessibilityIsGrowAreaAttributeSettable",
+    "isMemberOfClassNamed:",
+    NULL,
+    "_runLoopModesForInvalidCursorRectsObserver",
+    "attributedTitle",
+    "_setDocumentWindow:",
+    "defaultClosestPixelFormat:withColorSpace:",
+    "registerExternalData:forObjectID:options:",
+    "statusImageForPerson:",
+    "coveredCharacterCacheData",
+    NULL,
+    "initToFileAtPath:append:",
+    "canGoToPreviousPage",
+    "removeConnection:fromRunLoop:forMode:",
+    NULL,
+    "initWithRole:parent:marker:",
+    "_keys",
+    "arrowKeyDown:withModifier:",
+    "imageRepClassForFileType:",
+    "setCacheUsedByProxyJpegData:",
+    "_itemChanged",
+    "_deleteFileAsnyc",
+    "newViewForToolbar:inWindow:attachedToEdge:",
+    "_setTrackingRect:inside:owner:userData:useTrackingNum:",
+    NULL,
+    "_saveQueryButtonClick:",
+    "SCTArrayByOrderedIntersectionWithArray:",
+    "applicationWillUnhide:",
+    NULL,
+    "generateLimitIntermediateInContext:",
+    NULL,
+    "ISS_encodingForIANACharSetName:",
+    "autoPlayDelay",
+    "_adjustSearchButtonCellImages::",
+    "_prepareSubstringWith:wildStart:wildEnd:",
+    "orderFrontListPanel:",
+    "_isTitleHidden",
+    "addPointer:",
+    NULL,
+    "imageRectInRuler",
+    "usesSignificantDigits",
+    "CA_stringByAbbreviatingWithTildeInPath:",
+    "writeBaselineOffset:",
+    "initWithSelectedGroup:addedToGroup:deletedPeople:updatedPeople:updatedPeopleProperties:addedPeople:mergedIntoGroups:addressBook:",
+    "_setLabelViewCount:",
+    NULL,
+    "_setLastSnapshot:",
+    "_maxWidth",
+    "abortImportVisibleCells",
+    "_wantsToActivate",
+    "hitTestForRect:inCellFrame:ofView:",
+    "previewView:willLoadPreviewForDocumentURL:",
+    "createImageFromURL:",
+    "vertBlur16ROI:destRect:",
+    "showsFirstResponder",
+    NULL,
+    NULL,
+    "setNumberOfMajorTickMarks:",
+    "typeForContentsOfURL:error:",
+    "startOffset",
+    "makeKeyAndOrderFront:",
+    "_doUserSetAttributes:",
+    NULL,
+    "_setOwner:",
+    "_obtainPermanentIDsForObjects:withContext:error:",
+    "currentMode",
+    NULL,
+    "_setPasswordStrengthTitleToolTip:",
+    "expressionIsBasicKeypath:",
+    "_getCounterpart",
+    "_plugin",
+    "setRepeatCount:",
+    "_updateLastEditingAndFocusRingFrame",
+    NULL,
+    "_focusRingClipAncestor",
+    "pageIsLeftOfAPair:",
+    "initWithPredicate:",
+    NULL,
+    "cropRectWithoutZoom",
+    "nts_RemoveSubgroup:",
+    "willRemoveFromTableView:",
+    "_setOrderDependency:",
+    "_disableMovedPosting",
+    "controllerBarHeight",
+    "mergedSimilarMultiValuesIn:forProperty:changes:",
+    NULL,
+    "nodeDidAddToGraph:",
+    "localizesFormat",
+    "_recursiveGainedDescendantThatOverridesNeedsDisplay",
+    "pageSizeForPaper:",
+    "activeTimeLineIndices",
+    "displaysTooltips",
+    "recursiveContainsGroup:",
+    "dictionaryRepresentationOfPersonAtRow:resultsView:",
+    "selectNavPopupMenuItemWithName:type:",
+    "colorPanelWillEndModal:",
+    "cancelAllQueries",
+    "distributionValueForProperty:person:",
+    "_calculateTotalScaleForPrintingWithOperation:",
+    "setBgColor:",
+    "selectionRectRemoved:",
+    "setLenient:",
+    NULL,
+    "animatedGifsCache",
+    "_createNonExecutableFilterWithKernelFile:filterDescription:",
+    "_unaffixedMarkerTitle",
+    "selectLayer:extendSelection:",
+    "getMoreInput",
+    "updateThumbnailUsingQueue:pool:",
+    "_relativeStartingDayForDateOptionType:",
+    "paddingCharacter",
+    "beginSheet:modalForWindow:modalDelegate:didEndSelector:contextInfo:",
+    "_unpackKeyboardEventRef:",
+    "sizeOfTitlebarButtons",
+    "displayLayer:",
+    "initWithObject:animationGroup:",
+    "_performDragFromMouseDown:",
+    "_accessibilityCorrectlyParentedCells:",
+    "_NSNibObjectIDForUIItemIdentifier:",
+    "_hasRecordsOfType:",
+    "_itemLayoutChanged",
+    "stringByStandardizingPath",
+    NULL,
+    "keyPathsForValuesAffectingAppleUseCoreUI",
+    "_operatorsForAttributeType:",
+    "pathContentOfSymbolicLinkAtPath:",
+    "editedImageDidChanged",
+    "_noise1d:",
+    "handleCommandEvent:withReplyEvent:",
+    "_beginListeningForDeviceStatusChanges",
+    "setStyleFromArray:",
+    "horizBlur4ROI:destRect:",
+    NULL,
+    "isWindowLoaded",
+    "setIsOnRightHandSide:",
+    "canCreateDirectories",
+    "_DAVRequestProxyAuthentication:ISS_DAVRequest:requestURL:usingHttps:",
+    "_uninstallPending",
+    "_setSelectedCell:atRow:column:",
+    "drawWellInside:",
+    "_setTruncatesLastLine:",
+    NULL,
+    "_notifyOfUpdatedDisplayWithImage:",
+    NULL,
+    "_setNewPreferedColumnWidth:",
+    "_transactionWithRequest:synchronousFlag:delegate:",
+    "didCommandBySelector:client:",
+    "_displayIfNeeded",
+    "_setParent:",
+    "setInputCGImage:",
+    "documentClassForType:",
+    "performActionForAccessibleChildAtIndex:",
+    "_sizeDownIfPossible",
+    NULL,
+    "_changeMinColorPanelSizeByDelta:compareWithOldMinSize:oldMinSize:setWindowFrame:",
+    NULL,
+    "validateMipmapImage",
+    "imageNamed:ofType:inBundle:",
+    NULL,
+    NULL,
+    "availableBackups",
+    NULL,
+    "_mapNode:toEntityInModel:",
+    "_syncToChangedToolbar:toolbarReplacedAllItems:",
+    "accessibilityCharacterRangeForLineNumber:",
+    "contentSizeForFrameSize:hasHorizontalScroller:hasVerticalScroller:borderType:",
+    "noteNumberOfRowsChanged",
+    "initWithUnsignedChar:",
+    "initImageCell:",
+    "showsProgressPanel",
+    NULL,
+    "_refreshAttributes",
+    NULL,
+    "setControlsFixed:forKeyFrame:inTimeLine:",
+    "_accessibilityMinValue",
+    "setOffset:",
+    "accessibilitySetMainAttribute:",
+    "_labelAlignment",
+    "_isHoveredPart:",
+    "_recalculateUsageForTextContainerAtIndex:",
+    NULL,
+    "dynamicToolTipStringAtPoint:trackingRect:",
+    "setCanGoBack:",
+    "insertColumn:withCells:",
+    NULL,
+    NULL,
+    "_invalidateDisplayIfNeeded",
+    "unhook",
+    "invalidateObjectValueInObject:",
+    NULL,
+    "encodingScheme",
+    "_versionIdentifiersAsArray",
+    "initWithObject:key:value:",
+    "_initWithWindow:",
+    "widthOfString:",
+    "setAllowsGroupSelection:",
+    "selectNextTabViewItem:",
+    "initWithAdapter:",
+    "outputImageProviderFromTextureWithPixelFormat:pixelsWide:pixelsHigh:name:flipped:releaseCallback:releaseContext:colorSpace:shouldColorMatch:",
+    "setAlternateImage:forSegment:",
+    "_handleApplyValueError:forBinding:canRecoverFromErrors:handleErrors:typeOfAlert:discardEditingCallback:otherCallback:callbackContextInfo:didRunAlert:",
+    "SCTColumnDividerColor",
+    "setDTDKind:",
+    "accessibilityChildren",
+    "_initWithContentsOfFile:error:",
+    "_forceResetTexturedWindowDragMargins",
+    "_computeResizeableCustomItemViewersInRange:",
+    "_carbonWindowRefChangedVisibilityTo:",
+    "functionWithName:",
+    "_zapResultArray",
+    "_shouldResetCursorRects",
+    "appendElementClassDeclarationToAETEData:",
+    "setDepth:",
+    "togglePreview:",
+    "_initWithSharedKitWindow:rect:",
+    "initWithContainerClassID:key:mutableCollectionGetter:proxyClass:",
+    "_handleAEOpenDocuments:",
+    NULL,
+    "_adjustRectForFocusRing:atRow:",
+    "goToPageNoPush:",
+    "displaysWhenScreenProfileChanges",
+    NULL,
+    "_invalidateBlinkTimer:",
+    NULL,
+    "_defaultValueForAllowsTypeSelect",
+    "domain",
+    "_selectedSliceIndices",
+    "resumeRenderingPatch:",
+    "setConditionallySetsHidden:",
+    "initWithKeyFrame:",
+    "setLabel:forSegment:",
+    "URLToURI:",
+    "selectDistinct",
+    "defaultShadowColor",
+    "_createHoverChangeAnimation",
+    NULL,
+    "conjunction",
+    "isMultiThreaded",
+    "_recursiveRecomputeToolTips",
+    "itemsPerRow",
+    "_resetIncrementalSearchOnFailure",
+    "textAttributesForNil",
+    "setNotifyOnSelectionChanged:",
+    "containsIndexesInRange:",
+    "rectOfRow:",
+    "setDrawDragBoundries:",
+    "pixelsHigh",
+    "addDocument:",
+    "switchToActualSize:",
+    "accessibilityIsModalAttributeSettable",
+    "isPressed",
+    "hasDynamicDepthLimit",
+    "_openOldCollections",
+    "size",
+    "backgroundIKImage",
+    NULL,
+    "_currentActivation",
+    "menuDelegateChanged",
+    "registerImageBufferConverterClass:priority:",
+    "parentGroups",
+    "_propertyForKey:",
+    "createPixelBufferForManager:withFormat:bounds:colorSpace:options:",
+    "setLayer:",
+    "_propagateDownNeedsDisplayInRect:",
+    "setAttribute:values:",
+    "setFileListOrderedByFileProperty:ascending:caseSensitive:",
+    "_connections",
+    "setImageFrameStyle:",
+    "_doSelectIndexes:byExtendingSelection:indexType:funnelThroughSingleIndexVersion:",
+    "mkpathRequestWithSession:URI:token:",
+    "spellServer:findMisspelledWordInString:language:wordCount:countOnly:",
+    "usesDataSource",
+    "_initWithImage:options::",
+    "canAdd",
+    "enqueueWithTarget:",
+    "parameterPorts",
+    "dictionaryRepresentationOfGroupAtRow:resultsView:",
+    "stringWithContentsOfFile:encoding:error:",
+    "textAttributesForZero",
+    "PDFViewOpenPDF:forRemoteGoToAction:",
+    "scriptingIsGreaterThanOrEqualTo:",
+    "pendingAttributes",
+    "setMessageType:",
+    "rangeOfCharacterFromSet:options:range:",
+    "attributesOfItemAtPath:error:",
+    "_updateOkButtonEnabledStateAndErrorMessage",
+    "_transformDstRect:clipRect:",
+    "addComponentByID:",
+    NULL,
+    "_sendDelegateDidMouseDownInHeader:",
+    "convertPointFromBase:",
+    "concat",
+    "_scriptingCoerceValue:forKey:",
+    "didHide",
+    "showcaseRect:window:",
+    "_scriptingObjectWithName:inValueForKey:",
+    "parser:didEndMappingPrefix:",
+    "unregisterClient:",
+    "_evenlySpacedRectForItemAtIndex:inBounds:",
+    "_initHTTPRequest",
+    "children",
+    "resignKeyWindow",
+    "_keyForLocalizedKeyDictionary",
+    "beginPrologueBBox:creationDate:createdBy:fonts:forWhom:pages:title:",
+    "setThousandSeparator:",
+    "voiceIdentifierForVoiceCreator:voiceID:",
+    "willChangeExpandedNodes",
+    "stop",
+    "releaseCGLContext:",
+    "connectToBackgroundLayer",
+    "_willCloseWindow:",
+    "_displayProfileChanged:",
+    "currentContextDrawingToScreen",
+    "engine",
+    "_taskBeginNotification:",
+    "_registerForWindowOrderNotifications:",
+    NULL,
+    "initWithMetadataManager:andForceRebuild:",
+    "_PFPlaceHolderSingleton",
+    "propertyTypesWithAddressBook:acquireLock:",
+    "gotoPreviousPage",
+    NULL,
+    "compositeToPoint:fromRect:operation:",
+    "initFromImage:rect:",
+    "_convertersCond",
+    "isExpansionToolTipVisible",
+    "defaultFocusRingType",
+    "jpegRepresentationOfItem:withUID:",
+    "_imageRepWithData:hfsFileType:extension:",
+    "_setMinimizeOnDoubleClick",
+    "uniqueNewCollectionName",
+    "drawThumbnailIndex:inRect:thumbSize:forFont:attributes:",
+    "indexOfItemWithTag:",
+    "sharedColorPanel",
+    "_imagesWithData:zone:",
+    "_optionsForShowingAsSheet:",
+    "accessibilityMenuFormRepresentationHasSubmenuWithItems",
+    NULL,
+    "_characterRangeCurrentlyInAndAfterContainer:",
+    "_scriptingIndexOfObjectWithUniqueID:inValueForKey:",
+    "_setUnprocessedInsertion:",
+    "_itemRemovalCompleted:",
+    "developmentLocalization",
+    "tableView:didChangeToSortDescriptors:",
+    "_takeFocus",
+    "_generateMulticlauseStringInContext:",
+    "validateUserInterfaceItem:",
+    "_createdDate",
+    "setDrawsShadows:",
+    "isKindOfClassNamed:",
+    "dstDraggingMovedToPoint:draggingInfo:",
+    "_registerObject:withID:",
+    "isRuleGrouping",
+    "isSelected",
+    "idling",
+    "actionCell",
+    "deleteRule",
+    NULL,
+    "element:hasOverriddenAttribute:",
+    "setServer:",
+    "_setNotes:",
+    "CIImageRepresentation",
+    "handleRequest:sequence:",
+    NULL,
+    "wipeMetaDataDirectory",
+    "_retainTrackingTag:",
+    NULL,
+    "setRecordDelegate:",
+    "_trackMenuSelection",
+    "enlargedBounds:withPoints:",
+    "initWithBitmapDataPlanes:pixelsWide:pixelsHigh:bitsPerSample:samplesPerPixel:hasAlpha:isPlanar:colorSpaceName:bytesPerRow:bitsPerPixel:",
+    "getNodeAsResolvedNode:",
+    NULL,
+    "thumbnailAtPoint:",
+    "_alternateDown::::",
+    "createCommandInstanceWithZone:",
+    "prepareChildsToDie",
+    "isSupportedOnContext:",
+    "_persistentStoreForIdentifier:",
+    NULL,
+    "fetchIndex",
+    "_sizeToFitView:",
+    "_hasPublicUsername",
+    "favoriteAttributesNames",
+    "indexPathWithIndex:",
+    "parseSeparatorEqualTo:",
+    "setRowForUpdate:",
+    "_zoomButtonOrigin",
+    "_availableBindingsWithFontBindingsFiltered:",
+    "keyCount",
+    "setAutostarts:",
+    "_singleValueForKeyPath:operationType:",
+    "setHidesOnDeactivate:",
+    "sharedApplication",
+    "_crlSigningUsage",
+    "threadPoolWithMaximumThreadCount:",
+    "contentPlacementTag",
+    NULL,
+    "_setState:forPorts:",
+    "modelByMergingModels:forStoreMetadata:",
+    "_forSRSpeechObject:setObject:forProperty:usingDataSize:",
+    "canAddChild",
+    "tryLock",
+    "setParsesCocoaElements:",
+    "getFiltersInCategory:",
+    "setTag:forSegment:",
+    "recordToManyInsertsForObject:withOperation:",
+    "_performToggleToolbarShown:",
+    "deactivateForDocumentAtIndex:usingTransitionImage:atFrame:",
+    "isImpossibleCondition",
+    "homePageFieldPresent",
+    "insertRulers",
+    "reverseObjectEnumerator",
+    "_assignObjectIds",
+    "_listClassForListRange:",
+    "newBatchRowAllocation:count:forSQLEntity:withOwnedObjectIDs:andTimestamp:",
+    "imageDimsWhenDisabled",
+    "_vCardKeyForAddressLabel:vCard3:",
+    "isFilePropertyDisplayed:",
+    "arrangeObjects:",
+    "_setExtendedKUECodeSigningApple:",
+    "markShadowDirtyRect",
+    "currentAnalysisDidCreateNewWindow:",
+    "frameLength",
+    "_rangeOfSuffixFittingWidth:withAttributes:",
+    "_midnightPassed",
+    NULL,
+    "_initWithCGSRegion:",
+    NULL,
+    "auxiliaryTextField",
+    "selectAllItems",
+    "_addToLibxml2TreeRepresentationWithDoc:dtd:context:",
+    "_bindingInfos",
+    "dateByNormalizingToGMT:",
+    "_updateLayerAnchorPointForFlippedSuperview",
+    "initMultiStatusRequestWithURL:method:responseClass:",
+    "_saveImageDataToDisk:",
+    "accessibilitySetValue:forAttribute:",
+    "resetPDFTooltips",
+    NULL,
+    "useOptimizedDrawing:",
+    "wantsToDelayTextChangeNotifications",
+    "initWithInfos:",
+    "setBacking:releaseCallback:releaseInfo:",
+    "becomeKeyWindow",
+    "indexFoundMatches:done:",
+    "prependTransform:",
+    "drawMenuItemBackgroundWithHighlight:inRect:withClipRect:",
+    "_rectangularCharacterRangesForGlyphRange:from:to:granularity:",
+    "initWithXMLNode:objectID:",
+    "_loadConfigPanel:",
+    "_selectNameFieldContentsExcludingExtension",
+    "_scrollPoint:fromLayer:",
+    "stringForRange:",
+    "_setWords:inDictionary:",
+    "contactIndex",
+    "commandDisplay",
+    "createCGImage:fromRect:",
+    "initWithWindow:withParent:",
+    "_beginToolbarEditingMode",
+    NULL,
+    "setDatePickerMode:",
+    "valueTransformerForName:",
+    NULL,
+    "parseABUID",
+    "_descriptorByTranslatingDictionary:ofType:inSuite:",
+    "setTruncatesLastVisibleLine:",
+    "scriptingProperties",
+    "_filterList",
+    "_setValueWithSelector:",
+    "_doDelayedAutocomplete",
+    NULL,
+    "_hasSelectedColumn",
+    "toggleBaseWritingDirection:",
+    NULL,
+    "updatePatchWithDefaultValues",
+    "menuHasKeyEquivalent:forEvent:",
+    "willRead",
+    "_vCardKeyForEmailLabel:",
+    "deserializePListValueIn:key:length:",
+    "_nonNilArrayValueWithSelector:",
+    "timeStringFromTimeInterval:longForm:",
+    "_scheduleChangeNotification",
+    "_willPresentSavingError:forOperation:url:type:overwriteRetryingInfo:",
+    "_saveLayout",
+    "_forceInsertItem:atIndex:",
+    "_drawGlyphsForGlyphRange:atPoint:parameters:",
+    "initWithFilterInfo:owner:",
+    "color",
+    "setShowsProgressPanel:",
+    "initWithString:",
+    "_clearOriginalSnapshotAndInitializeRec:",
+    NULL,
+    "fixAddressRulersInRange:",
+    "_diskCacheCreateLRUList:",
+    "displayRectIgnoringOpacity:inContext:",
+    "_eventWithCGSEvent:",
+    "searchBase",
+    "setRawFormat:",
+    "copyPolicyForOid:",
+    "_setPurgeable:resourceAtIndex:",
+    "_currentInputFilepath",
+    "_openPageInDefaultBrowser:",
+    "iconName",
+    "extractYear:yearlessDate:fromDate:",
+    "_unlockFirstResponder",
+    "layoutDocumentView",
+    "_dateUnitMultiplierForSearchDateSpan:",
+    NULL,
+    "clearAttributesCache",
+    "tryLockForWriting",
+    NULL,
+    NULL,
+    "_shouldDrawBezel",
+    "sharedSupportPath",
+    "setupViewWithOptions:modal:",
+    NULL,
+    "startSpinning",
+    "isPaged",
+    "setTime:forKeyFrame:controlType:inTimeLine:",
+    NULL,
+    "clearGlyphCache",
+    "setFrame:animate:fromLayout:toLayout:paneWidths:numberOfPanes:",
+    NULL,
+    "terminateForClient:",
+    "_drawContinuousCapacityWithFrame:inView:",
+    "_saveInitialMenuPosition",
+    "importVisibleCellsPriority",
+    NULL,
+    "_defaultButtonTitle",
+    NULL,
+    "setMembersSubrowDelegate:",
+    "cacheManager",
+    "_updateParagraphStyleCache:",
+    "selectionContainsSwappedNameEntries",
+    "maximumRecents",
+    "setTitleWithRepresentedFilename:",
+    NULL,
+    "_rangesForMultipleTextSelectionPasteAtIndex:fromPasteboard:",
+    "drawImage:atPoint:fromRect:",
+    "_evaluateTrust",
+    "pathComponentCellAtPoint:withFrame:inView:",
+    "trackMouse:forAnnotation:",
+    "orderWindow:relativeTo:",
+    "_simpleDescription",
+    "floatForKey:",
+    "_accessibilityUIElementPath",
+    "didFinishColumnScrollWithHelper:",
+    "isWindow",
+    "fadeHUDOut",
+    "selectionZoomRect",
+    "insertsNullPlaceholder",
+    "_rangesForUserBaseWritingDirectionChange",
+    "_indicatorImage",
+    "setPhoneString:",
+    "setAction:",
+    NULL,
+    "_createAndPostChangeNotification:withDeletions:withUpdates:withRefreshes:",
+    "searchFieldCellOrControlDidClearRecents:",
+    "_keyViewPrecedingAccesoryView",
+    "itemWithTag:",
+    "imageByCompositingOverImage:",
+    NULL,
+    "hideButton:",
+    "outlineColumnGroupForRow:tableColumn:",
+    "_canDrawOnBackgroundThread",
+    "_doOrderWindow:relativeTo:findKey:forCounter:force:",
+    "numberOfSlideshowItems",
+    "logError:",
+    "setNegativeFormat:",
+    "_isWord:inDictionary:",
+    "masksToBounds",
+    "beginSetup",
+    "setThreadArgument:",
+    "setPrimitiveModificationDateYear:",
+    "_DAVRequestAddAuthentication:ISS_DAVRequest:requestURL:",
+    "labelFont",
+    NULL,
+    "_stepperCell",
+    "_setupButtons",
+    NULL,
+    "drawRoundedRect:radius:strokeColor:fillColor:lineWidth:",
+    "drawWithFrame:inView:characterIndex:",
+    "_markerTitle",
+    "isBeginMark",
+    "_modifySelectionIndexes:atIndex:addOrRemove:sendObserverNotifications:",
+    "sharedAVManager",
+    "_attributedStringForEditing",
+    "slideshowItemAtIndex:",
+    "synchronizeWindowTitleWithDocumentName",
+    NULL,
+    "launchAppWithBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifier:",
+    "classNamed:",
+    "_layerTreeDescription",
+    "sharedCompositionRepository:",
+    "_resetEvaluationErrorNumber",
+    "CA_copyRenderValue",
+    "printerFont",
+    "_fetchOrderedByFileProperty:orderedAscending:",
+    "_launchOneThread",
+    "_endSessionUpdates",
+    "_titleCellHeight:",
+    "initWithLength:",
+    "setSubmenu:forItem:",
+    "updateGridSize",
+    "frameRectForContentRect:styleMask:",
+    "initUnlockWithSession:path:lockToken:",
+    "error",
+    "resetMeasurements:forResolutionData:withWidth:height:onlyIntegerSizes:",
+    "objectSpecifierWithDescriptor:",
+    "freeSerialized:length:",
+    "setUsesFontLeading:",
+    "timer:",
+    "loadSamplePDF",
+    "_processLibXML2TextNode:content:",
+    "defaultTitleFont",
+    "setCriteriaSlices:anyAttributeString:",
+    "pixelFormatCMYK16",
+    "loadPanelNamed:",
+    "stringDrawingTextStorage",
+    NULL,
+    "_configureStreamDetails:",
+    "fileGroupOwnerAccountName",
+    "colorUsingColorSpaceName:",
+    "setCount:",
+    "_lastEventRecordTime",
+    "setExpanded:",
+    "_dosetTitle:andDefeatWrap:",
+    "_setInitialFirstResponder:autoGenerated:",
+    "_stringByTranslatingFSSpecDescriptor:toType:inSuite:",
+    NULL,
+    "_loadAndRestoreCurrentBrowsingNodePath:selectedNodes:",
+    "RTFD",
+    "computeButton",
+    "_drawFrameRects:",
+    "_nominalCharacterCoverage",
+    "ISS__ay_performSelector:withObject:inThread:",
+    "setErrorProc:",
+    "_stringForEditing",
+    "titleCell",
+    "session",
+    NULL,
+    "_disposeSurface",
+    "openDocumentWithContentsOfFile:display:",
+    "_loadQTKit",
+    "panelType",
+    "_shouldOpenInlinePreview",
+    "_incrementBy:startingAtIndex:",
+    "periodicFlushRoutine:",
+    "drawRubberBandWithClipRect:",
+    "selectItemWithTag:",
+    "localName",
+    NULL,
+    "setHardInvalidation:forGlyphRange:",
+    "_setupUI:",
+    "_oldValueForKey:",
+    "encodeVersionWithCoder:",
+    "isCancelled",
+    "big:",
+    "_makeModalWindowsPerform:",
+    NULL,
+    "windowBackgroundColor",
+    "sessionIsReadyToBuildAndRunGraph:",
+    "setPrimitiveFirstName:",
+    "stopTextTimer",
+    "setProfileView:",
+    "initWithInstanceInfo:renderingMode:",
+    "scannerWithString:",
+    NULL,
+    "appendBezierPathWithArcWithCenter:radius:startAngle:endAngle:",
+    NULL,
+    "_resetOpacity:andForceSetColor:",
+    "isConnected",
+    "objectAtIndex:effectiveRange:runIndex:",
+    "contentSeparatorColor",
+    "endPage",
+    "drawNoteIcon:inContext:",
+    "attributesWithIdentifier:",
+    "mouseDownOutsideSelection:",
+    "installQLViewFromDataSource:",
+    "createNSBitmapImageRepForManager:withOptions:",
+    "resortCachedChildren",
+    NULL,
+    NULL,
+    "_sideMargin",
+    "setInitialDirectory:",
+    "_scaleImageSize:toFitInSize:",
+    "pathForSoundResource:",
+    "setControlsView:",
+    "drawDebugSchedulePriorityRanges",
+    "namesOfPromisedFilesDroppedAtDestination:",
+    "_enumeratedPredicateBindings:",
+    "addUniqueIdsMissingFromSet:toArray:forClass:prefetch:inAddressBook:",
+    "keychainSyncList",
+    "isRectVisible:onPage:",
+    "insertGlyphs:",
+    "capabilityMask",
+    "initWithContainerClassID:key:ivar:",
+    "setRowTemplates:",
+    "addressBookMetaKitDatabaseFileName",
+    "_uniqueNameOfChild:",
+    "_commitEditingOtherCallback:",
+    "_needsRecalc",
+    "mouseDownOnCharacterIndex:atCoordinate:withModifier:client:",
+    NULL,
+    "_inputExtent",
+    "sendWillSendRequest:redirectResponse:",
+    "isTrustDisplayed",
+    "tileSize",
+    "targetOrigin",
+    "extraTextRectForBounds:",
+    "duplicatesForPeople:",
+    "_attributedStringForDrawing",
+    "setItem:",
+    "cachedHandleForURL:",
+    "certificateView",
+    "findPanel:",
+    "compressionOptionsWithDescription:",
+    "allKeysForObject:",
+    "view:willDisplayImage:",
+    "_doFirstPassForMapping:error:",
+    "_surfaceBounds",
+    "appendPropertyDeclarationsToAETEData:",
+    "updateOptionsWithVersion:",
+    "_hiddenExtension",
+    "configDataChangedSince:",
+    "_objectsPointer",
+    "getKeys:values:",
+    "setUserFont:",
+    "_enumeratedHiddenBindings:",
+    "predicateWithSubstitutionVariables:",
+    NULL,
+    "propertyListFromData:mutabilityOption:format:errorDescription:",
+    "setSpeechFinishedSuccessfully:",
+    NULL,
+    "foreignKeyForSlot:",
+    "addSelectionNoNormalize:",
+    "_shiftLeft:",
+    "accessibilityEncodeOverriddenAttributes:",
+    "setDisplayName:",
+    "_branchImageRectForBounds:",
+    "numberWithInt:",
+    "_computeDefaultMenuFormRepresentation",
+    "_valueForBindingWithoutResolve:mode:",
+    "illegalCharacterSet",
+    NULL,
+    "setTransactionDelegate:",
+    "freePageViewBounds",
+    NULL,
+    "_dimpleDoubleClicked:event:",
+    NULL,
+    "_isModal",
+    "gutterWidth",
+    "_labelForColorPicker:",
+    "ruleEditor:numberOfChildrenForCriterion:withRowType:",
+    "_specifierTestFromDescriptor:",
+    "stopPDFViewAnimation",
+    "undoRedo:",
+    "setShowsHiddenFiles:",
+    "_refreshSuspendedAttribute",
+    "attributeForKey:",
+    "_bezelTopPadding",
+    "_createStaticTextFieldWithStringValue:",
+    "_shouldStartTaskNamed:",
+    "saveCache",
+    "markViewedForRecordWithUniqueId:tryAgain:",
+    "removeRequestMode:",
+    "_moveLeftWithEvent:",
+    "_setFrameSavedUsingTitle:",
+    "isScalarProperty",
+    "numberOfItemsInMenu:",
+    "fileHandleWithStandardOutput",
+    "_criteriaDictionary",
+    "_writeAutosaveRecords",
+    "initWithRemoteLocation:addressBook:",
+    "willPopUpNotification:",
+    "imageFrameCount",
+    "textTimerFired:",
+    "setZoomRate:",
+    "_minYBorderRect",
+    "validModesForFontPanel:",
+    "mouseUp:inView:",
+    "_hasRetainedStoreResources",
+    "isNSArray__",
+    "_interpolationFunctionRefWithCallbacks:",
+    "recacheColor",
+    "editSmartGroup:",
+    "localizedCaseInsensitiveCompare:",
+    "persistence",
+    "_flipStateOfCellsInIndexSet:toState:",
+    "wrapCardRollOverAroundRects:count:",
+    NULL,
+    NULL,
+    "_hiddenOnLaunch",
+    "addContentObject:isPlaceholder:insertsNullPlaceholder:value:index:cellOrControl:",
+    "internalSaveTo:removeBackup:errorHandler:",
+    "selectedGroups",
+    "setSubCacheSizeIndex:",
+    "initWithURL:cachePolicy:timeoutInterval:",
+    "setDefaultBorderColor:",
+    "_getRow:column:nearPoint:",
+    "_dragCompletionTargets",
+    NULL,
+    "toManyRelationshipKeys",
+    "intAttribute:forGlyphAtIndex:",
+    "_handleKeyDown:inNode:",
+    NULL,
+    "_enabledStateWithMode:",
+    "initWithAdapterOperator:correlation:",
+    "_multipleValueForKey:atIndexPath:",
+    "_imagesFromIcon:inApp:zone:",
+    "selectTextAtRow:column:",
+    "_expandedNodesForObservedNode:",
+    "createDragProgressWindow:forRow:",
+    "cellIndexAtDocumentPosition:",
+    "selectionMechanismWasDismissed:",
+    "matrixInColumn:",
+    "formatString",
+    "maxBounds",
+    "_setupUI",
+    "setTexture:",
+    "setColumnAlias:",
+    "snapRotation:",
+    "_cancelPerformSelectors",
+    "accessibilitySetVisibleCharacterRangeAttribute:",
+    "_keyBindingManager",
+    "dictionaryWithObjects:forKeys:count:",
+    "encodeWithCoder:colorSpaceCode:",
+    "standardContentBorderThicknessForEdge:borderSize:styleMask:",
+    "minContentSizeForMinFrameSize:styleMask:",
+    "_setAllowsNonVisibleCellsToBecomeFirstResponder:",
+    "_performKeyEquivalent:",
+    "groupsController:outlineView:heightOfRowByItem:",
+    "initWithKey:ascending:selector:",
+    "tokenAttachment:doubleClickedInRect:ofView:atCharacterIndex:",
+    "pathNamesForRecords:singleCard:dataForAllRecords:",
+    "compositionPickerView:draggingEnteredComposition:sender:",
+    "_expand",
+    "_initUnlockForToken:",
+    "_finalScrollingOffsetFromEdge",
+    "newWithKey:object:",
+    "wasUpdated",
+    "createServerPortIfNeeded",
+    NULL,
+    "createImageFromCGImage:",
+    "typingAttributes",
+    "abStringByRemovingDotMac",
+    "IKIPSliderMouseUp:",
+    "_toggleInlineSlideshow",
+    "comboBoxCell:completedString:",
+    "_defaultIndicatorImage",
+    "_updateDrawsNothing",
+    "_markerPrefix",
+    "setSupportsDragAndDrop:",
+    "_document:didSave:contextInfo:",
+    "removeItemForTableView:pasteboard:operation:",
+    "fileManager:shouldProceedAfterError:",
+    "convertRect:fromPage:",
+    "data1",
+    "tellDelegateAboutJobResult:",
+    "previewView:willShowPreviewForURL:",
+    "_debug",
+    "popBundleForImageSearch",
+    "nextSibling",
+    "_errorWithCode:",
+    "variables",
+    "value",
+    "pixelFormatARGB8",
+    "stepForward:",
+    "toggleFontPanelShown:",
+    "inverseColumnName",
+    "isToMany",
+    "untrashedLeafFileLocationComponentWithLocator:",
+    "columnResizingType",
+    NULL,
+    "_hasFocusRing",
+    "setArguments:",
+    "formatterOfObject:",
+    "setImagingModeForcedToSharedSurface:",
+    "_copyImage",
+    "_swapToolbarItemViewerAfterView:",
+    "nts_Me",
+    "_initWithName:type:",
+    "rendererVersion",
+    NULL,
+    "_outputPorts",
+    "canSupportMinAndMaxForObject:",
+    NULL,
+    "magentaColor",
+    "startObservingPreviewNode:",
+    "_isOnePieceTitleAndToolbar",
+    "imageRepresentation",
+    "initWithColumnName:sqlType:",
+    "_web_removeFileOnlyAtPath:",
+    NULL,
+    "previewPanel:shouldOpenURL:",
+    "_latin1MappingTableWithPlatformFont:hasKernPair:",
+    "searchList",
+    "_willSelectComposition:",
+    "joinSemantic",
+    "_attributesToHighlightStyle:",
+    "setCurrentSession:",
+    "_isPoint:inDragZoneOfRow:",
+    "sendSuperEvent:",
+    "undoManagerForTextView:",
+    "copyLink:",
+    NULL,
+    "enterDisplayOperationForWindow:windowRegion:",
+    "_writeStringInRanges:toPasteboard:",
+    "_loadSuitesForJustLoadedBundle:",
+    "setControllerType:",
+    "_highlightColorForCell:",
+    "initWithName:stringValue:",
+    NULL,
+    "setFillColor:",
+    "displayIfNeeded",
+    "allElementsForDeviceID:",
+    "identity",
+    "_hasAnyObservers",
+    NULL,
+    "_tempHide:relWin:",
+    "setLastRenderedMipmapItem:",
+    "_bestSettingSimilarToSetting:exactMatch:",
+    "maxValue",
+    "_drawOverflowHeaderInRect:",
+    "timeModeWithIdentifier:",
+    NULL,
+    "setForeignEntityKeySlot:unsigned:",
+    "setKeyCell:",
+    "setMIMEType:",
+    "notANumberSymbol",
+    "_originalRowForUpdate:",
+    "setAllowsDirectoriesSearches:",
+    "nextEventForWindow:",
+    "_setDocumentViewAlignment:",
+    "_borderType",
+    "noteNumberOfItemsChanged",
+    "restoreParameter:from:",
+    "_updatePathLocationControl",
+    "propertyChanged:",
+    "_sizeToFitColumn:withSizeToFitType:",
+    "drawOverlays",
+    "_switchViewForToolbarItem:",
+    "nts_MemberUID",
+    "compositingOperation",
+    NULL,
+    "_parserableDateDescription:",
+    "itemIdentifier",
+    NULL,
+    "initWithGLContext:pixelFormat:vtable:options:",
+    "_executeAppleEvent:withMode:error:",
+    "browserDidScroll:",
+    "unregisterThread",
+    "tile",
+    "titleRectForBounds:",
+    "_createAttributeNameMapping",
+    "applyDecisions",
+    "selectedKnobColor",
+    "requiredMinSize",
+    "createAnnotationWithEvent:",
+    "pixelFormatRGBX8",
+    "sleepForTimeInterval:",
+    "updateIPhotoButtonWithAdded:",
+    NULL,
+    "_refreshInputSourceAttributesFromCallback",
+    "_removeConnectionFromOutput:",
+    "_setMenuOwner:",
+    "_sendDelegateWillDisplayCell:forColumn:row:",
+    "learnWord:",
+    "_registerProtocols",
+    NULL,
+    NULL,
+    "selectedCellInColumn:",
+    "initWithFormat:locale:",
+    "_drawDropHighlightOffScreenIndicatorPointingUp:atOffset:",
+    "setPathComponentCells:",
+    "startingRow",
+    "_provideNewViewFor:initialViewRequest:",
+    "arrayGrow:",
+    "_evilHackToClearlastLeftHitInWindow",
+    "encodePortObject:",
+    "_setUpLayerTreeSurface",
+    "imageWithNSImage:",
+    "_invalidateCursorRects",
+    "_willHideDisplayableView:",
+    NULL,
+    "rotation",
+    "deserializeBytes:length:atCursor:",
+    "_bezelTopOffset",
+    "_wantsPastedFiles:",
+    "URLProtocol:didCancelAuthenticationChallenge:",
+    "currentRunLoop",
+    "_conformsToProtocolNamed:",
+    "_surfaceWillGoAway:",
+    "atLeastOneMipmapItemIsValid",
+    "endSpecifier",
+    "setModifiedSmartGroup:",
+    "_setKeyboardFocusRingNeedsDisplayDuringLiveResize",
+    "removeExtraBackupsForInterval:endingOn:andUpdateList:",
+    "_maxYBorderRect",
+    "modifyFont:",
+    "startDraggingWithEvent:",
+    NULL,
+    "cookies",
+    "_glyphAdvancementCache:",
+    "setDateValue:",
+    NULL,
+    "dataFromRange:documentAttributes:error:",
+    "associatedViewFor:",
+    "_setCurrentListNumber:",
+    "drawSwatchInRect:",
+    NULL,
+    "sendBeforeTime:sendReplyPort:",
+    "objectsByEvaluatingSpecifier",
+    "_endEditingIfNecessaryWhenDeselectingRowRange:",
+    "_updateAutomaticRearrangementKeysPaths",
+    "notPredicateWithSubpredicate:",
+    "_setSurfaceBackedOpenGLContext:",
+    "CGSRegion",
+    "setTopColor:",
+    "mediaRetained",
+    "_unlockfeContext",
+    "_setUninstallPending:",
+    "removeThumbnail:",
+    "inputNeutralTemperature",
+    "writeKern:",
+    "PICTRepresentation",
+    "defaultAddressBookPreferencesFile",
+    "_setError:",
+    "abContainsCaseInsensitiveString:",
+    NULL,
+    "_findButtonImageForState:",
+    "_selectRow:",
+    "_format:withDigits:",
+    "allCustomPropertyValuesWithCustomProperty:",
+    "parentOperation",
+    "dataSourceRespondsToRequiredMethods:",
+    "setBuffer:",
+    "_setDoublePage:",
+    "decimalValue",
+    "_popUpMenu",
+    "setValidateSize:",
+    "setValue:forBinding:error:",
+    "direction",
+    "mounted:",
+    "argumentDescriptionFromName:implDeclaration:presoDeclaration:suiteName:commandName:",
+    "imageCropView:willReceiveDraggedImage:",
+    "imageIsImported",
+    "initWithPreviewView:",
+    "_processLibXML2TitleNode:",
+    "device",
+    "imageProxy",
+    NULL,
+    "_owningPopUp",
+    "initWithOperatorType:",
+    "replaceString:withString:range:options:inView:replacementRange:",
+    "setSelectionGranularity:",
+    "writeEscapedUTF8String:",
+    NULL,
+    "hasEditedDocuments",
+    "removeColumn:",
+    "_openExtrasPopup:",
+    "registerFilters",
+    "destinationModel",
+    "setOptimizableColumn:",
+    "_screenChanged:",
+    "indexSetWithIndex:",
+    "_hideControlsPanel",
+    "_registeredForChildNotifications",
+    "takeDoubleValueFrom:",
+    "_uninstallTrackingArea:",
+    NULL,
+    "imageWithImageProxy:",
+    "completionDelay",
+    "initWithRenderingContext:patch:",
+    "_newFirstResponderAfterResigning",
+    "_shouldUseTexturedAppearanceForSegmentedCellInView:",
+    NULL,
+    "wordList",
+    "setCurrentPage:",
+    "charactersIgnoringModifiers",
+    "abort",
+    "updateSearchHilightWithSearchString:",
+    "_endTableCellDefinition",
+    "_fastCStringContents:",
+    NULL,
+    "initMultiStatusRequestWithSession:method:path:responseClass:",
+    "_setAttributedString:",
+    "_previewPanel",
+    "stringWithFileSystemRepresentation:length:",
+    "canChooseNode:",
+    "setOpenGLLock:",
+    "_delegateRespondsTo_nextTypeSelectMatchFromRow",
+    "_drawTitlesForView:inRect:",
+    NULL,
+    NULL,
+    "_isTrackingAreaObject:",
+    "contentAtIndex:",
+    "restoreCachedImage",
+    "processImage:context:",
+    "buildPropertyDict:",
+    "fileWrappers",
+    NULL,
+    "componentsSeparatedByString:",
+    "_initLocks",
+    "_sizeTableColumnsToFitWithStyle:forceExactFitIfPossible:",
+    "_latin1MappingTable:",
+    NULL,
+    "nts_IsSubscribed",
+    NULL,
+    "resetDocumentState",
+    "markerWithRulerMarker:parent:",
+    "notifyDataIsReady",
+    "lastRequestMessage",
+    "setControlSize:",
+    "characterSetWithCharactersInString:",
+    "_registerInstance",
+    "encodingVersion",
+    "setConfigurationFromDictionary:",
+    "initWithEntity:propertyDescription:virtualForToMany:",
+    NULL,
+    "fileAttributes",
+    "CA_stringByStandardizingPath:",
+    "_loadMetadataFromDocument:",
+    "setTimeZone:",
+    "_setupSurfaceAndStartSpinning:",
+    "_constrainDateValue:timeInterval:",
+    "_ql_enclosingPreviewView",
+    "_cocoaErrorStringWithKind:",
+    "setInitialized:",
+    "vectorWithX:Y:Z:",
+    "setOldPassphrase:",
+    "hasChanges",
+    "setConstrainedFrameSize:",
+    "setAttributeSlotNoRetain:withObject:",
+    "GFSetEnumerator",
+    "_registeredDeviceClassNames",
+    "showPasswordAssistantPanel:",
+    "writeData:",
+    "stopNote",
+    "_tryDAVLock",
+    NULL,
+    "containsMetaDataCacheCards:",
+    "orderFrontColorPanel:",
+    "clearCustomPropertyCaches",
+    NULL,
+    "dateFromISO8601String:",
+    "_orderFrontModalWindow:relativeToWindow:",
+    "nts_ClearCachedRecordsForUniqueIds:",
+    "proxyDied:",
+    "_toggleLogging",
+    "blueComponent",
+    "_sessionDidResignActive",
+    "_setCSRData:",
+    "autosaveDocumentWithDelegate:didAutosaveSelector:contextInfo:",
+    NULL,
+    "createPixelBufferForManager:withFormat:transformation:bounds:colorSpace:options:",
+    "encodeObject:forKey:",
+    "setShowsLockButton:",
+    "_stashCollapsedOrigin:",
+    "_generateIDWithSuperEntity:nextID:",
+    "initWithEntryNames:contents:properties:options:",
+    "_adjustScroller:withDocumentLength:withViewLength:offset:",
+    "_chosenSpellServer:launchIfNecessary:",
+    "setUpdatedObjects:",
+    NULL,
+    "openDrawers",
+    "maximumFractionDigits",
+    "_didShowDisplayableView:",
+    "_isEditing",
+    "defaultTextColor",
+    "previewPanel:willLoadPreviewForURL:",
+    "recentDocumentURLs",
+    "registerImageBrowserTasks",
+    "_mouseDownListmode:",
+    "_web_localizedDescription",
+    "alpha",
+    "__saveSelection:context:",
+    "setActive:forTimeLine:extendSelection:",
+    "_positionLabels",
+    "attachToolbarToColorPanel:",
+    NULL,
+    "outlineColumn:willDisplayOutlineCell:row:",
+    NULL,
+    "defaultImageOrientation",
+    "opaqueAncestor",
+    "_freeCacheStepWithVisibleIndexes:blackList:",
+    "canAddConnectionForMediaType:",
+    "importVCardFiles:intoGroup:",
+    "getIDRefStringForValue:ofRelationship:objectForError:",
+    "_layerTreeRendererSurfaceGone",
+    "setDataRefType:",
+    "fullBounds",
+    "_searchFieldAction:",
+    "_calendarDateComponentsForPoint:inCalendarRect:",
+    "_forceAppendItem:",
+    "hashTableWithWeakObjects",
+    "openButton:",
+    "nodeAtIndexPath:",
+    "arrowsPosition",
+    "_drawingEndSeparator",
+    "_setKind:",
+    "shutAllDrawers:",
+    "initWithCurrentBrowsingNodePath:fileListMode:",
+    "_applyHTTPCredentials:",
+    "setShowsContentSeparator:forEdge:",
+    "stringsFromSelectionExpanding:",
+    "_sliceBottomBorderColor",
+    NULL,
+    "setWindowSharingType:",
+    "dragAnimationComplete:toRow:",
+    "setProperty:comparison:value:",
+    "thumbnailWithMaximumSize:",
+    "_contentHasShadow",
+    "string",
+    "_doOptimizedLayoutStartingAtGlyphIndex:forSoftLayoutHole:inTextContainer:lineLimit:nextGlyphIndex:",
+    "setDownCaption:",
+    "URLProtocol:didReceiveResponse:cacheStoragePolicy:",
+    "separatorItemIdentifier",
+    "windowFrameAutosaveName",
+    "initWithICCProfileData:",
+    "drawInRect:inContext:",
+    "IK_JPEGRepresentationWithCompressionFactor:",
+    NULL,
+    "initListDescriptor",
+    "indexForPage:",
+    "setNodeManager:",
+    "_revertDocument",
+    NULL,
+    "receiveDataWithTimeOut:",
+    "_doThirdPassForMapping:error:",
+    "memberOfTitle:",
+    "unionSet:",
+    "_breakConnectionOfTableBinderIfAutoCreated:",
+    "horizontalBoxInitROI:destRect:userInfo:",
+    "convertRect:fromView:",
+    "_undoDeletions:",
+    "skipParameter",
+    "_layoutOrdersForChoiceRootedAtItem:inRow:",
+    "isEqualToHashTable:",
+    "targetForSelector:",
+    "setDatabaseVersion:",
+    "moduleCanBeRemoved",
+    "gotoEnd:",
+    "_requestorInResponderChainForServiceDictionary:sendTypes:returnTypes:",
+    "_computeThumbnailImageInSubthreadFor:",
+    "_updateStatsForResourceAtIndex:",
+    NULL,
+    "toggleLoops:",
+    "setNumberOfItemsPerRow:",
+    "_shouldDrawTextWithDisabledAppearance",
+    "_shouldTypeSelectForEvent:",
+    "_sizeForNode:",
+    "isUpdated",
+    "nameOfGlyph:",
+    "_toolbarPillButtonClicked:",
+    "tableView:clickedOnSubrow:ofRow:",
+    "setWithObjects:",
+    "IKStoreTemporaryIntValue:",
+    "transparencyROI:forRect:",
+    "initWithDocument:",
+    "_setPM:",
+    "_registerCacheNode:",
+    "stringValue",
+    "_checkLoaded",
+    "initWithAttributes:",
+    "setAttributedStringValue:",
+    "imageProviderClasses",
+    "_antialiased",
+    "pathNamesForRecords:singleCard:",
+    "preloadThread",
+    "stringByConvertingURLToPath",
+    "_addRepsFrom:toRep:",
+    "__oldnf_componentsSeparatedBySet:",
+    "_viewDidEndLiveResize_handleRowHeaderSurfaces",
+    "_generateHTML",
+    "connectionWithSourceObject:sourceKey:targetObject:targetKey:userInfo:",
+    "_createIconViewDelegate",
+    "setReleasesAfterPoofing:",
+    "ignoreOpenAndClose",
+    "orientationTag",
+    "_computeThumbnail:",
+    "_doPositionDrawerAndSize:parentFrame:stashSize:",
+    NULL,
+    "setCurrentSearch:",
+    "_hasSeparateArrows",
+    "connection:didReceiveData:",
+    "columnWithIdentifier:",
+    "provideViewForUIConfiguration:excludedKeys:",
+    "postalAddresses",
+    "_closeBlocksForParagraphStyle:atIndex:inString:",
+    NULL,
+    "_writeRTFDInRange:toPasteboard:",
+    "_scriptingObjectWithUniqueID:inValueForKey:",
+    "removeTooltip",
+    "_versionNumber",
+    "enumeratorWithSet:",
+    NULL,
+    "hasBitmapRepresentation",
+    "echosBullets",
+    "_ensureTableCells",
+    "_setGenericValue:forKey:withIndex:flags:",
+    "_scriptingDescriptorOfComplexType:orReasonWhyNot:",
+    "updateSingleValue:forProperty:changes:",
+    "allowsCursorRectsWhenInactive",
+    "clearCachedStatements",
+    "nts_AddressBookWithDatabaseDirectory:",
+    "insertionRect",
+    "setExpandedView:",
+    "relayoutPicker",
+    "setRemoteRoot:",
+    "containsValueForKey:",
+    "pickerLayoutState",
+    "zoomOnSelectedLayerLayout:",
+    "cancelPreviousPerformRequestsWithTarget:",
+    "setAllowsOtherFileTypes:",
+    "setContextHelpModeActive:",
+    "suspended",
+    "thumbnailOfSize:",
+    "_allProperties",
+    "_sizeOfNSImage:",
+    "tryNewColorListNameSheetDidEnd:returnCode:context:",
+    "nextBase64Line:",
+    NULL,
+    "host",
+    NULL,
+    "_imageWithProgrammaticEffectsWithBaseName:state:backgroundStyle:",
+    "removeObjectAtIndex:forDatabaseKey:",
+    "selectedColumnIndexes",
+    "dictionaryWithContentsOfFile:",
+    "_addEntity:",
+    "setButtonType:",
+    "_portForPoint:inNode:bounds:outBounds:",
+    NULL,
+    "URLHandleResourceDidCancelLoading:",
+    "_secProtocolForProtectionSpace:",
+    "nts_SetValue:forProperty:recordCouldBeInDatabase:record:",
+    "initWithDataRefData:type:",
+    "alternateSelectedControlColor",
+    NULL,
+    "releaseCGPathArray",
+    "addRecord:toArray:",
+    "_clearDependenciesWithAllPeerBinders",
+    "defaultValueForKey:",
+    "invalidateLayoutForCharacterRange:isSoft:actualCharacterRange:",
+    "nts_RemoveMember:",
+    NULL,
+    "setColor:forAttribute:",
+    "addressAsString",
+    "_isSheetOnWindowWithWindowNumber:",
+    "_synchronizeTitlesAndColumnsViewWidth",
+    "_trimRecentSearchList",
+    "cursorUpdate:",
+    "_compositeFlipped:atPoint:fromRect:operation:fraction:",
+    "compositionParameterView:didChangeParameterWithKey:",
+    "_localPointForEvent:inView:",
+    "stringValuesOfProperty:",
+    "_setupIdle",
+    "removeElementAtIndex:",
+    "initWithFloat:",
+    "_findItemWithAttributeName:inMenu:",
+    "drawBackground",
+    "_fontSetWithName:",
+    "setDefaultFontSize:",
+    "_matchesKeyEquivalent:modifierMask:",
+    "insertionIndex",
+    "previewPanel:didChangeDisplayStateForDocumentURL:",
+    "setCacheUsedByBitmapRep:",
+    "_switchToAppropriateModeForColorIfNecessary:",
+    "encodeInt64:forKey:",
+    "_setPathLength:",
+    "lifeRange",
+    NULL,
+    "_registerForToolbarNotifications:",
+    "_cache",
+    "_markerSuffix",
+    "setValue:forHTTPHeaderField:",
+    "initWithRecord:customProperty:",
+    "_selectInTabView:itemWithIdentifier:",
+    "_setNote:atIndex:",
+    "_descriptorOfType:withValue:orReasonWhyNot:",
+    "initWithDomain:code:userInfo:",
+    "recalcMaskForResolutionData:",
+    "_nodes",
+    "isComment:delimiter:",
+    "_indicatorFrameForCellFrame:inView:",
+    "setByAddingObjectsFromArray:",
+    "imageRepClassForType:",
+    "prepareWithInvocationTarget:",
+    "newMiniaturizeButton",
+    "_topContainerView",
+    NULL,
+    "stopAllModeObjectObserving",
+    "goesNext",
+    "cgBackgroundColor",
+    "_ejectButtonClicked:",
+    "setCustomValuesDictionary:",
+    "_lockInterval",
+    "initializeFiles",
+    "_fileLocator",
+    "removeUnbindedNode:domain:",
+    "gridGroupFromDictionary:oldGroups:",
+    NULL,
+    "_maxXResizeRect",
+    "setKeyEquivalentModifierMask:",
+    "_setManagedObjectModel:",
+    "popupViewForAnnotation:",
+    "closeOpenedWindow:",
+    "waitTillConversionIsDone",
+    "pixelBufferAttributes",
+    "_graphiteControlTintColor",
+    "_initFromRecord:",
+    "rangeOfUnit:startDate:interval:forDate:",
+    "_cleanupRendering",
+    "_parseData:",
+    "registerUndoOperation",
+    NULL,
+    NULL,
+    "createThumbnailFromPDFPage:",
+    "_diskCacheSync",
+    "_bottomContainerView",
+    "_findSystemImageNamed:",
+    "objectIsForcedForKey:inDomain:",
+    NULL,
+    "resetRamNodeCacheUsedCount:",
+    "showcaseMenu:andShiftFocus:",
+    "_getGlyphIndex:forWindowPoint:pinnedPoint:anchorPoint:useAnchorPoint:preferredTextView:partialFraction:",
+    NULL,
+    "panelShouldHaveExportToIPhotoButton",
+    "parentSpecifier",
+    "noteNewRecentDocumentURL:",
+    "imageManager",
+    NULL,
+    "initWithImage:",
+    "_fixGlyphInfo:inRange:",
+    "initInsertActionWithItem:withPriority:",
+    "openFile:withApplication:",
+    "_clearControlTintColor",
+    "_descStringForFont:",
+    "setGraphEditor:",
+    "setCacheUsedByJpegData:",
+    "addCellWithSettings:data:profile:",
+    "_setSuperentity:",
+    "_drawKeyboardFocusRingWithFrame:inView:",
+    "handleSetFrameCommonRedisplay",
+    "_popUpItemAction:",
+    "_setNeedsDisplayInRow:column:",
+    NULL,
+    "deleteOutputForKey:",
+    "updateClipView",
+    "setThreadResult:",
+    "_maxXWindowBorderWidth",
+    "fullMetadata",
+    "getMatrix:",
+    "setPreviousInDictionary:",
+    "timeForKeyFrame:controlType:inTimeLine:",
+    "initForPropFind",
+    "_selectTabWithDraggingInfo:",
+    "prepareSQLStatement:",
+    "_createFullscreenWindowWithFrame:",
+    "imageForRepresentationInstance:forCell:",
+    "shouldCacheFullSizeImage",
+    NULL,
+    "drawBezelGroup:",
+    "_sortingGroupCompare:",
+    "_asIconHasAlpha",
+    "_sortOrderAutoSaveNameWithPrefix",
+    "setHorizontalScroller:",
+    "getAttribute:allowBinary:",
+    "keyBindingManager",
+    NULL,
+    "_updateAutoscrollingStateWithTrackingViewPoint:event:",
+    "_setAutoreleaseDuringLiveResize:",
+    "_sizeHorizontallyToFitWidth:",
+    "_targetBindingBound",
+    "database",
+    "autoscroll:",
+    "frequencyArgument",
+    "_setMinSize:",
+    "continueWithoutCredentialForAuthenticationChallenge:",
+    "_statusItemIsDeallocing:",
+    "saveDocumentAs:",
+    "propertyValueWithKey:uniqueId:addressBook:preventFetching:",
+    "peoplePropertyTypes",
+    "registerUndoWithTarget:selector:object1:object2:",
+    NULL,
+    "createUniqueImageManagerForQCCGLContext:options:",
+    "_setInputBackgroundImage:",
+    "_scriptingObjectsAtIndexes:inValueForKey:",
+    "transactionSuccessful:",
+    "registerFilterName:",
+    "removeCharactersInString:",
+    "_superviewFrameChanged:",
+    "currentDocumentIndex",
+    "correlationTableName",
+    "showAttachmentCell:inRect:characterIndex:",
+    "columnTitleForProperty:",
+    "_drawForTransitionInWindow:usingPatternPhase:inRect:",
+    "willBeDisplayed",
+    "put::",
+    "_unzipRequestPostHandler:",
+    "_setupURIs:inCEGeneralNames:",
+    "decodeBytesWithReturnedLength:",
+    "continueSpeaking",
+    "_unionOfObjectsForKeyPath:",
+    "setStreet:",
+    "newCloseButton",
+    "canCrop",
+    "setFrame:display:animate:",
+    "iconURL",
+    "_typeDescription",
+    "_setErrorOffendingObjectDescriptor:",
+    "createPageFromImage:atIndex:",
+    "setManagedName:",
+    "_getData:encoding:",
+    "inputWhiteParams",
+    "maximizedMode",
+    NULL,
+    NULL,
+    "_createCachesAndOptimizeState",
+    "moveToBeginningOfLine:",
+    "imageUnfilteredPasteboardTypes",
+    "defaultQueue",
+    NULL,
+    "numberOfTabViewItems",
+    "_sendDidBeginMessage",
+    NULL,
+    NULL,
+    "iconView:nextTypeSelectMatchFromIndex:toIndex:forString:",
+    "initWithSourcePath:destinationPath:",
+    "_lastDraggedOrUpEventFollowing:",
+    "selectedInactiveColor",
+    "blurHorizontalPass7ROI:destRect:",
+    "_widthIsFlexible",
+    "_forgetData:",
+    "encodeValuesOfObjCTypes:",
+    "_colorAtIndex:",
+    "accessibilityOverflowButtonAttribute",
+    "removePages:",
+    "_deviceMoveToPoint:",
+    "goToDestinationNoPush:",
+    "ISS__ay_postNotificationName:object:inThread:beforeDate:",
+    "_addTrackingRects:owner:userDataList:assumeInsideList:trackingNums:count:",
+    "removeObjects:",
+    "orderSurface:relativeTo:",
+    "addAnnotationLayer:",
+    "initWithContentsOfFile:",
+    "initWithCString:encoding:",
+    "_setValue:forOutputPort:",
+    "SCTFixApplicationMenuString",
+    "enabledStateAtIndex:",
+    "_setAutoGeneratedInitialFirstResponder:",
+    "_itemRemoved:",
+    "_createTimer",
+    "__oldnf_removeInternalRedFromTextAttributesOfNegativeValues",
+    "_updateHighlightedItemWithTrackingViewPoint:event:",
+    "refreshLoadingProgressBar",
+    "proKitGrayBackgroundUsingTexture:",
+    "decodePoint",
+    NULL,
+    "_specifiedStyleForElement:",
+    NULL,
+    "_old_initWithCoder_NSColorWell:",
+    "setWantsNotificationForMarkedText:",
+    "_windowWillLoad",
+    "setUniqueId:",
+    "upperItem",
+    "recordAtIndex:",
+    "intParameterValue:",
+    "glyphIndexToBreakLineByClippingAtIndex:",
+    "drawBorder:",
+    "clickableContentRectForBounds:",
+    "_takedownTheater",
+    "minCount",
+    "scrollItemAtIndexToTop:",
+    "_setBaselineDelta:",
+    "shouldUseInvalidationForObject:",
+    "recentPicturesPopUpWithDefaultOptionsForRepository:withDelegate:",
+    "_resizeColumn:withEvent:",
+    "setAllowsMixedState:",
+    "newButtonAsPlus:atIndex:",
+    "writeStrikethroughStyle:",
+    "_userCanChangeSelection",
+    "_initWithDOMRange:",
+    "openDocumentWithContentsOfURL:display:",
+    "builtInProperties",
+    "providerRespondingToSelector:",
+    "handleTakeValue:forUnboundKey:",
+    "_markerSpecifier",
+    "removeObjectAtArrangedObjectIndex:",
+    "constrainFrameRect:toScreen:",
+    "setImageView:asDelegateFor:",
+    "_setUpTextField:",
+    "_dontShowMessageAgainTitle",
+    "createTableForEntity:",
+    "stopProxy",
+    "_finalizing",
+    "canWriteItem:",
+    "currentInputManager",
+    "tagForSegment:",
+    "backgroundLoadDidFailWithReason:",
+    "setClearsBackground:",
+    "pathNamesForRecords:singleCard:dataForAllRecords:inPath:",
+    "_updateCameraButton",
+    "_viewAboveAccessoryView",
+    "serializeData:",
+    "insertNewline:",
+    "sendDidReceiveResponse:",
+    "willAccessValueForKey:",
+    "verticalMotionCanBeginDrag",
+    NULL,
+    "_ignoreSpellingFromMenu:",
+    "saveDateValue:",
+    "populateIdentifiers:values:labels:primaryIdentifier:withDataFromRecord:customProperty:",
+    "numberOfColorComponents",
+    "createCIImageForManager:withOptions:",
+    "markerForItemNumber:",
+    "updateCellOrControl:forMaxValue:",
+    "_setIssuerHashOfPublicKey:",
+    "longLongValue",
+    "_invalidateFocusRingRect",
+    "setContentFilters:",
+    "openDocumentFormatData",
+    "deselectCell:",
+    "accessibilityVerticalScrollBarAttribute",
+    "declareContext:isSharedWith:",
+    "setFloatParameterValue:forResolution:to:",
+    "outlineView:shouldSelectTableColumn:",
+    "_updateLayer",
+    "_isCustomItemType",
+    "addVariationDescriptions:",
+    "selectionRectRemoved",
+    "setContainerSize:",
+    "analyzeCurrentGRL:",
+    "_appendNodes:forNodeInfo:addSeparator:",
+    NULL,
+    "allocateTextureForSize:glID:offset:",
+    "_setChosenIssuer:",
+    "drawSelectionOnTitle",
+    "initializeItem:",
+    "_itemsFromItemViewers:",
+    "_canonicalXMLStringPreservingComments:namespaceString:relationships:",
+    "outputKeys",
+    "setLegendHidden:",
+    "_writePersistentBrowserColumns",
+    "setTypes:onPasteboard:",
+    "serviceConnectionWithName:rootObject:",
+    "_cacheDocumentPreview:",
+    NULL,
+    "numCertFields",
+    "objectForKey:atIndex:",
+    "drawBezelWithFrame:inView:",
+    "put:",
+    "_frameForLayer:",
+    "exchangeObjectAtIndex:withObjectAtIndex:",
+    "wasRedirectedToRequest:redirectResponse:",
+    "currentVersion",
+    "_growContentReshapeContentAndToolbarView:animate:",
+    "runPageLayout:",
+    "redRange",
+    NULL,
+    "mergeGroupContentsTableIntoGroups:",
+    NULL,
+    "_relayoutWithAnimation:ifInfoVisibilityChanges:",
+    "decryptComponents:",
+    "replaceNodeWithIdentifier:withNode:",
+    "protocolCheckerWithTarget:protocol:",
+    "allocFromZone:",
+    "nts_AddSubgroup:",
+    "_enableOrDisableTrackingAreas",
+    "stringByReplacingCharactersInRange:withString:",
+    "fadeFromBlackToNormal:wait:",
+    "addTrackingAreasForView:inFrame:withUserInfo:mouseLocation:",
+    "_useFastValidationMethod",
+    "setTitleFont:",
+    "IKSlideshowStartIndex",
+    "_storeDefaultSearchScopeMode",
+    "setCTM:",
+    "_performBatchWindowOrdering:",
+    "decodeRect",
+    "_commandPopupRect",
+    "_stringByTranslatingAliasDescriptor:toType:inSuite:",
+    "_needsRedrawBeforeFirstLiveResizeCache",
+    "selectTabViewItemWithIdentifier:",
+    "setDidEndSelector:",
+    "setIsEqualFunction:",
+    "setAttributedTitle:",
+    "setDimmedLayerColor:",
+    "leftIndentMarkerWithRulerView:location:",
+    "clearsContext",
+    "setMenuZone:",
+    "collectionView:didChangeToSelectionIndexes:",
+    "displayIgnoringOpacity",
+    "_defaultButton",
+    "CGImage",
+    "_invalidateDisplayForChangeOfSelectionFromRange:toRange:",
+    "cellDocumentRectAtIndex:",
+    "control:textView:doCommandBySelector:",
+    "insertObjects:inSubNodesAtIndexes:",
+    NULL,
+    "gizmoIcon",
+    "locationOfControlType:keyFrame:",
+    "performKeyEquivalent:",
+    "_isUnprocessedDeletion",
+    "proxyDataFormat",
+    "portForKey:",
+    "_acceptableRowBelowKeyInVisibleRect:",
+    "soundUnfilteredTypes",
+    "_changeMinColorPanelSizeByDelta:setWindowFrame:",
+    "dictionaryRef",
+    "moveAsideDatabaseAtPath:reason:",
+    "supportsTableEditing",
+    "_stopModal:",
+    "appliesToRequest:",
+    "_dataForkReferenceNumber",
+    "_removeOverlay",
+    "sharedScriptingAppleEventHandler",
+    "_glyphTreeDescription",
+    "restoreSavedSettings",
+    "_renameCollectionWithName:to:",
+    "setDocumentURLs:currentIndex:preservingDisplayState:",
+    "getRepresentation:options:colorspace:intent:bitsPerComponent:image:",
+    "_optimizeHighlightForCharRange:charRange:fullSelectionCharRange:oldSelectionFullCharRange:",
+    "getValueFromObject:",
+    "updateXMLNode:fromObject:objectIDMapping:",
+    "sharedHelpManager",
+    "_setIndicatorImage:",
+    "_writeMetaDataForPeople:withLock:",
+    "moveWordRightAndModifySelection:",
+    "drawSchedulePriorityRanges",
+    "AMSymbol",
+    "dataWithContentsOfMappedFile:",
+    "_selectedSize",
+    "rect",
+    "_synchronousTransactionStatus:requiringResult:",
+    "_updateExpansionButtonEnabledState",
+    "_parseParagraphAttributes2",
+    NULL,
+    "autostarts",
+    "_patchStateChanged:",
+    "movieShouldLoadData:",
+    "updateUserSelection:",
+    NULL,
+    "selectedCellIndex",
+    "retainedFulfillAggregateFaultForObject:andRelationship:withContext:",
+    "_validateJobPageNumbers",
+    "prepareForCarbonMenuBar",
+    "paragraphSeparatorGlyphRange",
+    "textWithStringValue:",
+    "setHorizontalAlignment:",
+    "nextArraySeperatedByToken:stoppingAt:inEncoding:",
+    "setDoubleValue:",
+    "turnOffLigatures:",
+    "_menuScrollAmount",
+    "_initSingleAttributes",
+    "optionSetting:",
+    "localeIdentifierFromComponents:",
+    "clearAllSamples",
+    "_selectNextFocusedCellGoingForward:andEdit:",
+    "_ql_allowsJavascriptForPreview:",
+    "_deviceCurveToPoint:controlPoint1:controlPoint2:",
+    "setInputNeutralChromaticityY:",
+    "_keyViewFollowingAccessoryView",
+    "browserDidScroll",
+    NULL,
+    "hasEditor",
+    "_kaleidoscopeKernel:",
+    "_applyLinesToFunction:info:",
+    "push:",
+    "insertItem:path:dirInfo:zone:plist:",
+    "destinationOptions",
+    "_tileView",
+    "alternateSecondarySelectedControlColor",
+    "registerClassDescription:forClass:",
+    "_mouseDownShouldMakeFirstResponder",
+    "startObservingModelObjectAtReferenceIndex:",
+    "_observesModelObjects",
+    "serializedRepresentation",
+    "_sendDelegateWillDisplayCell:atRow:column:",
+    "makeProperties:verifyWith:",
+    "restartIndeterminateCycle",
+    "handleDelayedUpdate:",
+    "visibleCellIndexesAtSelection",
+    "sharedGlyphGeneratorForTypesetterBehavior:",
+    "createCopy:orientationTag:",
+    "trackMouse:inRect:ofView:untilMouseUp:",
+    "layoutSublayers2",
+    "changeBaseWritingDirectionToRTL:",
+    "beginPageInRect:atPlacement:",
+    NULL,
+    "_isRulePopup:",
+    "coerceColor:toData:",
+    NULL,
+    "parseExtKeyUsage:",
+    "textXWithTextInfo:renderedSize:destinationRect:",
+    "_acceptableRowAboveRow:tryBelowPoint:",
+    "accessibilityFocusRingBounds",
+    "textView:clickedOnLink:atIndex:",
+    "_popUpMenuFromView:",
+    "dragColor:withEvent:fromView:",
+    "optionsForCGImageSourceCreateImageAtIndex",
+    NULL,
+    NULL,
+    "keepBackupFile",
+    "closedHandCursor",
+    "accessibilityIsHeaderAttributeSettable",
+    "attributesAtIndex:effectiveRange:",
+    "_shouldAlwaysUpdateDisplayValue",
+    "bytesPerPlane",
+    "setPrototype:",
+    "_drawRectIfEmpty",
+    "_initWithDictionary:",
+    "andPredicateWithSubpredicates:",
+    "_recursiveFindDefaultButtonCell",
+    "timeZoneName",
+    NULL,
+    "_displayingAllDirty",
+    "_removeRecords",
+    "typesFilterableTo:",
+    "setNumberOfOperations:",
+    "selectionHighlightStyle",
+    "_resetTitleFont",
+    "setMaximumRecents:",
+    "includesSubentities",
+    "setTrustSettingsDomain:",
+    "createCVPixelBufferForManager:withOptions:",
+    "controlBackgroundColor",
+    "canInitWithFile:",
+    "absoluteZ",
+    NULL,
+    "_shouldAllowAutoExpandItemsDuringDragsDefault",
+    "columns",
+    "_subentitiesIncludes:",
+    NULL,
+    "applicationDidUnhide:",
+    "_filteredAndSortedChildrenOfNode:",
+    "relationshipsByName",
+    "pageUp:",
+    "previousCard:",
+    NULL,
+    NULL,
+    "_addStringToRecentSearches:",
+    "setDrawWithCGImage:",
+    NULL,
+    NULL,
+    "_deleteNodeFromMainCache:",
+    "_invalidateAllRevealoversForView:",
+    "dayOfYear",
+    "_canChangeRulerMarkers",
+    "zoomToFitAll",
+    NULL,
+    NULL,
+    "_sendActionFrom:",
+    "rulerView:didRemoveMarker:",
+    "cancelLoadInBackground",
+    "windowWillOrderOffScreen:",
+    "_parseFullURL",
+    "_disableRefreshOnWindow:",
+    "_drawBackgroundForGroupRow:clipRect:",
+    "usesScreenFonts",
+    "windowRegionBeingDrawn",
+    "cameraDY",
+    "dataWithPDFInsideRect:",
+    "_setDynamicToolTipsEnabled:",
+    "_drawerDefaultLeftLeadingOffset",
+    "setOrderIntermediate:",
+    "getFilenamesAndDropLocation",
+    "nts_SetSearchElement:",
+    "parseADR",
+    "_invalidateEjectButtonCellWithEvent:",
+    "setCharacterIndex:",
+    "_iDiskPathForURI:",
+    "applicationDidHide:",
+    "IKIPLargestRepSize",
+    "_changeJustMain",
+    "writeToConsumer:",
+    "initWithFrame:mode:prototype:numberOfRows:numberOfColumns:",
+    "objectValue",
+    "isBeingEdited",
+    "setTransferMode:",
+    "_loadedCellAtRow:column:inMatrix:",
+    NULL,
+    "_closeTooltip",
+    "_calendarRangeOfSelectedDaysForDisplayedMonth",
+    "expandByOneROI:destRect:",
+    "drawVisibleCells:",
+    "setAlternateIconsForAnimationFilenames:",
+    "resourceNamed:",
+    "nts_migrateUniqueMailRecentsFromV2SQLiteStore:toBinaryV3Store:inContext:error:",
+    "_newRowsForFetchPlan:selectedBy:withArgument:",
+    "_datePickerCellDidChangeSubfieldSelection:",
+    "terminationStatus",
+    "currentAnimationStep",
+    "rectOfColumn:",
+    "lastChangeCount",
+    "trackMouseDragAllowed:",
+    NULL,
+    "currentFontAction",
+    "bufferSize",
+    "validateVisibleItems",
+    "_nextDisplayMode",
+    "_scriptingSetOfObjectsForSpecifier:",
+    "_resolvePositionalStakeGlyphsForLineFragment:lineFragmentRect:minPosition:maxPosition:maxLineFragmentWidth:breakHint:",
+    "_effect",
+    "isOpaque",
+    NULL,
+    "underlineGlyphRange:underlineType:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:",
+    "imageBrowserLoadingEnded:",
+    "_isEqualToSortDescriptor:",
+    "indexOfBestMatchForDisplayNamePrefix:inCachedChildrenForNode:",
+    "_searchTermsWindowBecameKey:",
+    "setExpandedNodes:",
+    "_keyFramesCache",
+    "_setImageOnDragSession:withOffset:",
+    "replaceBytesInRange:withBytes:",
+    "handleAnimatePageTransition:",
+    "_scriptingCopyWithProperties:forValueForKey:ofContainer:",
+    "isEqualToFormatDescription:",
+    "toggleToolbarShown:",
+    "isOptional",
+    "_convertRootIndex:",
+    "mediaTypeInMedia",
+    "_handleDefaultVoiceChange",
+    "removeRecord:fromAddressBook:",
+    "valueSelectionBehavior",
+    "setDefaultParagraphStyle:",
+    "goBackwardInHistoryIfPossible",
+    "datePickerCell:validateProposedDateValue:timeInterval:",
+    NULL,
+    "colorUsingColorSpace:",
+    "_shouldStretchWindowIfNecessaryForUserColumnResize",
+    "initWithPort:",
+    "_setDisplayValue:object:triggerRedisplay:",
+    "_disabledTrackingInNeighborhoodOfMouse",
+    "_defaultTokenizingCharacter",
+    "descriptionDictionary",
+    "_runLoop:containsPort:forMode:",
+    "_isKeyPathBound:",
+    "hitPart",
+    "subscript:",
+    "_typeDescriptions",
+    "_open:fromImage:withName:",
+    "_unfragmentBrowserItems",
+    "_saveState:filterTarget:filterAction:flatten:",
+    "selectTabViewItemAtIndex:",
+    "_drawDiscreteCapacityWithFrame:inView:",
+    "bezierPath",
+    "promise:keysAndValues:",
+    "initWithCoercer:selector:",
+    "composite:outOf:",
+    "setContextInfo:",
+    "_performMenuFormRepresentationClick",
+    "getBufferSize",
+    "resultList",
+    NULL,
+    "_timeLayoutTree",
+    "outlineView:didClickTableColumn:",
+    "registeredClients",
+    "_lookUpRangeInDictionary:",
+    "_readCacheFile",
+    "_scriptingIndicesOfObjectsForSpecifier:count:",
+    "setAutofill:",
+    "isAuthenticated",
+    "_segmentedControlRectForItemAtIndex:inBounds:",
+    "setMsgid:",
+    "recalcFigure:path:button:",
+    "maxDataLength",
+    "_sendDelegateDidDragColumn:",
+    NULL,
+    "textForValue:",
+    NULL,
+    "initializeNewItem:",
+    "_pageFormatWasEdited",
+    "_rowsForConflictDetection:withChannel:",
+    "_growBoxOwner",
+    "_keepCacheWindow",
+    "_executeInsertChild:didCommitSuccessfully:actionSender:",
+    "_sendFinderAppleEvent:class:file:",
+    "initWithClassPath:",
+    NULL,
+    "_insertionOrder",
+    "_setLastDragDestinationOperation:",
+    NULL,
+    "addAttributesWeakly:range:",
+    "_drawWithImageCache",
+    NULL,
+    "resetSQLStatement",
+    "cancelDelayedUpdate",
+    "colorSyncProfile",
+    "hardwareCapsDidChange:",
+    NULL,
+    "_recentLockTokens",
+    "_postAtStart:",
+    "preferenceForKey:",
+    "setApplicationName:",
+    "_userDeselectToRow:",
+    "clearVerifyField",
+    "simpleNodesFromXMLDocument:atPath:",
+    "deselectAllCells",
+    NULL,
+    "_determineDropCandidateForDragInfo:",
+    "_searchFieldCancelAction:",
+    "computeOccuranceIndexForChild:forParent:",
+    "application:printFile:",
+    "renderWithCGLContext:forBounds:",
+    "_primitiveCharacterRangeForGlyphRange:",
+    "valueForOutputKey:ofType:",
+    "removeAllActionsWithTarget:",
+    "setupIndexHandler",
+    "createGenieWindowForBoundingBox:",
+    "pictureTaker:willOpenOnImage:contextInfo:",
+    "_CFURLRequest",
+    "_counterpart",
+    "textTypes",
+    "_willDeallocIndexPath:",
+    "highlightColor:",
+    "setCompletionDelay:",
+    "initWithReferenceToObject:",
+    "documentVisibleRect",
+    "animationDuration",
+    "externalReferenceCount",
+    "setImageManager:",
+    "getCyan:magenta:yellow:black:alpha:",
+    "rangeOfVisibleIndexesAtSelection",
+    "setOptional:",
+    "movieRect",
+    "isVisual",
+    "addInsertedObject:",
+    "_sizeWithSize:",
+    "outlineView:shouldEditTableColumn:item:",
+    "movieWithDataReference:error:",
+    "setDefaultCropIsZoomToFit:",
+    "initWithName:attributes:",
+    "initWithOptions:contextAttributes:",
+    "newWithColorSpace:components:count:",
+    "_effectiveTitlePosition",
+    "setImageRep:",
+    "transformWith:",
+    "cachedChildrenForExpandedNode:",
+    "_alwaysShowBezelForCurrentBezelStyleAndState",
+    "_hash",
+    "indexSheetWillDeactivate:",
+    "initWithRootElement:",
+    "presentError:modalForWindow:delegate:didPresentSelector:contextInfo:",
+    "bundleWithPath:",
+    "layoutGlyphsInLayoutManager:startingAtGlyphIndex:maxNumberOfLineFragments:nextGlyphIndex:",
+    "setParagraphSpacingBefore:",
+    "_postCarbonWindowActivateEvent:makeKeyWindow:",
+    "integrateReferenceInstance:replaceImage:",
+    "usesRuler",
+    "showsContentSeparatorForEdge:",
+    NULL,
+    "canBrowseNode:allowInteraction:",
+    "_moveSheetByItself:delta:",
+    "setRecentPictureAsImageInput:",
+    "needsResyncWithDefaultVoice",
+    "titlebarBoundsForNote:inBounds:",
+    "smartInsertForString:replacingRange:beforeString:afterString:",
+    "resetDateFormats",
+    "initWithCompositionFile:",
+    NULL,
+    "windowWillMove:",
+    "canHide",
+    "_PFPlaceHolderSingleton_core",
+    "_mouseDownInSurroundingRegionShouldMoveWindow",
+    "_initForURL:withContentsOfURL:ofType:",
+    "_ql_allowsPlugInsForPreview:",
+    "_performFetchWithRequest:merge:error:",
+    NULL,
+    "_textDimsWhenDisabled",
+    "setSelector:",
+    "_resizeViewsForOffset:coordinate:",
+    NULL,
+    "_completeNoRecursion:",
+    "_removeResourceAtIndex:",
+    "_setNeedsDisplayInRegion:",
+    NULL,
+    "verifyDataType:forKey:",
+    "transpose:",
+    "_initWithWindowNumber:",
+    "_initWithType:",
+    "classFallbacksForKeyedArchiver",
+    "leftView",
+    "__performUndo2:",
+    "_enclosingBrowserView",
+    NULL,
+    "_newIconlessMenuItemForNavNode:",
+    "invertedDictionary",
+    "__oldnf_replaceAllAppearancesOfString:withString:",
+    NULL,
+    "_clockAndCalendarCellSize",
+    "_updateRolloverAtPoint:",
+    "setResetMatrices:",
+    "deselectRecord:",
+    "takeAPicture",
+    "_allocAndInitPrivateIvars",
+    "_menuFormRepresentation",
+    "_primitiveSetPreviousKeyView:",
+    NULL,
+    "_stringSearchParametersForListingViews",
+    NULL,
+    "accessibilityIsMinimizeButtonAttributeSettable",
+    "importsGraphics",
+    "_redisplayAndResizeFromRow:",
+    "_sizeRowHeaderToFitIfNecessary",
+    "initWithFormat:pixelsWide:pixelsHigh:options:",
+    "setScopeLocations:",
+    "_displayValueForConstantValue:",
+    "_plusImage",
+    "heightOfInfoSpace",
+    "browserWillScroll:",
+    NULL,
+    "_batchZoom",
+    "cacheUsed",
+    "_setCloseEnabled:",
+    "gotoPreviousItem",
+    "initForCArray:withContext:andRange:mergeWithRange:withType:",
+    "URLResourceDidCancelLoading:",
+    NULL,
+    "setPrimitiveText:",
+    "QTPixelFormat",
+    "insetByX:Y:",
+    "selectedMenuItemColor",
+    "getSubNodes:range:",
+    "drawTitleBackground",
+    "_observeSpecifierOfEntry:",
+    "_setInlinePreviewURL:",
+    "isSetOnMouseExited",
+    NULL,
+    "colorWithRed:green:blue:",
+    "setDoubleClickTarget:andAction:",
+    "_bulletStringForString:",
+    NULL,
+    "ISS_mimeAnalysis",
+    "_readSelectionFromPasteboard:toPoint:",
+    NULL,
+    "recentPicturesPopUpForRepository:withDelegate:",
+    "_shouldDrawRightSeparatorInView:",
+    "flushWindow",
+    "_setContentKindAndEncoding",
+    "analyzeReconfiguredWindowFinished:",
+    "perMillSymbol",
+    "wantsToDrawLabelInDisplayMode:",
+    "managedObjectClassName",
+    "replaceSetLengthActionForItem:withLength:",
+    "fontAttributes",
+    "_cellFurthestFrom:andCol:",
+    "green",
+    "openCategoryFile:withData:",
+    NULL,
+    "horizontalAlignment",
+    "setSubmenu:",
+    "_updateActivity:",
+    "_focusAcquired",
+    "updateInDock",
+    "_initWithCGSEvent:eventRef:",
+    "_rowHeaderScrollableContentVisibleRect",
+    "menuForEvent:",
+    "actionMenu",
+    "wantsDefaultClipping",
+    "setCustomButtonVisible:",
+    "updateCellLayoutAtIndex:",
+    "openTempFile:ok:",
+    NULL,
+    "_nameIsEqualToNameOfNode:",
+    "cellsAlignOnBaseline",
+    "setGroup:",
+    "keyWindowFrameHighlightColor",
+    "_allocString:",
+    "enabledFileTypes",
+    "_setBorderType:",
+    "setIndexLabel:atIndex:",
+    "setScriptErrorString:",
+    "dispatchGroupSelection:",
+    "pathToColumn:",
+    "_explicitlyCannotAdd",
+    "newItemForRepresentedObject:",
+    "strokeExactInterior",
+    "_setResult:",
+    "setupSlider",
+    "filterForName:value:key:",
+    "preferences",
+    "focusStack",
+    "_displayName",
+    "makeFirstResponderFromCarbonFocus:",
+    "_openDrawer",
+    "_initWithProperties:commandName:resultTypeAppleEventCode:",
+    "accessibilityIsToolbarButtonAttributeSettable",
+    "addAttribute:values:mergeValues:",
+    "_interlabelPadding",
+    "inputClientDisabled:",
+    "colorSpaceForColorSpaceName:",
+    "setMaxSize:",
+    "_centerTitle:inRect:",
+    NULL,
+    NULL,
+    "cacheSchema",
+    NULL,
+    "initWithParentSpecifier:name:",
+    "scheme",
+    "_asScriptTerminologyNameString",
+    "_startObservingRowObjectsRecursively:",
+    "replaceBytesInRange:withBytes:length:",
+    "setBorder:",
+    "postNotificationName:object:userInfo:deliverImmediately:",
+    "setConfigurationUsingName:",
+    "_filtersDALDevices",
+    "_registerForFontSetNotification",
+    "_mapKeyCodeToInputSource:modifiers:",
+    NULL,
+    "_matadorThread:",
+    "_setGroupIdentifier:",
+    "initWithCertData:",
+    "setVerticalLineScroll:",
+    "intWithController:",
+    "canConvertToBMPRepresentation",
+    "performSelector:withObject:withObject:",
+    "isInserted",
+    NULL,
+    "updateFrameColors:",
+    "_stateMarkerForValue:",
+    "drawBorderImage:middleImage:borderImage:inRect:withOrientation:flipped:operation:fraction:",
+    "_setCAType:",
+    "openDocument:",
+    "_popupImageSize",
+    "operationType",
+    "verifyWithDelegate:",
+    "applicationTerminating:",
+    NULL,
+    "_fillGlyphHoleAtIndex:desiredNumberOfCharacters:",
+    "copyRegexFindSafePattern:toBuffer:",
+    "accessibilityHelpStringForChild:",
+    "weakCount",
+    "multiValueForProperty:",
+    "_placeholderString",
+    "evaluatedArguments",
+    "writeUnderlineStyle:allowStrikethrough:",
+    "_region:",
+    "endMouseOperation",
+    "selectColumnIdentifier:",
+    "_bindingAdaptorMethodsNeededMask",
+    "setHighlightsBy:",
+    "_setDrawsBaseline:",
+    "copyFromZone:",
+    "nts_ValueForProperty:",
+    "setScriptingProperties:",
+    "sharedTimers",
+    "accessibilitySetHiddenAttribute:",
+    "setDestinationKeychain:",
+    "correspondingDisclosureGroup",
+    "setWidth:",
+    "drawFocusRingInView:",
+    "rebroadcastUserPictureDidChange",
+    "attributedString",
+    "imageRepClassForData:",
+    "_setHasCustomSettings:",
+    "showcaseRect:position:",
+    "sendProfilingData",
+    "select",
+    "_scheduleDelayedAutocomplete",
+    "initWithProtocol:httpRequest:proxyURL:challenge:callback:context:",
+    "fbeNode",
+    "writeCharacterShape:",
+    "_doModalLoopForSecondaryThread:",
+    "contentDocument",
+    "handleThreadedFindGRLs",
+    "_autoreleaseTrackingTag:",
+    "_setup:",
+    "_willChangeValuesForArrangedKeys:objectKeys:indexPathKeys:",
+    NULL,
+    "setQueryType:",
+    "_panelInitWithCoder:",
+    "initWithHost:port:protocol:realm:authenticationMethod:",
+    "_searchInSpotlight:",
+    "_readImageInfoWithImageSource:imageNumber:properties:",
+    "_transactionFinished",
+    "texturePixelsWide",
+    "_applicationWillTerminate:",
+    "isAtEnd",
+    "enterFullscreen",
+    "rehashAround:",
+    "_stripAttachmentCharactersFromString:",
+    "initWithNode:arguments:",
+    "imageForState:",
+    "netServiceWillPublish:",
+    "_textHitTest:withFrame:inView:",
+    "initWithKey:type:access:appleEventCode:isHidden:presentableDescription:name:",
+    "cacheUsedByBitmapRep",
+    "inputTopLineAtIndexes:",
+    "addedMembers:",
+    "_relayoutSubviewsWidthChanged:",
+    "_moveFullscreenViewToView:showControls:fitToScreen:coalesceFlushes:",
+    "predicateWithValue:",
+    "lockTextureRepresentationWithColorSpace:forBounds:",
+    "boundsForProvider:withTransformation:",
+    "nts_SetDistributionIdentifier:forProperty:person:allowFetching:",
+    "_theaterStateDidChange:",
+    "spellServer:checkGrammarInString:language:details:",
+    "extraLineFragmentUsedRect",
+    "tokenField:completionsForSubstring:indexOfToken:indexOfSelectedItem:",
+    "isFileListOrderedCaseSensitive",
+    "recoveryOptionIndex",
+    "_searchFieldClearRecents:",
+    "tabViewAdded",
+    "setSpacing:inWindow:delegate:",
+    "writeBinaryObjectSequence:length:",
+    "_getRemainingNominalParagraphRange:andParagraphSeparatorRange:charactarIndex:layoutManager:string:",
+    "insertRow:withCells:",
+    "hasCloseBox",
+    "_web_numberForKey:",
+    "setApplicationIconImage:",
+    "setNegativeSuffix:",
+    "_isThreadedAnimationLooping",
+    "subrowObjectsForPerson:",
+    "aspectRatio",
+    NULL,
+    "setCacheUsedByProxyBitmapRep:",
+    "_blobForCurrentObject",
+    "_validateStyleMask:",
+    "_cachedAttributedTitleSize",
+    "text",
+    "_topRightResizeCursor",
+    "allowedClasses",
+    "_scanForPlugIns:",
+    "symbol",
+    "setFieldOfView:",
+    NULL,
+    "isToOne",
+    "_complexTypeDescriptions",
+    "setPreviewMode:",
+    "moveToEndOfParagraph:",
+    "coreUIState",
+    "_altContents",
+    NULL,
+    "relatedMatchesForIdentifier:",
+    "principalID",
+    "_predicateForImplClass:addressBook:",
+    "scrollsDynamically",
+    "enableKeyEquivalentForDefaultButtonCell",
+    "setTrailingOffset:",
+    "abPeopleFromUniqueIds",
+    "handlePollingForMyWindow:",
+    "selectedPages",
+    "_alignmentRectInNormalizedCoordinates",
+    "accessibilityIsCloseButtonAttributeSettable",
+    "initWithMenu:",
+    "_collectItemViewerFrames:intoRectArray:",
+    NULL,
+    "isInInterfaceBuilderSimulator",
+    "fileNamesFromRunningOpenPanel",
+    "menuView",
+    "_abCompareWithinIntervalAroundToday:",
+    "_tabRectAdjustedForOverlap:",
+    NULL,
+    "finishUsingMenuRepresentation",
+    "_indexOfRangeBeforeOrContainingIndex:",
+    NULL,
+    "mouseDownSetup:",
+    "_repeatMultiplier:",
+    "parseCrlDistributionPoints:",
+    "setPortNumber:",
+    "enumerateDescendents:ofResource:",
+    "textAttributesForPositiveValues",
+    "_setContentsDirty:",
+    "removeSource:",
+    "encodeQTTime:forKey:",
+    "countdownNotePlayer",
+    "tooltipDelay",
+    "selectFilterByURL:",
+    "_itemAdditionCompleted:",
+    "_setupBoundsForLineFragment:",
+    "valueTransformerNames",
+    "invalidateContents",
+    "addTypes:owner:",
+    "setMouseDownMovesWindow:",
+    "errorCount",
+    "_addResource:withSize:cost:md5List:count:",
+    "formatType",
+    "_registerOrUnregister:observerNotificationsForModelObject:",
+    NULL,
+    "_isAtEnd",
+    NULL,
+    "_unlockViewHierarchyForDrawing",
+    "applyMultiValue:withProperty:toRecord:",
+    "clearReorderingItemsArray",
+    "beginLoadingImageDataForClient:",
+    "_blockRowRangeForCharRange:completeRows:",
+    "pageRanges",
+    "_swap",
+    "highlightRecovery:pattern:clipLevels:phase:redBlueSwap:image:",
+    "_createStringDict",
+    "_sharesParentKeyState",
+    "supportsProperty:",
+    "enqueueResumeOperationScheduledForTime:",
+    "buttonRectForBounds:inView:",
+    "_versionHash:",
+    "mutableAttributes",
+    "setPolicies:",
+    "updateOptionsWithApplicationName:",
+    "membersOfGroup:",
+    "_showingFocusRingAroundEnclosingScrollView:",
+    "selectAllInView:selectionOnly:",
+    "objectInAppleUseCoreUIAtIndex:",
+    "_addKey:",
+    "pathForResource:ofType:inDirectory:",
+    "setColumnAutoresizingStyle:",
+    "optimizesParameters",
+    "setExternalScale:",
+    "createCGImage:fromRect:format:colorSpace:",
+    "animate",
+    "_sendCarbonNotificationForTag:withValuePtr:andSize:",
+    "initWithColorSpace:",
+    "willClose",
+    NULL,
+    "selectedPagesAreContiguous",
+    "automaticRedisplay",
+    "initWithCopyOfRects:count:bounds:",
+    "mutableCollectionGetter",
+    "selectedControlTextColor",
+    "orderFrontFindPanel:",
+    "apply:to:params:",
+    "null",
+    "defaultCollector",
+    "verticalPagination",
+    NULL,
+    "handleAnimationProgress:",
+    "mipmapDB",
+    "levelForItem:",
+    NULL,
+    "_notifyDelegate_DidRemoveItem:",
+    "_minContentSizeForDrawers",
+    "formatDescriptions",
+    NULL,
+    "_updateLayer:",
+    "imageOffset",
+    "_isDeadkey",
+    "addFileNamed:fileAttributes:",
+    "_discardEventsFromSubthread:",
+    "_updateHeightToReflectNewWindowStyleIfNecessary",
+    "_shouldShowHiddenFiles",
+    "_documentController:didPrint:appleEventSuspensionID:",
+    "contextWithCGContext:options:",
+    "existingItemForSetItem:forAbsentKey:",
+    "_generateCountClauseForToManyKeyPathExpression:inContext:",
+    "_rulerAccViewListsAction:",
+    "_zoomWithSpeedFactor:",
+    "_canCreateImageFromPasteboard:",
+    "addChildWindow:ordered:shareKey:",
+    "deletedGroups:",
+    "_imageForPart:keyWindow:",
+    "_autoscalesBoundsToPixelUnits",
+    "minimumDaysInFirstWeek",
+    "boxType",
+    "restoreWindowOnDockReincarnation",
+    "runModalForSavePanel:withFilepath:",
+    "_clickedCharIndex",
+    "initDir:file:docInfo:",
+    "_setFileURL:",
+    "executeRequest:withContext:",
+    "_simpleCompletePathWithPrefix:intoString:caseSensitive:matchesIntoArray:filterTypes:",
+    "moveForward:",
+    "indexSheetWillActivate:",
+    "enumerations",
+    "_addDefaultTable",
+    "contentsEqualAtPath:andPath:",
+    "initWithGroup:records:assimilatedMap:addressBook:",
+    "allowsUserCustomization",
+    "_initLockDictionary",
+    "drawInRect:",
+    "multiply:with:",
+    "suppressAllNotificationsFromObject:",
+    "_resolveName",
+    "backgroundFilters",
+    "statusUpdate:",
+    "_postCheckpointNotification",
+    "selectedSegment",
+    "orderString:range:string:range:flags:",
+    "translateRectsNeedingDisplayInRect:by:",
+    "mutableData",
+    "setCurrencyCode:",
+    "countForFetchRequest:error:",
+    "dataForResolutionData:",
+    "_delayedUpdateSwatch:",
+    NULL,
+    "writeLigature:",
+    "initForKeyBackPointer:",
+    "currentVRamBindedRange",
+    "fileName",
+    "_taskNowMultiThreaded:",
+    "_contextInfo",
+    "canInsertChild",
+    "orientation",
+    "isEnabledWithSelection:",
+    "initWithTextControl:colorPanel:delegate:",
+    "_findFirstItemInArray:withItemIdentifier:",
+    "openInclude:",
+    "_initializePrimitiveAccessorStubs",
+    "immutableCopy",
+    "locationX",
+    "_certSigningUsage",
+    "loadNSImageNamed:into:",
+    "int64",
+    "deselectDirectoryResultRow:subrow:",
+    "isIdentifiedByName:",
+    "_validateUnderline:",
+    "accessibilityHiddenAttribute",
+    NULL,
+    "newFlipped:",
+    "_resizeWeighting",
+    "cropElementDidLiveUpdate:",
+    "setTitle:andDefeatWrap:",
+    "toggleSmartInsertDelete:",
+    "startDeviceAVCControlsPoller",
+    "_imageChosen:returnCode:contextInfo:",
+    "_updateTitle",
+    "splitView:canCollapseSubview:",
+    "abGlobalAPILockInFile:line:",
+    "_launchSpellCheckerAsynchronously:",
+    "appendPasswordView",
+    "_buttonOfClass:action:",
+    "updateObject:objectIDMap:",
+    "stringByConvertingPathToURL",
+    "validateMipmapAtIndex:withQuality:",
+    "heightForNumberOfVisibleRows:",
+    "sharedWorkspace",
+    "_managedObjectsChangedInContext:",
+    "modelByMergingModels:",
+    "columnFilters",
+    "startTimerForSpeaking",
+    "_shouldHighlightRows",
+    NULL,
+    "enabledStateForMenuItem:",
+    "loadState",
+    "_setValue:forKeyPath:ofObjectAtIndexPath:",
+    "copyright",
+    "clearSearch",
+    NULL,
+    "reclaimResources",
+    "isLocked",
+    "parseABMaiden",
+    "bufferPixelsWide",
+    "data2",
+    "_menuSelect:",
+    "viewDidLiveResizeFromRect:",
+    "fontInstanceForRenderingMode:",
+    "attributesAtEndOfGroup",
+    "_loadOrSetMetadata",
+    "cancelOperation:",
+    "_addOptionFromSlice:ofRowType:",
+    "visiblePages",
+    "createDestinationInstancesForSourceInstance:entityMapping:manager:error:",
+    "nodeNamespace",
+    "_sendManufacturedCursorUpdateEventForTrackingRectEvent:",
+    "transactionHadError:",
+    "_applicationDidTerminate:",
+    "IKOpenGLDefaultPixelFormat",
+    "_setCountry:",
+    "destinationsForRelationship:",
+    "adjustControls:",
+    "indexOfIdentifier:",
+    "_clearDirtyRectsForTree",
+    "_markedWidthDiffersFromCurrentWidth",
+    NULL,
+    "calendarIdentifier",
+    "minificationFilter",
+    "setAllowsUserConfiguration:",
+    "propertyPopUpFrame",
+    "minimumFractionDigits",
+    "_modelForVersionHashes:",
+    "initWithCharactersInString:",
+    "isLocationRequiredToCreate",
+    "topColor",
+    "_defaultFromWritableTypeNames:",
+    "accessibilityIsMaxValueAttributeSettable",
+    "ensureGlyphsForCharacterRange:",
+    "_typeDescriptionForKey:",
+    "directories",
+    NULL,
+    "_tmpPasteboardWithCFPasteboard:",
+    NULL,
+    NULL,
+    "_fixSelectionAfterChangeInCharacterRange:changeInLength:",
+    "imageBrowser:backgroundWasRightClickedWithEvent:",
+    "playsSelectionOnly",
+    "_topLeftResizeCursor",
+    "alignment",
+    "setAutosaves:",
+    "superview",
+    "establishConnection",
+    "returnType",
+    "backingLocation",
+    "_removeTrackingRectTag:",
+    "initWithCompareSelector:",
+    NULL,
+    NULL,
+    "selectFirstNavPopupMenuItem",
+    "setupInspectorViews",
+    "_doCheckPreAuth",
+    "setTransitionImage:",
+    "coerceValueForScriptingProperties:",
+    "setHeader:withValue:",
+    "_rowButtonsRightHorizontalPadding",
+    "compareSelector",
+    "_trackMouse:",
+    NULL,
+    NULL,
+    NULL,
+    "clearTemporaryIDs",
+    "deallocAllExpandedNodes",
+    "cleanup:",
+    "setFetchLimit:",
+    "_finalize_QCImageTextureBuffer",
+    "adjustPageHeightNew:top:bottom:limit:",
+    "initWithCodecType:sizeMode:width:height:compressionSessionOptions:",
+    "AppleUseCoreUI",
+    "_selectIndex:scrollToVisible:",
+    "groupsByEvent",
+    "columnOfMatrix:",
+    "setPlaceholderString:",
+    "_typographyPanel",
+    "weekdayOrdinal",
+    "updateBackgroundColor",
+    "_setNeedsDisplayBeginingAtColumn:",
+    "dataWithContentsOfFile:",
+    NULL,
+    "addNormalAndDownAppearanceToDictionaryRef:",
+    "_setModelKeys:triggerChangeNotificationsForDependentKey:",
+    "_sortNodes:",
+    "_availableChannel",
+    "showRemainingTime",
+    "_createMediaBrowserDelegate",
+    "createPDFDocumentFromPDFPage:",
+    "_changeSpellingFromMenu:",
+    "_readMovieIntoRange:fromPasteboard:",
+    "textDidBeginEditing:",
+    "fillRect:color:context:",
+    "writeCellTerminator:atIndex:nestingLevel:",
+    "_knownPrimaryKeyForObjectID:",
+    "leafKeyPathForNode:",
+    "CA_stringByResolvingSymlinksInPath:",
+    "_noteToolbarDisplayModeChanged",
+    "createCopyWithBlur:context:",
+    "animationTimerFired:",
+    "setZoomFactor:",
+    "makeKeyAndOrderFrontWithEffect:canClose:",
+    "backgroundIsBlack",
+    "iconView:writeIndexes:toPasteboard:",
+    "nextDaylightSavingTimeTransition",
+    NULL,
+    "_obtainPermanentIDsForObjects:withContext:",
+    "addProperty:withLocalization:toMenu:",
+    "_removeTexturesInContext:",
+    "unregisterModelKeyPath:",
+    NULL,
+    "setCellsOutlineColor:",
+    "_updateCAConfigFileSerialNumber",
+    "_setEnabled:",
+    "_glyph",
+    "canStealContentsFromPreviewView:",
+    "_customImageData",
+    NULL,
+    "_setResizedWidth:",
+    "isPlanar",
+    "longValue",
+    "formattedAddressFromDictionary:",
+    "_minXTitlebarDecorationMinWidth",
+    NULL,
+    "setSupportedPreviewTypes:",
+    "doFilesystemCleanupOnRemove:",
+    "createCGPathArray",
+    "_retainedURIString",
+    "_doNameCheck:",
+    "_readSelectionFromPasteboard:types:",
+    "initWithSerializedRepresentation:",
+    "setupParameterView",
+    "setImageDimsWhenDisabled:",
+    "postEvent:atStart:",
+    "selectionForEntireDocument",
+    "filtersInDomains:",
+    "outlineView",
+    "_recount",
+    "mappedIntoRAM",
+    "newStatementWithSQLString:",
+    "closeboxRectForBounds:",
+    "_isCritical",
+    "_argumentValueFromParameterDescriptor:usingTypeDescription:",
+    "beginSheetForDirectory:file:modalForWindow:modalDelegate:didEndSelector:contextInfo:",
+    "tryToPerform:with:",
+    "rowIndex",
+    "_delegateRespondsTo_typeSelectStringForTableColumn",
+    "_setItemOwnerView:",
+    "_updateMouseMovedState",
+    "_resumeLoading",
+    "fields",
+    "_nodeForBrowserType:",
+    "increaseSizesToFit:",
+    "setExpandedGridFrame:",
+    "oneOrMoreDescriptionsForSubelementName:",
+    "creationTime",
+    "_accessibilityTitle",
+    NULL,
+    "variable",
+    "_cancelDelayedAutocomplete",
+    "nts_CachedRecordForUniqueId:",
+    "doubleValue",
+    NULL,
+    "_liveResizeHighlightSelectionInClipRect:",
+    NULL,
+    "offStateImage",
+    "imagePathChanged:",
+    "initPutWithSession:data:URI:includeRangeHeader:rangeStart:rangeEnd:token:",
+    NULL,
+    "_contentRectForCharRange:textContainer:",
+    "zoomAll:",
+    "foreignKey",
+    "_launchService:andWait:",
+    "installToolTips",
+    "_invalidateTimers",
+    NULL,
+    "hasCustomImage",
+    NULL,
+    "sourceExpression",
+    "openGLTextureIsPremultiplied",
+    "_importConfirmSheetDidEnd:returnCode:contextInfo:",
+    "publicRecord",
+    "parseKeyUsage:",
+    "_setWindowDepth",
+    "decimalNumberByAdding:",
+    "_calcHeightsWithMargin:operation:",
+    "textStorage:edited:range:changeInLength:invalidatedRange:",
+    "nts_IsPublished",
+    NULL,
+    "abdStoppedSyncing:",
+    "isRulerVisible",
+    "_takeApplicationMenuIfNeeded:",
+    "argumentsRetained",
+    "requestTimeout",
+    "setCropPRS:",
+    "encodeInvocation:",
+    NULL,
+    "_contentRectForTextBlock:glyphRange:",
+    "setAutoreverses:",
+    "movieBoxIsOpaqueChanged:",
+    "windowTitle",
+    "_recursiveTickleNeedsDisplay",
+    "_areAllPanelsNonactivating",
+    NULL,
+    "invalidateFilters",
+    "_beginDrawForDragging",
+    "_recentPlacesNode",
+    "allowsToggleToOff",
+    "canChooseFiles",
+    "focusRingEnabled",
+    "containsGroupName:",
+    "moveBackwardAndModifySelection:",
+    "setMetadata:forPersistentStore:",
+    "declareTypes:owner:",
+    "_changeIconViewTextPosition:",
+    "_updateLayerAnchorPointForUnflippedSuperview",
+    NULL,
+    "_restorePreviousKeyWindowFromSavedProperties",
+    NULL,
+    "constrainMeasurementsToInteger:",
+    "alertWithMessageText:defaultButton:alternateButton:otherButton:informativeTextWithFormat:",
+    "unarchiveObjectWithData:",
+    "_web_uniqueWebDataURL",
+    NULL,
+    "_getClientContext",
+    "recordForUniqueId:",
+    "_setCompoundPredicate:",
+    NULL,
+    "_searchForSoundNamed:",
+    "interpretKeyEvents:",
+    "minTimeForControlType:keyFrame:inTimeLine:",
+    "favoritesNode",
+    "_replaceAllItemsAndSetNewWithItemIdentifiers:",
+    "_checkLinksForRange:excludingRange:",
+    "unarchiver:willReplaceObject:withObject:",
+    "anchorPoint",
+    "setShowsControlView:",
+    "addTextLabelToDictionaryRef:",
+    "setTransitionFrame:",
+    NULL,
+    "validateBackupFileAtPath:",
+    "removeRepresentation:",
+    "nextTokenPeakSingle:length:",
+    "indicesOfObjectsByEvaluatingWithContainer:count:",
+    "splitView:constrainSplitPosition:ofSubviewAt:",
+    NULL,
+    NULL,
+    "superlayer",
+    "isSelectorExcludedFromWebScript:",
+    "_invalidateConnectionsAsNecessary:",
+    "_buttonAtIndex:",
+    "addGroupButton",
+    "spotlight:",
+    NULL,
+    "contextMenuRepresentation",
+    NULL,
+    "_setPreview:",
+    "_localizedColorListName",
+    "localizedColorNameComponent",
+    NULL,
+    NULL,
+    NULL,
+    "testScrollPerformancesWithDelta:withCount:",
+    "accumulatorFormat",
+    "blueReconstruction:green:phase:image:",
+    "removeFromRunLoop:forMode:",
+    "turnOffKerning:",
+    "scrollWheel:",
+    "setSave:",
+    "constantValue",
+    "_windowDidChangeScreens:",
+    "referenceObjectForObjectID:",
+    "_setVisibleInCache:forWindow:",
+    "_drawKeyboardUILoopStartingAtResponder:validOnly:",
+    "_writeInfoStringForKey:number:headerData:contentsData:",
+    "insertObjects:atArrangedObjectIndexes:",
+    "publicRecordsForClass:withDatabaseImpls:inAddressBook:",
+    "didStabilize",
+    "propertyForKey:inRequest:",
+    "noiseImage",
+    NULL,
+    "_setTransactionStarted:",
+    "_computeImageBufferParametersForProvider:withFormat:target:colorSpace:outSrcFormat:outSrcTarget:outSrcColorSpace:outDstFormat:outDstTarget:outDstColorSpace:relaxedFormat:softwareOnly:",
+    NULL,
+    "passwordView",
+    "_allowsAnyValidResponder",
+    "table",
+    "protocolFamily",
+    NULL,
+    "_closeFileSync",
+    "_updatedMetadataWithSeed:includeVersioning:",
+    NULL,
+    NULL,
+    "_okForOpenMode",
+    "initWithCards:duplicates:group:selectGroup:uiController:",
+    NULL,
+    "currentSelection",
+    NULL,
+    "movePath:toPath:handler:",
+    "_argInfo:",
+    "updateWindowsItem:",
+    "_forceMoveItemFromIndex:toIndex:",
+    "_rectsForBounds:",
+    "_reloadFontInfoIfNecessary:",
+    "oldIndexOfNewIndex:",
+    "doubleClick:",
+    "setMenuBarVisible:",
+    "windowDidBecomeVisibleNotification:",
+    "uniqueId",
+    "_willPresentOpeningError:forURL:",
+    "cardWillCommitChanges:",
+    "compare:options:",
+    "BMPRepresentation",
+    "_gutterFrame",
+    "createLocalPortWithTarget:",
+    "outlineView:performKeyEquivalent:",
+    "checkIdentifier:",
+    "_adjustScroller",
+    "cocoaSubVersion",
+    "_unregisterTableColumnBinder:fromTableColumn:",
+    "_beginListeningForApplicationStatusChanges",
+    "_setToDefaults",
+    "_startFadeOut:",
+    "isMovable",
+    "imagingModeForcedToGWorld",
+    "initWithFileName:",
+    "isARepeat",
+    "setLayerTreeHost:",
+    "_branchImageEnabled:",
+    "getFiltersInCollection:",
+    "adjustRect:",
+    "accessibilityStyleRangeForIndexAttributeForParameter:",
+    "_runAlertPanelForFileOverwritten:moved:renamed:inTrash:orUnavailable:thenSaveDocumentWithDelegate:didSaveSelector:contextInfo:",
+    "createTexturePackerAtIndex:",
+    "_setGlyphsPerLineEstimate:integerOffsetPerLineEstimate:",
+    "_newCompositionsDidLoad:",
+    "initWithSource:forRelationship:asFault:",
+    "selectedName",
+    "setAllowsToolTipsWhenApplicationIsInactive:",
+    "imageBrowser:writeItemsAtIndexes:toPasteboard:",
+    "textFileTypes",
+    "accessibilityIsEnhancedUserInterfaceAttributeSettable",
+    "_insertPopUpButtonItemInCellOrControl:title:representedObject:menuItemIndex:index:",
+    "checkBoundaries",
+    "_validateSingleValue:forKey:error:",
+    "_updateFrameOfDisplayedView:",
+    "accessibilityActionNames",
+    "_openListsForParagraphStyle:atIndex:inString:",
+    "isVRMovie",
+    "_readPersistentExpandItems",
+    "strikethroughGlyphRange:strikethroughType:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:",
+    NULL,
+    "_presentDividerDragResult:withParams:",
+    "scanUpToCharactersFromSet:intoString:",
+    "newRowsForFetchPlan:",
+    "_openDrawers",
+    "_valueForParameter:",
+    "layoutManager:shouldUseSelectedTextAttributes:atCharacterIndex:effectiveRange:",
+    "appendSQL:",
+    "loadedBundles",
+    "wrapsAround",
+    "mainBundle",
+    "advanceToToken:throughTypes:",
+    "enableFreedObjectCheck:",
+    "_setNeedsReset",
+    NULL,
+    NULL,
+    "isKindOf:",
+    "_isFullWidthCellAtRow:",
+    "layoutManager:didCompleteLayoutForTextContainer:atEnd:",
+    "createViewController",
+    "drawRadioButton:inContext:",
+    "pathComponents",
+    "_askDelegateWithURL:proxy:forRequest:proxyURL:failureCount:failureResponse:protocol:withCallback:context:",
+    "_isPublicRecord",
+    "pageChanged:",
+    "requiredMinSizeFor:",
+    "_compositeToPoint:operation:fraction:",
+    "subcacheUsingRectFilteringFunction:rect:",
+    "wasFlattened",
+    NULL,
+    "_showToolTip",
+    "_commonInitNSColorPickerColorSpacePopUp",
+    "setCell:enabled:",
+    "outlineView:toolTipForCell:rect:tableColumn:item:mouseLocation:",
+    "createTextureBufferFromProvider:withFormat:target:transformation:bounds:colorSpace:options:",
+    "setDistributionIdentifier:forProperty:person:",
+    "_initInStatusBar:withLength:withPriority:hidden:",
+    "largeImagePath",
+    "indexPairForIndex:",
+    "_XMLStringWithCharactersOnly",
+    "updateSelection:",
+    "_updateMenuMatrix",
+    "print",
+    NULL,
+    "originalAspectRatio",
+    NULL,
+    "_shouldContinueExpandAtLevel:beganAtLevel:",
+    "initPropPatchWithSession:URI:updatingProps:token:inNameSpace:",
+    "_toggleUserVisibilityPriority:",
+    "isBinded",
+    NULL,
+    "_preflightSpellChecker:",
+    "_runInitBook:",
+    "_updateMetadata",
+    NULL,
+    "_updateIdentityPreference:domain:",
+    "searchIndexForRecordsMatching:",
+    "_copyDescription",
+    "metadataForPersistentStore:",
+    "_web_changeFinderAttributes:forFileAtPath:",
+    "accessibilityRTFForCharacterRange:",
+    "consumerSubpatches",
+    "_invokeSelector:withArguments:onKeyPath:ofObject:mode:raisesForNotApplicableKeys:",
+    "versionInfoDictionary",
+    "showsResizeIndicator",
+    NULL,
+    "autoScaleFactor",
+    "_mutableParagraphStyle",
+    "setLocalizesFormat:",
+    "addAppearanceForKey:toDictionaryRef:",
+    "newDeleteStatementWithCorrelation:",
+    "hasHorizontalScroller",
+    "_generateDocument",
+    "lineToPoint:",
+    "setEnableCustomAttributeFixing:",
+    "fileSize",
+    "movie:postNetworkDiagnosticUI:",
+    "recentsAutosaveName",
+    "bgColor",
+    "_nicestRederingCellIndexAtIndex:",
+    "showHelp:",
+    "tokenFieldCell:completionsForSubstring:indexOfToken:",
+    "addTool:frame:action:",
+    "fadeControlsPanel:",
+    "signal",
+    "_mutableArrayValueForKeyPath:ofObjectAtIndex:",
+    "pauseRenderingPatch:",
+    "_fillerRectHeight",
+    "_adjustFocusRingSize:",
+    "_operationFailed:",
+    "_mutateTabStops",
+    "captureOutput:didOutputAudioSampleBuffer:fromConnection:",
+    "setDashFromArray:",
+    "_setupMasterSynchronizers",
+    "launchFXPicker",
+    "_doUserPathWithOp:inContext:",
+    "postNicestRendering",
+    "newStreamWithRequestMessage:",
+    "initWithOriginalObject:modes:wait:",
+    "didEndShouldCloseSheet:returnCode:contextInfo:",
+    "_initWithAttributesNoCopy:flattenedPageFormatData:printSettingsData:",
+    "_coreCreationForKeys:count:",
+    "previewType",
+    "decodeSMPTETimeForKey:",
+    "_setResizeWeighting:",
+    "initWithProvider:options:",
+    "patchSetsTransform",
+    "drawResizeIndicator:",
+    "isSpecialGroupSelected",
+    "releaseNode:",
+    NULL,
+    "valueTransformerName",
+    "predicateWithFormat:argumentArray:",
+    "_setRotation:forGlyphAtIndex:",
+    "remoteSubscription",
+    "_GetInternalCFHTTPCookie",
+    "paletteLabel",
+    "_forgetWord:inDictionary:",
+    NULL,
+    "_fetchPreviewTypeForDocumentPreview:",
+    "entryNames",
+    NULL,
+    "_shouldTransformMatrix",
+    "_findLastViewInKeyViewLoop",
+    "_cancelFileControlCallbackTimeoutTimer",
+    "_getFullyFormedCellAtColumn:row:",
+    "_jobSavePathInPrintSession:printSettings:",
+    "allowsTypeSelect",
+    "_cancelMovementTrackingTimer",
+    NULL,
+    "_CGSadjustWindows",
+    "setAgeProfileView:",
+    "setNilSymbol:",
+    "cameraButton:",
+    "inputRampParams",
+    "minTimeForControlType:keyFrame:",
+    "initWithPerson:imageData:addressBook:",
+    "textColorForButtonState:",
+    "tag",
+    "wasPaused",
+    NULL,
+    "apertureMode",
+    "objectAt:",
+    "_termedDescriptionWithTabCount:propertyKindName:",
+    "_scriptingIndexesOfObjectsForSpecifier:",
+    "initializeFromDefaults",
+    "theaterDataSource",
+    "tableView:setObjectValue:forTableColumn:row:",
+    "niceMipmapItemForSize:forGLRendering:cacheIt:",
+    "_clockAndCalendarRetreatMonthButtonCell",
+    "_defaultTableHeaderSortImage",
+    "bundle",
+    "didPresentErrorWithRecovery:contextInfo:",
+    "initWithURL:method:",
+    "_updateVolumeFromPropertyListener",
+    "abArguments",
+    "setAuthorizationRights:",
+    "_decrementLocalProxyCount",
+    "orderedWindows",
+    "_updateEnabled",
+    "applicationDidBecomeActive:",
+    "_setRelativeOrdering:",
+    "shouldBreakLineByWordBeforeCharacterAtIndex:",
+    "startRendering",
+    "_createEditButtonIfRequired",
+    "setSliderType:",
+    "openGLInternalFormat",
+    "_changeFileListMode:",
+    "_trackingSegment",
+    "numberWithInteger:",
+    "animation",
+    NULL,
+    "_lockTokenForURI:",
+    "saveDocumentWithDelegate:didSaveSelector:contextInfo:",
+    NULL,
+    "selectedMember",
+    "setImagingModeForcedToSharedBuffer:",
+    "doClose:",
+    "positiveSuffix",
+    "menuTitlePath",
+    "currentSearchRow",
+    NULL,
+    NULL,
+    "zoomMinCallback:",
+    "accessibilityTitleAttribute",
+    "createToManyJoinIntermediateForProperty:lastStep:inScope:context:",
+    "backgroundWindowLevel",
+    NULL,
+    "browser:namesOfPromisedFilesDroppedAtDestination:forDraggedRowsWithIndexes:inColumn:",
+    NULL,
+    "_resizeTable:level:range:row:heightDelta:",
+    "_setNeedsDisplayForSelectedCells",
+    "upgradeForCropSize:",
+    "birthdayYearless",
+    "outlineView:nextTypeSelectMatchFromItem:toItem:forString:",
+    "updateEditButton",
+    "_retain_1",
+    "attributesWithStat:",
+    "_scriptingAnyDescriptor",
+    "CGBitsPerPixel",
+    "_memoryCacheTruncate:",
+    "_setDoNotShowBaselineSeparator:",
+    "_doAction:",
+    NULL,
+    "_userSelectRowIndexes:withNewSelectedRow:",
+    "setSelectionRect:",
+    NULL,
+    "deleteObject:",
+    "replaceTextStorage:",
+    "_setNeedsViewerLayout:",
+    "drawPieInteriorWithFrame:inView:",
+    "nts_SubscriptionListChanged",
+    NULL,
+    "addAnnotationFormField:",
+    "_ensureDatabaseOpen",
+    "buildRequest",
+    "copyPublicRecordForClass:withDatabaseImpl:inAddressBook:",
+    "updateScale:",
+    "displayedCard",
+    "setFileModificationDate:",
+    "createICUSubstringContext",
+    "getComputedStyle:pseudoElement:",
+    "currentEvent",
+    NULL,
+    "reloadSettings",
+    "shouldDrawColor",
+    "resumeAnimation:",
+    "_controlMenuKnownAbsent:",
+    "_minVisibleHeight",
+    "nicestRenderingLoop",
+    "containerNode",
+    "_computeMenuForClippedItems",
+    "outputAudioSampleBuffer:fromConnection:",
+    "isDeadKey",
+    "_customizationOfError:withDescription:",
+    "initWithData:usedEncoding:",
+    "imageWidth",
+    "subNodesAtIndexes:",
+    "labelFontSize",
+    "IK_TIFFRepresentationWithCompressionFactor:",
+    "refreshDetailContent",
+    "_recursiveSetDefaultKeyViewLoop",
+    "retainedRelationshipDataWithSourceID:forRelationship:withContext:",
+    "_delegateTypeSelectStringForTableColumn:row:",
+    "readMetadataFromFile:error:",
+    "connectionDidFinishLoading:",
+    NULL,
+    "_invitation",
+    "nextFrameDelayAtIndex:",
+    "setObjectStoreIdentifier:",
+    "usesFontPanel",
+    "transformForOrientationAndDPIWithTranslation",
+    "sendRenderState:didChangeMessage:withAttributes:",
+    "_loadNibDataFromPath:",
+    NULL,
+    "identifierAtIndex:",
+    "addRow",
+    "createCTTypesetter",
+    "formatDescription",
+    "reopenDocumentForURL:withContentsOfURL:error:",
+    "parseGeneralNames:indent:",
+    "currentHandler",
+    "spinRange",
+    "fidelityMask",
+    "restoreDefaultSearchOptions",
+    "_removeEntityNamed:",
+    "crop:",
+    "toolbarLabelFontOfSize:",
+    "zoomSliderAction:",
+    "_refreshInputSourceAttributes",
+    "_resignKeyFocus",
+    "SCTPerformDelayedSelector:withObject:",
+    "drawShadowedRect:blur:",
+    "setMaxIndexValue:",
+    "hasThumbnail",
+    "_allocDefaultView",
+    "setSubentities:",
+    "previewView:openExternalURL:",
+    "_observeFileAttributesOfChild:",
+    "pixelAlpha",
+    NULL,
+    "releaseConnectionWithSynchronizePeerBinders:",
+    "lightMetalBackgroundUsingTexture:",
+    "setDBSnapshot:",
+    "keyEquivalentRectForBounds:",
+    "gregorianStartDate",
+    "performSelectorDelayed:withObject:",
+    "_allowsOrdering",
+    "gridVisibleRect",
+    "index",
+    "initWithTitle:inputController:",
+    "_startLiveResizeForAllDrawers",
+    "setSelectedMember:",
+    "setActsLikeButton:",
+    "parseExtensionCommon:expect:",
+    "_setRotatedOrScaledFromBase:",
+    NULL,
+    "drawBezelGroupOverlay:",
+    "doesNotRecognizeSelector:",
+    "setInputBottomLineParams:",
+    NULL,
+    "stringFromDate:",
+    "_setNeedsDisplayForDropIndex:",
+    NULL,
+    "_attachedSupermenuView",
+    "connectionWithReceivePort:sendPort:",
+    "setStalenessInterval:",
+    "fontName",
+    "releaseLock:",
+    "createCGImage:",
+    "_propertyNamed:",
+    "endSecureMode",
+    "_checkPreAuth",
+    "accessibilitySetEnhancedUserInterfaceAttribute:",
+    NULL,
+    NULL,
+    "__move:context:",
+    "collection",
+    "_newRepresentation:",
+    "positionValueForAccessibleChildAtIndex:",
+    NULL,
+    NULL,
+    NULL,
+    "_hasSeenRightToLeft",
+    "getScale",
+    NULL,
+    "_validateCarbonNameAndCatalogInfo",
+    "minimizeSize:",
+    "currentGRLResolvedReconfiguredWindow:",
+    "includePhotosInVCards",
+    "addFontDescriptors:toCollection:",
+    "performSelector:onThread:withObject:waitUntilDone:",
+    NULL,
+    "setInputColor1:",
+    "texture",
+    "selectItem:atIndex:",
+    "URLProtocolDidFinishLoading:",
+    NULL,
+    "unionWith:",
+    "systemFontOfSize:",
+    "_justOrderOut",
+    "visibleLineCount",
+    "stringByAddingPercentEscapes",
+    "_createOutputConnectionsForInputConnection:",
+    "object:didRemoveObservance:",
+    "viewWillStartLiveResize",
+    "isAbstract",
+    "_windowMovedToPoint:",
+    "parseKey:",
+    "setValue:",
+    "_animateAtEndOfEvent",
+    "initWithElement:fauxParent:",
+    "maxPossiblePositionOfDividerAtIndex:",
+    "setProperty:withValue:",
+    "flattenIntoPath:",
+    "boundsForConnection:fromPoint:toPoint:",
+    "IKIPDrawNicelyScaledInRect:inView:operation:fraction:",
+    "containsObject:",
+    "_convertToNSRect:",
+    "_writeCacheFile:",
+    "browser:acceptDrop:atRow:column:dropOperation:",
+    "accessibilityAttachmentAtIndex:",
+    "stringWithContentsOfFile:",
+    "_isMoving",
+    "_setAnyUsage:",
+    "languageLevel",
+    "_setArrayContentInBackground:",
+    "_attributes:atPath:",
+    "changeWindowsItem:title:filename:",
+    "rewireDistributionListConfig:withPropertyValue:identifier:",
+    "rangeOfCharacterFromSet:options:",
+    "_installCarbonWindowEventHandlers",
+    NULL,
+    "addEntry:forKey:",
+    "shouldIgnorePanelFrameChanges",
+    "predicateOperatorType",
+    "reloadAllCellsData",
+    "defaultButtonTitle",
+    "writePostScriptWithLanguageEncodingConversion:",
+    "refreshUI",
+    "initWithPrincipal:",
+    "initWithCGColor:",
+    "initWithRow:tableColumn:",
+    "newestToggleFileWritingOperation",
+    "endPrimaryKeyGeneration",
+    "positiveInfinitySymbol",
+    "setWarningValue:",
+    "_scrollDown:",
+    "_isItemViewerMoveable:",
+    "_orderOutAllToolTipsImmediately:",
+    "_noteItemUserVisibilityPriorityChanged:",
+    "_queueForDealloc:",
+    "searchGroups",
+    "selectsAllWhenSettingContent",
+    "trackMouseForPopupMenuFormRepresentation:",
+    "updateSelectionFrame:",
+    "fixInvalidatedFocusForFocusView",
+    "_configureAndDrawImageWithRect:cellFrame:",
+    NULL,
+    "addKeyFrameAtTime:value:toTimeLine:preserveCurve:",
+    "_cancelDelayedKeyboardNavigationTabSwitch",
+    "convolveROI:forRect:",
+    "_stopAndTearDownGraph",
+    NULL,
+    "_previousNonHiddenColumnStartingAtColumn:",
+    "_recursiveDisplayViewsIntoLayersIfNeeded",
+    "createDirectoryAtAURL:andReturnResultCode:",
+    "_initWithNSImageSource:options:",
+    "rotateByAngle:",
+    "_newStringForIndexing",
+    "setPasswordFields:verify:original:",
+    "setPredicate:",
+    "dividerColor",
+    "conjoinedElementForProperty:keys:value:withComparison:",
+    "setNegativePrefix:",
+    "initWithContainerClassID:key:baseGetter:mutatingMethods:proxyClass:",
+    "sharedFontManager",
+    "suffixFieldPresent",
+    "windowRef",
+    "defaultKeyMarker",
+    NULL,
+    "setMovieVisualContext:",
+    "importCellsProgress",
+    "createTextureBufferFromPixelBuffer:target:bounds:options:",
+    "gotoNextPage",
+    "goBack:",
+    "setDoubleClickOpensEditPanel:",
+    "_updateFromPath:checkOnly:exists:",
+    "invalidateShape:",
+    "_mouseInGroup:",
+    "_newButtonOfClass:withNormalIconNamed:alternateIconNamed:action:",
+    "setHorizontalPagination:",
+    "alternateArrangeInFront:",
+    "isBordered",
+    "_lockfeContext",
+    "newWithCoder:zone:",
+    "_newItemFromItemIdentifier:requireImmediateLoad:willBeInsertedIntoToolbar:",
+    "_workerThread",
+    "_setUp",
+    NULL,
+    "showPreviewIcon",
+    "shouldCloseWindowController:delegate:shouldCloseSelector:contextInfo:",
+    "physicalMemory",
+    "_infoForOSAError:",
+    "maxIndex",
+    "_timebarRect",
+    "getPropertyValue:",
+    NULL,
+    "initWithContentsOfMappedFile:",
+    "_scriptingIndicesOfObjectsAfterValidatingSpecifier:",
+    "uploadTextureWithBaseAddress:releaseCallback:releaseInfo:bytesPerRow:",
+    "initWithFocusedViewRect:",
+    "gotoSheetDidEnd:returnCode:contextInfo:",
+    "setSelectedRange:",
+    "specifierTraverseLink:",
+    "_newWildSubStringForGlob:wildStart:wildEnd:",
+    "_setupGridWithCompositions:",
+    "initForBasicPropertiesWithFile:",
+    "isCompiled",
+    "allowsFloats",
+    "_loadFromUDIfNecessary",
+    "_displayedPreviewType",
+    "colorWithDeviceWhite:alpha:",
+    "initWithInternalFilter:",
+    "setIsEnabled:",
+    "resetState",
+    "setInputRampParams:",
+    "startingIconSize",
+    NULL,
+    "kuwaharaNagaoROI:destRect:userInfo:",
+    "displayModeChanged:",
+    "drawArrow:highlight:",
+    NULL,
+    "updateSubmenu:",
+    NULL,
+    "firstLineHeadIndent",
+    "temporaryAttributesAtCharacterIndex:longestEffectiveRange:inRange:",
+    "multiplier",
+    "icon",
+    "hotspotAtIndex:",
+    "sendDidStopBuffering:originalLength:",
+    "_setUpFoundationTranslations",
+    "_performPreHandler",
+    NULL,
+    "_fetchExpandedFrameSize",
+    "setDisplayedProperty:",
+    NULL,
+    "unfocusView:",
+    "setCertificates:",
+    "zeroOrMoreDescriptionsForSubelementName:",
+    "decodePointForKey:",
+    "_beginLoadingImageForPerson:forClient:orCallback:withRefcon:",
+    "_calendarContentAttributedStringWithSelectedDays:",
+    NULL,
+    "_generateSQLForFunctionExpression:allowToMany:inContext:",
+    "_setZoomValueWithDisplay:",
+    "_setBaseClass:",
+    "_addColumnToFetch:",
+    "numberOfPlanes",
+    "displayFlags",
+    "_createTruncationToken",
+    "_GFLogMessage:",
+    "cleanUp",
+    "_unlockFocusNoRecursion",
+    "isNSValue__",
+    "_startAnimationWithThread:",
+    "setPreprocessorColor:",
+    "cardTypeNameString",
+    "setTitle:ofColumn:",
+    "_didChangeValue:forRelationship:named:withInverse:",
+    "_validateItem:value:inRow:",
+    "selectedTextAttributes",
+    "setInputExtent:",
+    "_setModeInformation",
+    "windowDidBecomeMain:",
+    "_isButtonBordered",
+    "setMinimumLineHeight:",
+    "isTestingInterface",
+    "addImagesWithPath:recursive:toArray:",
+    "wrappedOrigin",
+    "removeRecent:",
+    "_focusDidChange:",
+    "_startRunWithDuration:firingInterval:",
+    "accessibilityIsEnabledAttributeSettable",
+    "_accessibilityToolbarItemViewerConfiguration",
+    "accessibilityArrayAttributeCount:",
+    "formattedValueInObject:errorEncountered:error:",
+    "sharedPreferences",
+    "setCropSize:",
+    "valueWithPoint:",
+    "compatibilityVersion",
+    "_fixedFailureReasonFromError:",
+    "_compareMultiNoLabelDictionaryKeyWithRecordValue:",
+    "sweepThumbnailQueue",
+    "setSpacing:",
+    "_clientPort",
+    "flushCache",
+    "addSource:",
+    "setTransformedRange:",
+    "valueWithBytes:objCType:",
+    "locationOfPrintRect:",
+    "classForEntity:",
+    "extractSearchAttributeAndValueFromChild:",
+    "_isLastNameFirst",
+    "flushKeyBindings",
+    "countForIndexPath:",
+    "_isStringDrawingTextStorage",
+    "_setValue:forBinding:errorFallbackMessage:",
+    "_adaptSlideshowTimerFireDate",
+    "destination",
+    "threadDied:",
+    "textView:doubleClickedOnCell:inRect:",
+    "_resize:",
+    "_prepareString:expressionPath:sensitiveOptions:wildStart:wildEnd:allowToMany:",
+    "_autoscrollScreenEdgeFactorFromPoint:",
+    "deletePropertyValues:withKey:andSaveDistributionListConfigs:inRecord:withContext:",
+    "accessibilityIsOverflowButtonAttributeSettable",
+    "_setBindingCreationDelegate:",
+    "pressedImageForControlTint:",
+    "wantsToTrackMouseForEvent:inRect:ofView:atCharacterIndex:",
+    NULL,
+    "validMipmapItems",
+    "initWithDir:cString:",
+    "imageWithContentsOfURL:",
+    "removeCursorRect:cursor:",
+    "editableStateAtIndexPath:",
+    "_handleAEOpen:",
+    "_indexForMoveDown",
+    "iconView:acceptDrop:atIndex:",
+    "_stepInUpDirection:",
+    "_dispatch",
+    NULL,
+    "wrapMode",
+    "_updateLabel",
+    "convertTime:fromLayer:",
+    "_shouldParticipateInBatchOrdering:",
+    "_genericDragCursor",
+    "XMLDataWithOptions:",
+    "__setValue:forPortKey:",
+    "_lineFragmentRectForProposedRectArgs",
+    "_fireWithSelection:",
+    "_incrementUndoTransactionID",
+    "_usableFrameForScreen:",
+    "leftTabMarkerWithRulerView:location:",
+    "_setWantsMouseMoveEventsInBackground:",
+    "recursivelyPerformNextActions:index:count:",
+    "setCurrentBrowserType:",
+    "initWithTableView:clipRect:",
+    "thisIsMe:",
+    "accessibilitySplittersAttribute",
+    "hasShadow",
+    "_imageSizeWithSize:",
+    "selectInputMode:",
+    "_addCornerDirtyRectForRect:list:count:",
+    "findAttributeNamed:value:",
+    "selectedDirectoryResults",
+    "standardWindowButton:forStyleMask:",
+    "_changeLanguage:",
+    "tabletProximity:",
+    "__setNodeSelection:adjacentToNode:inputNodes:selectedList:",
+    "blendedColorWithFraction:ofColor:",
+    "_scrollPageInDirection:",
+    "imageRepWithContentsOfURL:",
+    "clickedCert:",
+    "_menuWillSendAction:",
+    "removePasswordUI:",
+    "mapTableWithStrongToWeakObjects",
+    "_deltaForResizingImageRepView:",
+    "hasOpenTransaction",
+    "initWithGRLs:withTrigger:withIndex:withWindow:withWindowGRL:",
+    "replacementObjectForKeyedArchiver:",
+    "initWithFrame:editorView:",
+    "_sqlTypeForAttributeDescription:",
+    NULL,
+    "abortSchedule",
+    "_scaleEffectForItemFrame:transitionWindow:",
+    "setAutosavesConfiguration:",
+    "_drawLineForGlyphRange:type:baselineOffset:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:isStrikethrough:",
+    "maxThumbnailViewFrameSize",
+    "_DOMHTMLTableCellElementClass",
+    "_sendFinishLaunchingNotification",
+    "_createButtonWithTitle:",
+    "_compileShader:withSource:onContext:",
+    "stuckPixelEliminationROI:destRect:",
+    "retainWireCount",
+    "setRequiresDirectKeyValueCodingCall:partialControllerKey:partialObjectKey:",
+    "freeTemporaryCacheProgress",
+    "_adjustTextColorOfObject:mode:",
+    "_coreUIDrawOptionsWithFrame:inView:",
+    "setAvoidableSpecifier:path:",
+    NULL,
+    "_scrollColumnToVisible:requireCompletelyVisible:",
+    NULL,
+    "isNSSet__",
+    "acceptValuesOfClass:",
+    "nonretainedObjectValue",
+    "_sortLabelsUsing:",
+    "accessibilityEnhancedUserInterfaceAttribute",
+    "initWithWindow:windowRegion:",
+    "perform",
+    "subentitiesByName",
+    "_filterStringsForNode:",
+    "initForIncrementalLoad",
+    NULL,
+    "key",
+    "_setTableNestingLevel:",
+    "_writeVersionsAndEncodings",
+    "isSuccessful",
+    "nextEscapedCharacter",
+    "_userInfo",
+    NULL,
+    NULL,
+    "setAttribute:value:",
+    "capsulePathInRect:",
+    "acceptsStyleChanges",
+    "willSetLineFragmentRect:forGlyphRange:usedRect:",
+    "imageState:image:options:",
+    "clearCachedPropertyValuesWithKey:",
+    "checkForRemovableMedia",
+    "initWithLocalFile:",
+    "collapsed",
+    "paddingPosition",
+    "compatibilityIssueCheck",
+    "getCaretPositions:forGlyph:maximumLength:",
+    "setUsesThreadedAnimation:",
+    "screenFontWithRenderingMode:",
+    "_addTracking",
+    NULL,
+    "_totalNominalTabsLengthWithOverlap:",
+    "_calendarHeaderFont",
+    "_forceFixAttributes",
+    "_finishModalOperation",
+    "cameraIsBusy",
+    NULL,
+    "_otherItemClick:",
+    NULL,
+    NULL,
+    "visitPredicateExpression:",
+    "unixToTypeName:",
+    "willChangeValuesForArrangedKeys:objectKeys:indexKeys:",
+    "getCountBadgeForCount:",
+    "_valueForKeyPath:ofObjectAtIndexPath:",
+    "_performActionWithCommitEditing:didCommit:contextInfo:",
+    "gridStyleMask",
+    "uniqueNodeForIndexes:count:indexPath:",
+    "transactionAborted:",
+    "stopSlideshow",
+    "_alignRect:force:",
+    "supportedRenderedTexturePixelFormats",
+    "_selectPart:",
+    "isLessThanOrEqualTo:",
+    "boundingRectForGlyphRange:inTextContainer:",
+    NULL,
+    "archive:contentsForEntryName:",
+    "setUserColumnResizingAutoresizesWindow:",
+    "_endTransitionWithLayer:",
+    "_dragCanBeginFromVerticalMouseMotion",
+    "_fullWidth",
+    "_createPDFImageRep",
+    "markers",
+    "gain",
+    NULL,
+    "_rowIndexForRowObject:",
+    "stopSlideshow:",
+    "_saveToURL:ofType:forSaveOperation:didSaveSelector:scriptCommand:",
+    "borderColorForEdge:",
+    "_setEventRef:",
+    NULL,
+    "_setFocusRingNeedsDisplay",
+    "addProperty:",
+    "subviews",
+    "arrayWithArray:copyItems:",
+    "getNumActiveProcessors",
+    "setBoundsAsQDRect:",
+    "initWithStore:fromArchivedData:",
+    "_initForPropFindWithDepth:lookingForProps:",
+    "receiveMessage:name:attributes:",
+    "activate",
+    "initWithURL:byReference:",
+    "titleBarFontOfSize:",
+    "characterBoundsAtIndex:",
+    "_ensureQueue",
+    "setHorizontalRulerView:",
+    NULL,
+    "sessionID",
+    NULL,
+    "fontPanelDidChooseFamily:",
+    "_trackingAreaInfoForTrackingRectTag:",
+    NULL,
+    "_initializeDTD:fromTidyNode:",
+    "setValueListAttributes:",
+    "addBinding:fromObject:",
+    "regionOf:destRect:userInfo:",
+    "operand",
+    "_createConnectionForOutput:fromInputConnection:error:",
+    "initWithUnavoidableSpecifier:path:url:isSymbolicLink:",
+    "IKGetComponentsRed:green:blue:alpha:",
+    "viewWillMoveToWindow:",
+    "setRelationshipCaches:",
+    "playButtonFrame",
+    "openRootForEditing",
+    "get:count:algorithm:",
+    "initWithAttributes:range:",
+    "attributesForPropertyPortWithKey:",
+    "currentModeView",
+    "_validateNewWidthOfColumn:width:",
+    "drawer:didChangeToState:",
+    "_trimWithCharacterSet:",
+    "_predicateOptionPairForBinding:",
+    "dataReferenceEnumerator",
+    "_writeRTFDInRanges:toPasteboard:",
+    "_convertPos:AndLen:",
+    "urlForModelVersionWithName:",
+    NULL,
+    "minFrameWidthWithTitle:styleMask:",
+    "setRootElement:",
+    "_isDingbats",
+    NULL,
+    "initWithFrame:optionFlags:",
+    "addTooltips",
+    "removeValueForProperty:",
+    "orderFrontTablePanel:",
+    "setStartAlpha:endAlpha:duration:",
+    "initWithInputController:",
+    NULL,
+    "allUniqueIds",
+    "internationalCurrencySymbol",
+    "foreignEntityKey",
+    "_createOtherValueGetterWithContainerClassID:key:",
+    NULL,
+    "_setWithOffset:",
+    "_fullPanelSetupIfNecessary",
+    "bestRepresentationForDevice:",
+    "enterCropMode",
+    "scheduleTaskPriority",
+    "configureForSortedByFileProperty:ascending:caseSensitive:",
+    "_setCenterPoint:",
+    "_slideShowItemAtIndex:",
+    "_ensureNoFetchInProgress",
+    "startTracking:",
+    "addAttribute:",
+    "_old_encodeWithCoder_NSTabView:",
+    NULL,
+    "bezierPathWithRect:",
+    "_titlebarHeight:",
+    NULL,
+    "_allocatePPDStuffAndParse",
+    "shouldFetchImageForEmail:withCacheDate:",
+    "isConfiguration:compatibleWithStoreMetadata:",
+    NULL,
+    "_computeToolbarItemKeyboardLoopIfNecessary",
+    NULL,
+    "setValueToDefault",
+    "setProps:forIndex:",
+    "showPanel",
+    "typeStringForColumn:",
+    NULL,
+    NULL,
+    "orderFrontLinkPanel:",
+    "setGlyphRange:characterRange:",
+    "filterChanged:",
+    "setBounds:forBox:",
+    "setActionState:",
+    "widgetCenterForResolutionData:",
+    "setCurrentSearchRow:",
+    "applicationDockMenu:",
+    "initForMetal:style:topHeight:bottomHeight:",
+    "accessibilityMinimizeButtonAttribute",
+    "objectForServicePath:app:doLaunch:limitDate:basePortName:",
+    NULL,
+    "addCellWithSettings:data:type:profile:index0:index1:index2:",
+    "_handleAEPrintDocuments:withSettings:showPrintPanels:",
+    "zoomToActualSize",
+    "saveMetadata:",
+    "guessesForWord:",
+    "openGLContext",
+    "_setDisabledTextColor:",
+    "usesFontLeading",
+    NULL,
+    "internalWritePath:errorHandler:remapContents:hardLinkPath:",
+    "catalogNameComponent",
+    "_stopTooltips",
+    "removeHeartBeatView:",
+    "removeTrackingRect:",
+    "indexOfAttributeBySelector:equalToObject:",
+    "setFullscreenController:",
+    "_nts_CalculatePropertyTypeForRecord:",
+    NULL,
+    NULL,
+    "connectionWithRegisteredName:host:",
+    "unmounted:",
+    "_dataSourceValueForColumn:row:",
+    "_setOverflowHeaderCellPrototype:",
+    "_preflightCrossCheck",
+    "getAttributeFirstValue:allowBinary:",
+    NULL,
+    "daylightSavingTimeOffsetForDate:",
+    "availableUserServers",
+    "_disposeMovieController",
+    NULL,
+    "sortDescriptors",
+    "createSymbolicLinkAtPath:pathContent:",
+    "_sheetEffectInset",
+    "_initWithName:URI:prefixIndex:",
+    "accessibilityIsAttributeSettable:",
+    "operationGroup",
+    "fullName",
+    "sourceTypes",
+    "cancelDelayedPerformWithTarget:selector:",
+    "stopPlay",
+    "correlationAlias",
+    NULL,
+    "decodeRetainedObject",
+    "outlineView:dataCellForTableColumn:byItem:",
+    "_ensureLayoutCompleteForVisibleRectWithExtension:",
+    "truncateFromPosition:",
+    "setAcceptsGlyphInfo:",
+    "timeOffset",
+    "applyWithManager:buffer:transformation:bounds:options:",
+    "setAllowsGroupEditing:",
+    "_localStoreContainingObjectID:",
+    "_resizeAllCaches",
+    "_keyViewFollowingOpacityViews",
+    "selectionDidChange",
+    "regionWithRect:",
+    "setBoolParameterValue:to:",
+    "pointerFunctionsWithOptions:",
+    NULL,
+    "_setKeychainFullPathName:",
+    "destinationOfSymbolicLinkAtPath:error:",
+    NULL,
+    "textureROI:forRect:",
+    "accessibilityIsSharedTextUIElementsAttributeSettable",
+    "_releaseAllCapturedScreens:",
+    "noteFileSystemChanged:",
+    "setRefusesFirstResponder:",
+    "leftExpressions",
+    "_daylightSavingTimeOffsetForAbsoluteTime:",
+    "_findRecord:ofType:",
+    "_updateDimensions",
+    NULL,
+    "insertTextContainer:atIndex:",
+    "_storeIdentifier",
+    "initWithProvider:imageManager:pixelFormat:transformation:bounds:colorSpace:options:",
+    "setWindow:",
+    "deletedPeople",
+    "_handleErrorCallbackWithParams:",
+    "canGoIntoSelectedDirectory",
+    "_needToFlushGlyph",
+    "processText:",
+    NULL,
+    "_controllerKeys",
+    "itemDelta",
+    "_referenceBindingValueAtIndexPath:",
+    "printDocumentWithSettings:showPrintPanel:delegate:didPrintSelector:contextInfo:",
+    NULL,
+    "managerForSourceModel:destinationModel:error:",
+    "_disabledTextColor",
+    "nts_AddMembersAndSubgroupsFromDictionaryRepresentation:withRecordMapping:recordsByUniqueId:",
+    "_setToolTip:forView:cell:rect:owner:ownerIsDisplayDelegate:userData:",
+    "edit:",
+    "publish",
+    "removeObject:inRange:",
+    "_mouseDownOnSlice:withEvent:",
+    "_insertionPointHelperForGlyphAtIndex:",
+    "useCoreUI",
+    "setRect:",
+    "intype",
+    "_mouseUp:",
+    "initWithTextStorage:range:",
+    "addCommon:docInfo:value:zone:",
+    "searchRecordClasses",
+    "_writeCharacterAttributes:",
+    "_dropHighlightEdgeColor",
+    "isTakingPicture",
+    "_drawMenuFrame:",
+    "_hasMultipleLinesOfText",
+    "validateObjectValue:",
+    "createPageArray",
+    "_reserved_SFChooseIdentityPanel",
+    "mouseEventWithType:location:modifierFlags:timestamp:windowNumber:context:eventNumber:clickCount:pressure:",
+    "findString",
+    "_updateTearOffPositionWithScreenPoint:",
+    "numberOfItems",
+    "rowCache",
+    "_isKVOA",
+    "willRemoveSubview:",
+    "menuChanged:",
+    "_addItem:toTable:",
+    "_closeForkAsync:",
+    "_nestingModeShouldHideSubtractButton",
+    NULL,
+    "insertAttribute:intoView:anchorPosition:forFilter:settings:configuration:objectController:",
+    "resignFirstResponder",
+    "writeToFile:atomically:error:",
+    "arrayWithResultsOf:",
+    "totalRequestedMemoryOfType:rendererID:",
+    "_setAEDesc:",
+    "handleSwitchToColumnsOnlyFrom:animate:",
+    NULL,
+    "setDomain:",
+    "_conflictsWithRowCacheForObject:andStore:",
+    "_isSmartGroupParentOfRecord:",
+    "frontWindow",
+    "fill",
+    "foundMatch",
+    "setURL:",
+    "finishProvideNewSubviewSetup",
+    "addFileButton:",
+    "__oldnf_stringWithSeparator:atFrequency:",
+    "_detectTrackingMenuChangeWithScreenPoint:",
+    "isRoomWellLit",
+    "_handleOptimisticLockingError:withError:",
+    "supportsCommand:",
+    "setMenu:",
+    "createDirectoryAtAURL:",
+    "setBorderWidth:",
+    "insertIdentityGroupsInDisplayedGroups",
+    "_old_encodeWithCoder_NSBrowser:",
+    "_postEventNotification:fromCell:",
+    NULL,
+    "_containsValue:",
+    NULL,
+    "viewDidMoveToSuperview",
+    "inputNeutralChromaticityY",
+    "attributesForCharacterIndex:lineHeightRectangle:",
+    "_windowWillClose:",
+    "_slideShowItemValidAtIndex:",
+    "characterCollection",
+    "setCharacters:",
+    "windowFrameTextColor",
+    "documentDidBeginPageFind:",
+    "_setRowSpan:",
+    "shouldUseOriginalLayerToDraw",
+    "_cfNormalize:",
+    "findRecordNames:ofType:matchType:",
+    NULL,
+    NULL,
+    "setStyle:",
+    "moveRight:",
+    "_isSymbol",
+    "_menuLocationHorizontalOffset",
+    "_queryOrderLocalizedDictionaries:withParent:",
+    "_clearMarkedRange",
+    "segmentCount",
+    "_windowBorderThickness",
+    "previewPanel:syncDisplayState:forURL:",
+    "_effectiveFocusRingType",
+    "setOriginOffset:",
+    "flattenMipmapItemIfNeededAndFreeUselessAdditionalCaches:withUID:",
+    "shadowComponent",
+    "_runCustomizationPanel",
+    "_invalidateGlyphsForExtendedCharacterRange:changeInLength:",
+    "_setClipIndicatorItemsFromItemViewers:",
+    "cacheData",
+    "SCTImageNamed:",
+    "_setupNormalFileListModeControl",
+    "_setInputRampParams:",
+    "_parseMain:",
+    "_setBackgroundColor:",
+    "_allowedItemIdentifiers",
+    "interpretKeyEvents:sender:",
+    "runOperationWithTimeOut:",
+    "_decodeDownloadData:",
+    "_parseCharacterAttributes1",
+    "symbolicLinkDestination",
+    NULL,
+    "connection:willStopBufferingData:",
+    NULL,
+    "msgid",
+    "destroyVisualContext",
+    "percentSymbol",
+    "_rawAddColor:key:",
+    "insertPageBreak:",
+    "help:",
+    "editorWithObject:",
+    "capacity",
+    "drawDebugGrid",
+    "dispatchNameSelection:",
+    "updateCell:",
+    "_mutableSetValueForKeyPath:ofObjectAtIndex:",
+    "setImages:",
+    "goForwardInHistoryIfPossible",
+    "clearClipping",
+    NULL,
+    "initWithCGLContext:pixelFormat:colorSpace:patch:",
+    "_insertText:forInputManager:",
+    "_sceneChangeType",
+    "_freeCache:",
+    "orderString:string:flags:",
+    "noteDirectoriesListChanged",
+    "_clockAndCalendarRetreatMonth:",
+    "insertPointer:atIndex:",
+    "_isNonactivatingPanel",
+    "_unitsForRulerLocation:",
+    "_loadData",
+    "dontExportCurrentItemToiPhoto",
+    "appendData:",
+    "selectRow:inColumn:",
+    "linkItemAtPath:toPath:error:",
+    "containsDayGranularityDate:forDatePickerCell:",
+    "searchSliceType",
+    NULL,
+    "drawTab:title:enabled:",
+    "_colorWithHue:",
+    "stopUsingDevice",
+    "runInitialization",
+    "objectByTranslatingDescriptor:toType:inSuite:",
+    "_pageFormatForSetting",
+    "downloadProgress",
+    "_rowHeightStorageBeginLayoutChange",
+    "_updateAttributesFromAudioChannelVolumesFromPropertyListener",
+    "setCertificationPathDisclosed:",
+    "backgroundWindow",
+    "moveWordLeft:",
+    "insertionPointColor",
+    "absoluteURL",
+    "_zoomWithSpeedFactorForX:speedFactorForY:",
+    "_invalidateImageTypeCaches",
+    "trackMagnifierForPanel:",
+    "persistentStores",
+    "setAppearance:",
+    "encodeLong:forKey:",
+    "accessibilityHeaderAttribute",
+    "dataCellForRow:",
+    "_setOriginalString:range:",
+    "_internalInit",
+    NULL,
+    "currentFilterURL",
+    "mainRunLoop",
+    "typeForParameter:",
+    "_createCells",
+    "_startInsertionOptimization",
+    "setRetainedObject:",
+    "textUnfilteredTypes",
+    "removeServer:",
+    "setWrapped:",
+    "searchField",
+    "_setUndoRedoInProgress:",
+    "check:",
+    "IK_GIFRepresentation",
+    "transformedImage:",
+    NULL,
+    "viewsNeedDisplay",
+    "accessibilityWindowPointForShowMenu",
+    "initWithPerson:",
+    "_entityMapping",
+    "absolutePathForAppBundleWithIdentifier:",
+    "_cachedDocumentPreviewForURL:",
+    "serializeAlignedBytes:length:",
+    "setDragWindowImage:",
+    "setStringValue:",
+    "_showEffects",
+    "dateWithNaturalLanguageString:date:locale:",
+    "_computeDisplayedSizeOfString:",
+    "setMinimalSizeForText:",
+    "menuZone",
+    "_updateLengthAndSelectedRange:",
+    "_thumbnailDone:",
+    NULL,
+    "startFadeout:",
+    "elementAtIndex:associatedPoints:",
+    "_isPresent",
+    "vmUsagePolicy",
+    "mipmapItem",
+    "_sizeModeIsValidForCurrentDisplayMode:",
+    "inputKeyBindingManager",
+    "_desiredKeyEquivalent",
+    "updateCountLabel",
+    "defaultFontSize",
+    "visitPredicate:",
+    "addJoinForToOneRelationship:sourcePath:destinationPath:",
+    "_attributesFromRangeViaGetSelectedText:",
+    "imageRepWithCGImage:",
+    "_allowAnimated_replaceSubview:with:",
+    NULL,
+    NULL,
+    "setPrimitiveAppleUseCoreUI:",
+    "_canImportGraphics",
+    "subdataWithRange:",
+    "_preventsActivation",
+    "addPreferenceNamed:owner:",
+    "_addTimer:",
+    "openTooltipOnWindow:withText:atLocation:alignment:",
+    "mapTableWithStrongToStrongObjects",
+    "removeConnection:",
+    "accessibilityIsChildOfApp",
+    "setAsynchronous:",
+    "_pmKeyForKey:",
+    "fontDescriptorWithName:size:",
+    "_drawTitleStringIn:withColor:",
+    "_setProxyPort:",
+    "displayNameForType:",
+    "_validateDeclarationString:forKey:",
+    "active",
+    "buttonResult:buttonImage:inlayImage:highlightImage:figure:stripeGradient:phase:",
+    "_setTrackingRects",
+    "filenameToDrag:",
+    "display",
+    "initWithFigFormatDescription:",
+    "_dragImageForIndices:",
+    "setIsMe:",
+    "_updateDataCellControlView",
+    "registerPort:name:",
+    "iconType",
+    "distributionIdentifierForProperty:person:",
+    "drawRect:withLineWidth:",
+    NULL,
+    "_maxYWindowBorderHeight",
+    "guessDockTitle:",
+    "netServiceBrowser:didFindDomain:moreComing:",
+    "_modelPathsFromBundles:",
+    NULL,
+    "diacriticInsensitiveOption",
+    "performActivity:modes:",
+    "copyPreviewIcon",
+    "__undoableMove:context:",
+    "hideShowLastImport:",
+    "setCurrentVoiceIdentifier:",
+    "_colorWithGradientImage:",
+    "concat:",
+    "inputDevices",
+    "_setKeyboardFocusRingNeedsDisplayForCellInRect:",
+    NULL,
+    NULL,
+    "_predicateForYearlessSearchOnDatePropertyKeyPath:toManyRelationshipName:futureOnly:allNotMatch:customPropertyPath:customProperty:searchValue:label:",
+    "_getSymbolForType:",
+    "propertyTableCount",
+    "_bottomRightResizeCursor",
+    "finishEncoding",
+    "appendLabel:toVCardRep:inGroup:",
+    "usingActiveDirectory",
+    "thumbnailInfoFromMipmapItem:fromMipmap:",
+    "encodeQTTimeRange:forKey:",
+    "_handleMouseEvent:numberOfObjects:startingPoint:commandKey:shiftKey:rubberband:",
+    "_setDrawDelegate:",
+    "setSingleFieldVideo:",
+    "getCompression:factor:",
+    "renameCollection:newName:",
+    "allowsSubrowSelection",
+    "setVisualMovieBoxBackgroundColor:",
+    "_datePreferencesChanged:",
+    "_makeWindowsPerform:forEvent:inWindow:standardWindowButton:",
+    "bounds",
+    "attributedSubstringForProposedRange:actualRange:",
+    "accessibilityClearButtonAttribute",
+    "_shouldFilterEntry:",
+    "_noteAttributes",
+    NULL,
+    "set_splitView:",
+    "_userSelectionIndexesForProposedSelection:",
+    "_lastDraggedOrUpEventFollowing:canceled:",
+    "_orderFrontRelativeToWindow:",
+    "handleAnimateScrollFromPt:toPt:",
+    "commitAllAdditionsToIPhoto",
+    "drawTitle:",
+    "hasVerticalRuler",
+    "revealText",
+    "isLenient",
+    "_disposeBackingStore",
+    NULL,
+    "_prepareNicestDraw:",
+    "renderAtTime:arguments:",
+    NULL,
+    "doubleClickOpensEditPanel",
+    "_inHideFaceMode",
+    "cancelScheduleSyncPageIndex",
+    "insertObjectsIntoMasterArrayRelationship:atIndexes:selectionMode:",
+    "protocols",
+    "prepareBeginsWith:",
+    "_web_initWithDomain:code:failingURL:",
+    "location",
+    "_initializeReader",
+    "dataSourcePath",
+    NULL,
+    NULL,
+    "normalURLString",
+    "mutableSetValueForBinding:resolveMarkersToPlaceholders:",
+    "selectionStart",
+    "loadColumnZero",
+    "updateSelectionListWithNewSelectionIndexes:withModifier:",
+    "freeUselessAdditionalCaches:",
+    "_menuForNode:",
+    "_clearCGImageRefIfNotPrimary",
+    "_canOptimizeDrawing",
+    "cellForRow:column:tableView:",
+    "analysisDidFinish:",
+    "stringArrayForKey:",
+    "setEntities:forConfiguration:",
+    "stringValueForFieldNamed:",
+    "outputConnectionFormatDescriptionDidChange:",
+    "_blocksActionWhenModal:",
+    "initWithFilterInfo:upperItem:",
+    "nts_initWithUniqueId:addressBook:",
+    "cellSize",
+    "_newImageName:",
+    "autoforwardsScrollWheelEvents",
+    "EPSOperationWithView:insideRect:toData:",
+    "negativeInfinitySymbol",
+    "measurementUnits",
+    "_newObjectForContainer:inValueForKey:withClassDescription:",
+    "_setDescriptorNoCopy:",
+    "setColumnTitle:forProperty:",
+    "whatIsKeyType:",
+    "initWithCGLContext:pixelFormat:options:",
+    "setIntParameterValue:to:inResolutionData:",
+    "trackCount",
+    "expandItem:",
+    "_compareMultiLabelArrayWithRecordValue:",
+    "moviePort",
+    "signInvitationFile:outPath:",
+    "setCurrentWindow:",
+    "_setValidatedPosixName:",
+    "SCTPerformSelector:withObjectsFromArray:",
+    NULL,
+    "_handleSyncCallbackWithMessage:",
+    "_truncatesLastLine",
+    "actualRowIndexWithGroupIndex:",
+    "_registerCoreDataStoreClass:forStoreType:",
+    NULL,
+    "_initSessionDataWithHost:port:scheme:",
+    "didCreateSchema",
+    "initWithName:password:owner:applicationID:",
+    "proxyForRulebookServer",
+    "_createShaders:",
+    "_debugLoggingLevel",
+    "_didUnmountDeviceAtPath:",
+    "disposeData",
+    "_appIcon",
+    "initIOKitNotifications",
+    "loadPopup:names:skip:current:",
+    "_randomIndexForCount:",
+    "initWithFrame:useToolbar:",
+    "splitView:didMoveDivider:distance:",
+    "controlLightHighlightColor",
+    "setFirstNameNormalized:",
+    "_locationsForApplications",
+    "setAutoupdate:",
+    "hideToolTipWindow",
+    "rightMouseUpDelegate:",
+    "_windowsForMenu:",
+    "_inResize:",
+    NULL,
+    "primaryKey",
+    "shouldCascadeWindows",
+    "insertObject:atIndex:",
+    "initMakePathWithSession:path:",
+    "setComposer:",
+    "sourceSize",
+    "initWithDescriptorType:bytes:length:",
+    NULL,
+    NULL,
+    "_finishPendingEdit",
+    "labelOnlyMenuDidSendActionNotification:",
+    "typeForKey:",
+    "restoreResolutionData:from:",
+    "_setKeySize:",
+    "initWithX:Y:Z:",
+    NULL,
+    "_setOwnedByPopUp:",
+    "_itemAtIndex:",
+    "subexpression",
+    NULL,
+    "_initWithOptionFlags:maxSize:maxAge:resources:maxResources:parent:root:function:userInfo:userInfoReleaseCallback:md5List:md5Indices:md5Count:",
+    "_setWantsToolbarContextMenu:",
+    "setUndoAttributes:",
+    "_cancelWithError:",
+    "shouldPreserveDisplayStateWhenNavigating",
+    "_renameFontDescriptorWithName:to:in:",
+    "_handleValidationError:description:inEditor:errorUserInterfaceHandled:bindingAdaptor:",
+    "clearMarkedRange",
+    "isShowAllItem",
+    "_setSearchResultsCountTo:",
+    "initWithBytes:length:copy:freeWhenDone:bytesAreVM:",
+    "alloc",
+    "mappingType",
+    "getValue:",
+    "_clear",
+    "isSuspended",
+    "setLoadItemIndex:",
+    "_sound",
+    "_handleArrowMovementForChar:",
+    NULL,
+    "preferredMuted",
+    "findVoiceByIdentifier:returningCreator:returningID:",
+    "documentDidFindMatch:",
+    NULL,
+    "previewDocumentFrame",
+    "serializedValueForStateKey:",
+    "recordDatabaseOperation:",
+    "threadedFindGRLsContainingString:limitResultsTo:",
+    "_initWithType:error:",
+    "print:",
+    "addTrack:copyMedia:error:",
+    "_setStandardLocalizer:",
+    "enqueueNotification:postingStyle:",
+    "dragRectForFrameRect:",
+    "_initUI",
+    "reverseTransformedValue:",
+    NULL,
+    "year",
+    "_applicableArrowLocation",
+    "sliderCallback:",
+    "nts_ClearCachedRecordsByUniqueId",
+    "setDefaultTextColor:",
+    "setRequestBodyWithData:",
+    "isPrimary",
+    "newWithOutputIntents:quartzFilter:",
+    "_restoreOrBecomeFirstResponder",
+    "runModalForSettings:keychain:",
+    "hostingWindow",
+    "_fontFromBindingsWithMode:referenceFont:fallbackFont:",
+    "isProtected",
+    NULL,
+    "datePickerElements",
+    "sendCBEvent:withData:",
+    "_initWithThemeType:",
+    "setContainerIsObjectBeingTested:",
+    "branchImage",
+    "parseABShowAs",
+    "_handleAEReopen",
+    "_000101:",
+    "setAvoidCrossing:",
+    "setLinkInWindow:string:delegate:",
+    "_prepPanel:message:showGroup:",
+    "enumeratorOfAppleUseCoreUI",
+    "mipmapImage",
+    "_getVRefNumForPath:",
+    "selectionRectAdded:",
+    "_prefix",
+    "ourViewWasDisclosed:",
+    "openCategoryFileForEditing:",
+    "setScriptCommand:",
+    "initWithInstrument:pitch:velocity:",
+    "_initSidebarAndPopups",
+    "lockDelegate",
+    "allowsDirectoriesSearches",
+    "_scriptFlagsForKey:containFlag:",
+    NULL,
+    NULL,
+    "URIRepresentation",
+    NULL,
+    NULL,
+    "printPanel",
+    "unarchiverDidFinish:",
+    "windowDidChangeKeyState:",
+    "setSource:ofType:",
+    NULL,
+    "directTakePicture",
+    NULL,
+    NULL,
+    "_redisplayColorProfileButtonIfNeeded",
+    "setStateToSelected",
+    "initWithCGRect:",
+    "releaseView:",
+    "editingColorAdjustableObject:",
+    "convertPoint:toView:",
+    "setFont:range:",
+    "_checkGrammarOfString:startingAt:language:wrap:inSpellDocumentWithTag:details:reconnectOnError:",
+    "setImageRep:forItemIdentifiers:",
+    "invalidateResourceCache",
+    NULL,
+    "scriptErrorString",
+    "displayNameForIndex:",
+    "suiteName",
+    "initWithAppleEventCode:presentableDescription:name:",
+    "objectZone",
+    "_setZoomFactor:centerPoint:",
+    NULL,
+    "showAll:",
+    "setBoundsRect:forTextBlock:glyphRange:",
+    "directoriesSelectionChanged:",
+    "cglContext",
+    "_getFocusRingFrame",
+    "delegateBased",
+    "findSubscriptionWithRemoteLocation:addressBook:",
+    "_createValuePrimitiveGetterWithContainerClassID:key:",
+    "FilterHelpButton",
+    "deselectSelectedCell",
+    "_canFocusCellAtRow:column:",
+    "stringValueSubstitutingEntitiesForNode:ranges:names:objectValue:",
+    "searchSubscribed",
+    "setSearchField:",
+    "_handleMessage:from:socket:",
+    "_keyFromName:",
+    "_ikThumbnailImage",
+    "removeControl:",
+    "attributesForKeyPath:",
+    "setValue:forKey:forCell:",
+    "_setSidebarWidth:maintainSnap:constrain:",
+    "_crayonRowAboveRow:",
+    "_getRenderedBufferWithContext:",
+    "initWithCIImage:",
+    "pathForNode:",
+    "originalItem",
+    "changeCount",
+    "_subentityNamed:",
+    "_createOutlineDelegate",
+    "clearCachedPropertyValue:withKey:",
+    "_convertPointToSuperview:",
+    "pixelFormatM_I16",
+    "_isGeneratedClass_1",
+    NULL,
+    "middleName",
+    "_readRTFDIntoRanges:fromPasteboard:",
+    "tagList",
+    "transform:",
+    NULL,
+    "_createGroup:",
+    "printRect:",
+    NULL,
+    "imageRepresentationForPage:scaleFactor:",
+    "_newObjectGraphStyleForSQLRow:withObject:",
+    "selectedValues",
+    "rendererVendor",
+    "accessibilityIsFocusedUIElementAttributeSettable",
+    "_setVerticallyCentered:",
+    NULL,
+    "defaultTokenizingCharacterSet",
+    "isInMotion",
+    "keyWithAppleEventCode:",
+    "parser:didStartElement:namespaceURI:qualifiedName:attributes:",
+    "setLevel:",
+    "hasFocus",
+    "reset",
+    "_superviewClipViewFrameChanged:",
+    "initWithActionDictionary:forDocument:",
+    "removeObject:",
+    "nodeWithFBENode:",
+    "_scriptingDateWithDescriptor:",
+    "_removePreviousPointersToMe",
+    "filterWithGenerator:",
+    "setupResources",
+    "setIndentation:",
+    "tabViewItemAtIndex:",
+    "_stepperCellTopAndBottomTrim",
+    "setImageProperties:imageUTType:",
+    "_discardEventsWithMask:eventTime:",
+    "qt_localizedErrorWithDomain:code:userInfo:",
+    "supportsMode:",
+    "compatibilityIssueChanged",
+    NULL,
+    "_changeWasDone:",
+    "initWithRTFD:",
+    "setConditionallySetsEnabled:",
+    "_newItemFromInitPListWithItemIdentifier:",
+    "setNotANumberSymbol:",
+    "parseDistributionPoint:",
+    "boundingRectWithExtraEffects:",
+    "setPrimitiveModificationDateYearless:",
+    "removeFromCache:resolution:",
+    "_cleanUpAfterTransaction",
+    "isNativeType:",
+    "_prepareContentWithNewObject:",
+    "_setCachedMembers:",
+    "filesystemItemRemoveOperationWithPath:",
+    "scrollHorizontalBy:",
+    "removeKeyFrame:",
+    "nextItemDelta",
+    "indexOfTabViewItem:",
+    "_selectCell:inColumn:",
+    "correlation",
+    "_removeObject:objectIDMap:",
+    "toggleAutomaticLinkDetection:",
+    "addObserver:selector:name:object:",
+    "sourceDictionary",
+    "statusBar",
+    "setToolTip:",
+    "grls",
+    "_configureForShowingInPanel",
+    "_poppedTopHandling",
+    "_currentAttachmentRect",
+    "updateThumbnailForLayer:fromThumbnail:",
+    "doTextEntered:",
+    "_allowAnimated_setContentFilters:",
+    NULL,
+    "_drawScrollViewFocusRing:clipRect:needsFullDisplay:",
+    "setDrawsTrackAsColorScaleType:",
+    "currentClipRect",
+    "forgetRowForObjectID:",
+    "_nameWithStrictRequiredExtensionCheck:",
+    "halfSizePicture:pattern:image:",
+    "_setActsAsPalette:forToolbar:",
+    "unlockRequestWithSession:URI:lockToken:",
+    "nts_CreateSharedAddressBook",
+    "setValues:",
+    "countdownTabView",
+    "dsDataBuffer",
+    "documentAttributes",
+    "numLines",
+    "carbonPickerWindow",
+    "stream:handleEvent:",
+    "subscription",
+    "isBindingKeyOptional:",
+    "shadowOpacity",
+    "QTTimeValue",
+    "_stopPeriodicEventsForSource:",
+    "whiteDeviceColor",
+    "_setFocusForCell:forView:withFrame:withFocusRingFrame:withInset:",
+    "_groupsOnly",
+    "findRecordTypes",
+    "columnAtIndex:",
+    "_updatedPorts:",
+    "_registerForNotificationsWithCoordinator:",
+    "_coreUILinearDirection:",
+    NULL,
+    "didChangeValue",
+    "_transformationForString:dictionary:",
+    "extendSelectionAtEnd:",
+    "_windowWillGoAway:",
+    "numberOfMajorTickMarks",
+    "_table",
+    "_setMouseMovedEventsEnabled:",
+    "setMaxCount:",
+    "selectionBounds",
+    NULL,
+    NULL,
+    "_setBackgroundStyle:",
+    "_popupImage",
+    "validateFindPanelAction:forClient:",
+    NULL,
+    "getState:",
+    "authorizationViewReleasedAuthorization:",
+    "_stopAnimation:",
+    "initForLayer:imageLayer:flags:",
+    "deactivate",
+    "_maxXTitlebarWidgetInset",
+    "scriptingContains:",
+    "_partAtLocation:",
+    "parentNode",
+    "initWithPredicateOperator:leftExpression:rightExpression:",
+    "isRemovedOnCompletion",
+    NULL,
+    "handleDelegateMovedDiplayedProperty:toIndex:",
+    "setThreadPriority:",
+    "removeSuiteNamed:",
+    "_setInputWhiteParams:",
+    "nts_UpdateDateRelatedSmartGroups",
+    "_tableView:willRemoveTableColumn:",
+    "fileManager:shouldCopyItemAtPath:toPath:",
+    "_isCtrlAltForHelpDesired",
+    "setCache:",
+    "currentButtonClicked:",
+    NULL,
+    "_setIsEditable:",
+    "isDirectory",
+    "_sendDelegateSelectionIndexesForProposedSelection:",
+    "_numericIndicatorCell",
+    "assign:key:",
+    "_updateSize",
+    "_suiteDescriptionsByName",
+    "_prepareConst:inToMany:",
+    "rawFormat",
+    "setEmpty",
+    "importedObjects",
+    "waitImage:",
+    "_invokeDidChange:",
+    "initWithColorProfile:",
+    NULL,
+    "accessibilityIsSizeAttributeSettable",
+    "initWithClass:",
+    "_deleteMetaDataForPeople:withLock:",
+    "frameEndTime:",
+    "vectorWithX:Y:",
+    "realAddDirNamed:",
+    "_lookUpIndefiniteRangeInDictionaryFromMenu:",
+    "colorForIndex:",
+    "isHorizontallyCentered",
+    "itemObjectValueAtIndex:",
+    "jobDisposition",
+    "pasteRuler:",
+    "rulerView:shouldAddMarker:",
+    "backupFileExtension",
+    "_clearRollOver",
+    NULL,
+    "_rowEntryForRow:requiredRowEntryLoadMask:",
+    "endSetup",
+    "_collapseAutoExpandedItems:",
+    "tokenBackgroundColor",
+    "_workspaceSessionIsActive",
+    "exactSizeToCellsSize",
+    "ruleEditor",
+    "setSidebarIsOpen:",
+    "_canUserSetVisibilityPriority",
+    "setAlternateTitleWithMnemonic:",
+    "_startObservingSelectionIfNecessary",
+    "_keyValueBindingAccessPoints",
+    "menuItemCellForItemAtIndex:",
+    "_sizeWithSize:attributes:",
+    "setAllowsEditingMultipleValuesSelection:",
+    "_sizeListChanged:",
+    "_trackAttachmentClick:characterIndex:glyphIndex:attachmentCell:",
+    "copyDictionary",
+    "lineBreakMode",
+    "isIndexed",
+    "_popupSelectionAction:",
+    "changeAffineTransform:",
+    "_adjustTrailingNewline",
+    "_internalNetServiceBrowser",
+    "updateInvalidatedTextColor:forObject:",
+    "scheduleInRunLoop:forMode:",
+    "rollbackTransaction",
+    "trim:",
+    "_typesFilterableFromType:",
+    "exceptionDuringOperation:error:leftOperand:rightOperand:",
+    "heightAdjustLimit",
+    "DTD",
+    "objectIDAtIndex:",
+    "addAddressMultiValues",
+    "takeFloatValueFrom:",
+    "movieUnfilteredFileTypes",
+    "setInputOrder:forKey:",
+    "_lastScopeButtonX",
+    "accessibilityHitTest",
+    "newCreateIndexStatementForColumn:",
+    "initWithProtectionSpace:proposedCredential:previousFailureCount:failureResponse:error:sender:",
+    "defaultCStringEncoding",
+    "keyWindowChanged:",
+    NULL,
+    "_rowButtonsInterviewHorizontalPadding",
+    "dictionaryInfo:",
+    "_prepareEffectsUndo:",
+    "setDefaultInformation:",
+    "makeUntitledDocumentOfType:",
+    "_shouldUseTrackingAreasForToolTips",
+    "_multipleValueForKeyPath:atIndexPath:",
+    "setFBENode:",
+    "populateIdentifiers:values:labels:primaryIdentifier:withDataFromRecord:managedObject:property:",
+    "_sheetEffect",
+    "updatePreviewFrame",
+    "cellsStyleMask",
+    "_draggableFrame",
+    "writeDateDocumentAttribute:withRTFKeyword:",
+    "setObject:forDatabaseKey:",
+    NULL,
+    "_lightYellowColor",
+    "tagName",
+    "fillsPicker",
+    "setSidebarOnRight:",
+    "windowsMenu",
+    "parser:resolveExternalEntityName:systemID:",
+    "setToolbar:",
+    "_setFrameForAnimating:",
+    "supportsCorrelatedSubqueries",
+    "askSaveChangesWithFile:message:action:",
+    "writableTextFileTypesForDocumentTypes",
+    "tokenizeAppearanceString:",
+    "selection",
+    "viewWillDraw",
+    "mostCenteredImageIndex",
+    "_removeBinding:byReplacingWithRemainingBindingsInArray:",
+    "isEqualToNumber:",
+    NULL,
+    "_blueHighlightColor",
+    "quickTimeTrack",
+    "RTFDFileWrapper",
+    "beginUpdatePixels:colorSpace:",
+    "beginUploadTexture:colorSpace:virtualScreen:",
+    "_openBlocksForParagraphStyle:atIndex:inString:",
+    "changeCompanyStatus:",
+    NULL,
+    "_checkColumnsOnly",
+    "attributedStringForNotANumber",
+    "_sendCommitEditingSelectorToTarget:sender:selector:flag:contextInfo:delayed:",
+    "createMetadata",
+    "initWithFormat:arguments:",
+    "initWithRequest:cachedResponse:client:",
+    "_rowsInRectAssumingRowsCoverVisible:",
+    "currentMainStructure:",
+    "transformedValueClass",
+    "_isAncestorOfViewIdenticalTo:",
+    "movieEnumerator",
+    "_toggleOrderedFrontMostWillOrderOut",
+    "_setDragRef:",
+    NULL,
+    "keyForNode:",
+    "setPropagatesDeletesAtEndOfEvent:",
+    "addKeyFrameAtTime:value:preserveCurve:",
+    "iDiskUser",
+    "setPortKey:",
+    "_setHidesOnDeactivateInCache:forWindow:",
+    "_drawSelectionArea:",
+    "hasCropBox",
+    "_attachListener",
+    "_restoreDefaultSettingsCommon",
+    "allowLoadingOfUnsupportedPreviewTypes",
+    "reloadItem:",
+    "initWithSearchResult:",
+    "ruleEditor:predicatePartsForCriterion:withDisplayValue:inRow:",
+    "propertyDescription",
+    "controlView",
+    "boundingRectForGlyph:",
+    "isWrapped",
+    "predicateOperator",
+    "initializeComponents",
+    "setExtendedAttribute:forKey:atPath:error:",
+    "_tidyWithData:error:isXML:detectedEncoding:",
+    "_setLocalizationPolicy:",
+    "blueRange",
+    "removeObjectIdenticalTo:",
+    "cellsOutlineRed:green:blue:",
+    "_getComputedFloat:forNode:property:",
+    "_addOneRepFrom:toRep:",
+    "isGroup:parentOfRecord:",
+    "_setDisplayName:",
+    "_endToolbarEditingMode",
+    "startSequenceGrabber",
+    "integerForKey:",
+    "hiddenState",
+    "ISS__ay_postNotification:inThread:beforeDate:",
+    "expandedNodes",
+    "tabStops",
+    "addEntries:forKey:",
+    "_updateThumbnails",
+    "_createBrowserDelegate",
+    "doURLStuff:createdStubFile:error:options:",
+    "shouldCreateEmptyDatabase",
+    "_invalidateDateFormatter",
+    "handlePortCoder:",
+    "dispatchDoubleAction:",
+    "previousSibling",
+    "columnResizeButtonRect",
+    "_lineBreakMode",
+    "decimalNumberByAdding:withBehavior:",
+    "_adjustCharacterIndicesForRawGlyphRange:byDelta:",
+    "_promiseTypeNameForIdentifier:",
+    "_drawerBottomOffset",
+    "_prepareControllerTree",
+    "_isReferenceBinding:",
+    "_setCurrentActivation:",
+    "_scrollRectToVisible:fromView:",
+    "setAlternateImage:",
+    "IMService",
+    "_addListDefinition:forKey:",
+    "unableToSetNilForKey:",
+    NULL,
+    "changeDisplayedColorName:",
+    "setURI:",
+    "initWithData:error:",
+    "trackMarker:withMouseEvent:",
+    "rangesForUserParagraphAttributeChange",
+    "selectionRect",
+    "identifierForTimeLine:",
+    "displaysPageBreaks",
+    "ab_timeIntervalFromTodayYearLess",
+    "_autoscrollResponseMultiplier",
+    "_computeOrderedItemViewersOfType:inRange:resizeableOnly:",
+    "_createAddressFromSockaddrBuffer:",
+    "_allowsMultipleTextSelectionByMouse",
+    NULL,
+    "drawInContext:atPoint:withFontName:size:alignement:",
+    "_queryChild:ofItem:withRowType:",
+    "_stashOrigin:",
+    "_decrementSelectedSubfield",
+    "lastObject",
+    "lozengeROI:forRect:userInfo:",
+    "_drawUnifiedToolbar:",
+    "commitComposition:",
+    "sharedKeychainSettingsPanel",
+    "initWithCoreUIDrawOptions:size:",
+    "setKeyboardFocusRingNeedsDisplayIfNeededInRect:",
+    "drawTitle:withFrame:inView:",
+    "newStatementWithoutEntity",
+    "_initWithImage:optionsList:",
+    "cgImageFromSelection:",
+    "resetLDAPManager",
+    "_newUnknownItemWithItemIdentifier:",
+    "_setOptions:forBinding:",
+    "_indexForIncrementMove:",
+    "_scriptingEnumeratorOfType:withDescriptor:",
+    "_mergeChangesStoreUpdatesTrumpForObject:withRecord:",
+    "ignoresSSLCertificateErrors",
+    "isViewableByThisApp",
+    "SCTTitleColumnColor",
+    "releasePluginView:",
+    "_updateSubfieldStringsForDateChange",
+    "initWithAttributeDictionary:",
+    "getAllFiltersNotInCategories:",
+    "refreshColorProfile",
+    "_addTypeSelectAttributesForString:",
+    "interfaceStyle",
+    "caseInsensitiveCompare:",
+    NULL,
+    "entitiesByName",
+    "_webResourceClass",
+    "unselectItemsInRange:",
+    "rulerLineColor",
+    "setSearchString:",
+    "_sendingSocketForPort:",
+    "cancelButtonRectForBounds:",
+    "lineFragmentWidth",
+    "setOrder:forConsumerSubpatch:",
+    "_setDefaultButtonIndicatorNeedsDisplay",
+    "_setTabRect:",
+    NULL,
+    "draggingSource",
+    "fieldOfView",
+    "_sharedCertificatePanel",
+    "_startObservingUndoManagerNotifications",
+    "accessibilityCurrentEditor",
+    "resetTooltipView",
+    "decodeObjectForKey:",
+    "_updateAndWriteDictionaryAsNonSigned:newDictionary:",
+    "_createValueListQueryForAttribute:",
+    "_setToSMIME",
+    "isInteractive",
+    "saveFileName",
+    "selectItemWithTitle:",
+    "updateNote:changes:",
+    "_getVisibleRowRange:columnRange:",
+    "_changeSpellingToWord:",
+    "ikView",
+    "redo",
+    "createElementContentFromString:",
+    "_keyboardModifyRow:column:withEvent:",
+    "PDFOperationWithView:insideRect:toPath:printInfo:",
+    "parentContext",
+    "availableTypeFromArray:",
+    "adjustPageWidthNew:left:right:limit:",
+    "setShowsToolbarButton:",
+    "_peoplePickerSearch:",
+    "_setInlinePreviewVisible:animate:",
+    "classAttributes",
+    "_finalize_QCGraphicsContext",
+    "addSubpatch:",
+    "isBindingReadOnly:",
+    "__restorePosition:context:",
+    "setObservingBinder:",
+    "metadataColumns",
+    "accessibilityIsSelectedChildrenAttributeSettable",
+    "willChange:valuesAtIndexes:forKey:",
+    NULL,
+    "captionTextField",
+    "applyDisplayedValueHandleErrors:typeOfAlert:canRecoverFromErrors:discardEditingCallback:otherCallback:callbackContextInfo:didRunAlert:",
+    "_prepPanel:keychain:",
+    "_positionAllDrawers",
+    "getRects:count:",
+    "activeColorSpace",
+    "installPerspetiveViewportForPicking:location:",
+    NULL,
+    "setMovieClipRegion:",
+    "_copySource:toDestination:",
+    "_resizeTable:level:range:column:widthDelta:",
+    "_setDefaults:",
+    NULL,
+    "extensionsForMIMEType:",
+    NULL,
+    "parseForBasicProperties",
+    "setAutorecalculatesKeyViewLoop:",
+    "_addNumberOfIndexes:toSelectionIndexesAtIndex:sendObserverNotifications:",
+    "_hideHODWindow",
+    "_computePriorFirstResponder",
+    "_removeLayerIfOwnedByAppKit",
+    "imageBrowser:titleOfCellAtIndex:didEndEditing:",
+    "setAttributedString:",
+    "shouldDisableSync",
+    "fileDescriptor",
+    "setSidebarMode:",
+    "_currentDeadKeyChar",
+    "isFrontWindow",
+    "methodReturnLength",
+    "_layoutGlyphsInLayoutManager:startingAtGlyphIndex:maxNumberOfLineFragments:maxCharacterIndex:nextGlyphIndex:nextCharacterIndex:",
+    "updateWidth",
+    "setLocation:forStartOfGlyphRange:coalesceRuns:",
+    "shouldFlip",
+    "setDrawFocusRing:",
+    "browser:selectRow:inColumn:",
+    NULL,
+    "nts__isCompany",
+    "_posixPathComponentsWithPath:",
+    "roundedCornerRadius",
+    "createClassDescription",
+    "_forceKnowsPageRangeMessage",
+    "registerUndoWithTarget:selector:arguments:argumentCount:",
+    "bestRecordMatching:inPeople:",
+    "stepForward",
+    "_excludedFromVisibleWindowList",
+    "pushTextWidgetUndo",
+    "_setInactiveStateShowsRollovers:forSegment:",
+    "application:printFiles:withSettings:showPrintPanels:",
+    "_finalize_Noise",
+    "_postNotificationForEvent:notificationName:parent:child:fbeProperty:",
+    "_setMouseTrackingInRect:ofView:",
+    "updateRunLoop",
+    "recordPrimaryKey:forInsertedObject:withSQLEntity:",
+    "_makeSelfMutable",
+    "_createCacheNodeFromXMLElement:",
+    "countOfInputExtent",
+    "nodeEnumeratorWithMovie:",
+    "_characterIndexForMoveLeftFromSelectedRanges:",
+    "initWithMantissa:exponent:isNegative:",
+    "_nodeFromGraph:atIndex:",
+    "_getTiffImage:ownedBy:asImageRep:",
+    "_registerDragTypesLater",
+    "PDFRepresentation",
+    "setWithArray:",
+    "_systemTimeChanged",
+    "_doUserExpandOrCollapseOfItem:isExpand:optionKeyWasDown:",
+    NULL,
+    "insertEntity:intoOrderingArray:withDependencies:processingSet:",
+    "quartzFilterWithProperties:",
+    "_checkIfSpeakingThroughSpeechFeedbackWindowIsFinished:",
+    "setGoodEntropyRange:",
+    "_isAbsolute",
+    "initWithItem:dataSource:",
+    "reconcileSubdescriptionsToSuiteRegistry:",
+    "_infoForPage:",
+    "mouseHit:",
+    "dismissPopUp:",
+    "setMaxDoubleValue:",
+    "initWithFrame:menuView:",
+    "_fixedSelectionRangeForRange:affinity:",
+    "fullNumber",
+    "imageBrowser:titleOfCellAtIndex:didChangeTo:",
+    "contentRectForFrameRect:",
+    "animationManager:processCell:channel:",
+    "_iconForCarbonIcon:size:",
+    "stringRepresentation",
+    "setIconType:",
+    "hudWidthForControlArray:",
+    "portCoderWithComponents:",
+    "_layoutViewsVerticallyAndResize",
+    "_dataSourceSetValue:forColumn:row:",
+    "initWithObjects:forKeys:",
+    "baseThread",
+    "toolbar:willAddItem:",
+    "objectValueOfSelectedItem",
+    "_web_URLComponents",
+    "initWithDate:timeInterval:",
+    "_bindingCreationDelegate",
+    NULL,
+    "filenames",
+    "maidenNameFieldPresent",
+    "nicestRenderingIsDone",
+    "displaysLinkToolTips",
+    "renameListSheetDidEnd:returnCode:context:",
+    "setDefaultLineCapStyle:",
+    "uppercaseWord:",
+    "mutableArray",
+    "_resortCachedChildrenForNode:",
+    "values",
+    "_setWindowDepth:",
+    "mutableSetValueForKeyPath:",
+    "removeFilterFile:",
+    "imageEffectsView",
+    "gotoNextPage:",
+    "findAttachement:",
+    NULL,
+    "nts_SetTracksModification:",
+    "objectInInputWhiteParamsAtIndex:",
+    "handleWindowDidBecomeKey:",
+    "setFill",
+    "_startSearch",
+    "_sendDelegateValidateDropForDragInfo:",
+    "_prefetchRelationshipKey:sourceEntityDescription:sourceObjectIDs:prefetchRelationshipKeys:inContext:",
+    "tableView:frameOfCellAtColumn:row:originalFrame:",
+    "switchToListNamed:",
+    "yearOfCommonEra",
+    "_invalidateDictionary:newTime:",
+    "deviceGlobalID",
+    "sharedScriptExecutionContext",
+    "_openGLContextForCurrentLayerBackingState",
+    "numberWithFloat:",
+    "_setupControls",
+    "initWithUndoManager:",
+    "_drawAttributedString:withBoundingRect:",
+    "drawWithFrame:inView:",
+    "tableViewAction:",
+    "certificatesFromInvite:sharedSecret:certs:",
+    "_setStopError:",
+    "setupViewForPatch:",
+    "_setNoteColor:",
+    "transitionFlags",
+    "drawDisclosureBox:inContext:",
+    "coversCharacter:",
+    "operators",
+    "setTitleAlignment:",
+    "updateNameMap",
+    "_unlockViewHierarchyForModification",
+    "_updateSavedFrames",
+    "centerOfPriorityRange",
+    NULL,
+    NULL,
+    "_disableScreenUpdatesUntilRunLoop",
+    "operationHasAborted",
+    "showDeminiaturizedWindow",
+    "scaleValue",
+    "initialValue",
+    NULL,
+    "isEndMark",
+    NULL,
+    "_writeURLNameInRange:toPasteboard:",
+    "indexOfItemWithSubmenu:",
+    "scrollToBeginningOfDocument:",
+    "initWithCVImageBuffer:",
+    "queryLDAPServer",
+    "_targetViewFrameRect",
+    "setAllowedFileTypes:",
+    "textColorInvalidationCapableObjectForObject:",
+    "_delegate_shouldTypeSelectForEvent:withCurrentSearchString:",
+    "selectAll",
+    "isAutomaticQuoteSubstitutionEnabled",
+    "_computeOrderedItemViewersOfType:",
+    "_viewFromExpressions:",
+    "_web_setInt:forKey:",
+    "scrollClipView:toPoint:",
+    "_managedObjectContextDidSave:",
+    "_coreUILinearKnobIndicatorOnly:",
+    "_descriptorByTranslatingTextStorage:ofType:inSuite:",
+    "errorAction",
+    "_proxyParentedChild:",
+    "setParentPDFView:",
+    "initWithImageProvider:userInfo:size:format:flipped:colorSpace:",
+    "_coreUIImageWithName:",
+    "gotoNextSelectionPoint",
+    "_presentableResultDescription",
+    "importQuality",
+    NULL,
+    "_setMetrics:",
+    "secureURLString",
+    "_setKeyboardFocusRingNeedsDisplayInRect:force:",
+    "setBody:",
+    "_setVectorX:Y:Z:W:",
+    "valueAtIndex:",
+    "editorCenter",
+    "outputs",
+    "toManyForSourceObjectID:relationshipName:after:",
+    "_printDocumentWithSettings:showPrintPanel:delegate:didPrintSelector:contextInfo:",
+    NULL,
+    "cacheInsertStatement:",
+    "submenuRepresentedObjectsAreStale",
+    "_processElement:tag:display:depth:",
+    "_setAccessibilityStringsForNormalFileListModeControl",
+    "_createAssociationsBySource:withDestination:forEntityMapping:",
+    "inputImageIsModified",
+    "setInputCount:",
+    "_checkGrammarStartingAt:detailRange:detail:",
+    "localizedShortName",
+    "flushCaches",
+    NULL,
+    "showControls",
+    NULL,
+    "hasMediaType:",
+    "dateFromComponents:",
+    "_addExpandedNodeToObservedNodeMappingForExpandedNode:",
+    "classDescriptionsByName",
+    "setVersion:",
+    "_reCalcQualityBarWidth",
+    "enumeratorOfInputExtent",
+    "_handleFauxDisabledNodeClicked:",
+    "_firstHighlightedCell",
+    "moveToBeginningOfParagraph:",
+    "replyWithException:",
+    NULL,
+    "annotations",
+    "selectIndex:",
+    "groupsPane",
+    "_hitTestTextFieldWithStepper:inRect:ofView:",
+    "scrollIndexToVisible:",
+    "_adjustPanelForMinWidth",
+    "_timer:",
+    NULL,
+    "_clockAndCalendarStartTrackingAt:inView:",
+    "managedName",
+    NULL,
+    "_createMutationMethodsForClass:forKey:",
+    "setAllowGroupSelection:",
+    NULL,
+    "writeTableHeader:atIndex:nestingLevel:",
+    "cleanUpCardState",
+    "currentBrowserType",
+    "_setSharedDocumentController:",
+    "_loadingViewForPreview:documentPreviewView:",
+    "_specifiesSingleIndexedObjectPerContainer",
+    "setSelectionFromPasteboard:selectionHelper:",
+    "outline",
+    "drawSelection",
+    "thumbnailRefreshTimer:",
+    "runModalSession:",
+    "initWithTitle:action:keyEquivalent:",
+    "setUndoableValue:forKeyPath:updatesState:",
+    "setCompressionOptions:forConnection:",
+    "movie",
+    "lightImageResult:",
+    "positionOfGlyph:forCharacter:struckOverRect:",
+    "_addObject:forKey:",
+    "setAnimates:",
+    "eraseColor",
+    "addressValueWithEntity:",
+    "nts__fullName",
+    "_initializeFromKeychain",
+    "_sendViewWillDrawInRect:",
+    "dividerRowItem",
+    "setPanAngle:",
+    "_startMove",
+    "replyAppleEventForSuspensionID:",
+    "_setDTDString:",
+    "addPathComponentCell:",
+    NULL,
+    "_invokeSelector:withArguments:onKeyPath:ofObjectAtIndex:",
+    "_overwriteExistingFileCheck:",
+    "setPrivateAnimationMask:",
+    "saveCache:intoFile:",
+    "accessibilityParameterizedAttributeNames",
+    "_centerOnScreen",
+    "junctionForComparison:value:",
+    "cellIndexAtLocation:",
+    "_computeMaxItemViewHeight",
+    "_clearInsertions",
+    "orderOutToolTipImmediately:",
+    "documentEdited",
+    "emptyIconDatabase",
+    NULL,
+    "_rulerAccViewPullDownAction:",
+    "initWithInt:",
+    "zoom:",
+    "_setNeedsToUseHeartBeatWindow:",
+    "_alternatingRowBackgroundColors",
+    "setRemovable:",
+    "maximizeWindow:",
+    "_postCleanUltraFastRendering",
+    "_parserableStringDescription:",
+    "defaultNamespaceForPrefix:",
+    NULL,
+    "advancePastEOLUnicode",
+    NULL,
+    "noteWindowClosed:",
+    "handleReleasedProxies:length:",
+    "sizeRequisition",
+    "isRevocationStatusCode:",
+    "initWithTextureName:releaseCallback:releaseInfo:context:format:target:width:height:mipmapLevels:flipped:colorSpace:options:",
+    "_debugHeightBucketArrayDescription",
+    NULL,
+    "accessibilitySelectedChildrenAttribute",
+    "CATransform3DValue",
+    "createAttributeChildOnNode:forAttribute:type:andValue:",
+    "audioSampleRate",
+    "selectCellWithTag:",
+    "drawSelection:selected:inView:withRoundedLeftEdges:",
+    "neverPurgeHint",
+    "_attributesRequestPostHandler:",
+    "abortToolTip",
+    "setValue:forKey:inObject:",
+    "addFormField:",
+    NULL,
+    "installInputManagerMenu:",
+    "_userLibraryPath",
+    "_tabOrientation",
+    "_bumpTimeout",
+    "_minXmaxYResizeRect",
+    "userSpaceScaleFactor",
+    "_makeSureItemViewersInArray:areSubviews:from:to:",
+    "rate",
+    "isDescendentOfPath:",
+    "nativeTextureTarget",
+    "sendSelectionChangedNotification",
+    "setVariable:atIndex:",
+    "setFilestreamBlockLength:",
+    "getFloatValue:",
+    "_selectUpstream:",
+    "setCurrentSize:",
+    "readSelectionFromPasteboard:type:",
+    "_getKeyEquivalentListTable",
+    "setMaximumSize:",
+    "setPositiveSuffix:",
+    "scrollColumnsLeftBy:",
+    "weekdaySymbols",
+    "userColumnResizingAutoresizesWindow",
+    "setColumnsAutosaveName:",
+    "_userCanSelectIndex:withNewSelectedIndexes:",
+    "__setValue:forIvar:",
+    "thumbnailImageAtIndex:",
+    "sliderType",
+    "startQueryForString:withServers:userInfo:exactString:",
+    "_titleRectForCellFrame:",
+    NULL,
+    "setCloseAction:",
+    NULL,
+    "setFindString:writeToPasteboard:updateUI:",
+    "accessibilityRTFForRangeAttributeForParameter:",
+    "_displayChangedDepth",
+    "responses",
+    "_listDefinitions",
+    "localSnapshotForGlobalID:",
+    "addTooltipsForVisiblePages",
+    "imageWithCVImageBuffer:options:",
+    "_sendAVCDeviceOpcode:playbackMode:",
+    "setBounds:",
+    "_supposedNumberOfItems",
+    "_setIgnoreForKeyViewLoop:",
+    "drawFrame:",
+    "_executionMode",
+    "markedRange",
+    "setValue:forKey:",
+    "edited",
+    "_sizeAllDrawersWithRect:",
+    "tableView:toolTipForCell:rect:tableColumn:row:mouseLocation:",
+    "__restoreSelection:context:",
+    "setArgument:atIndex:",
+    "definitionForComparison:withPropertyDefinition:",
+    "dictionarypath",
+    "initWithObjectsAndKeys:",
+    "removeCommandDescriptions:",
+    "_resizeButton:imageNamed:",
+    "_scriptingRemoveValueForSpecifier:",
+    "disableScreenUpdatesUntilFlush",
+    "ISS__ay_performSelector:withObject:inThread:beforeDate:",
+    "_handleBoundsChangeForSubview:",
+    "browser:willDisplayCell:atRow:column:",
+    "sortMembers:",
+    "relinquishFocus",
+    "setController:",
+    "minimalFormInContext:",
+    "getSpinnerFrame",
+    "previewView:willLoadPreviewForURL:",
+    "_newPersistentPropertiesWithRelationshipFaultsIntact",
+    "_accessibilitySearchFieldCellBounds",
+    "issueSetImageCommandWithSmallImage:largeImage:clippingRect:",
+    "initAddressWithPeerFromSocket:",
+    "pauseNotifications",
+    "_accessibilityParentForSubview:",
+    "disconnect",
+    NULL,
+    "rubberBand:rectangleFrom:to:withEvent:",
+    "replaceString:withString:ranges:options:inView:replacementRange:",
+    "_setInstalled:",
+    "layerBeingDrawn",
+    "_isSelectedPart:",
+    "sendDidReceiveData:originalLength:",
+    "existsInKeychain:",
+    NULL,
+    "_doUserParagraphStyleLineHeight:fixed:",
+    "handleInitialContentRenderSkip",
+    "_effectiveFrameForDrawnFrame:ofDividerAtIndex:",
+    "addLanguageToChoices:",
+    "initWithExtent:format:options:",
+    "stringWithCString:",
+    "fidelity",
+    "captureOutput:didFinishRecordingToOutputFileAtURL:forConnections:dueToError:",
+    "constrainScrollPoint:",
+    "contentResizingMask",
+    "setSound:",
+    "initWithNode:delegate:",
+    "wait",
+    "initWithCachedResponse:request:key:",
+    NULL,
+    "switchedToToFullScreen",
+    "setAttributeRuns:",
+    "willChangeValueForKey:forIndexes:",
+    "initWithTreeNode:",
+    "movieFileTypes:",
+    "_clearFormatDescription",
+    "_chooseSizeFromField:",
+    "setPrimaryKeys:",
+    "_shutDrawer",
+    "focusImageAtIndexAndRedisplay:",
+    NULL,
+    "setTokenizingCharacterSet:",
+    "addObjectsFromArray:",
+    "groupPropertyTypes",
+    "_resetFirstResponder",
+    "setWidgets:",
+    "isPeoplePicker",
+    "_windowRef",
+    "toolbar:didRemoveItem:",
+    "_addOverride:forKey:",
+    "_slicePlusButtonClick:",
+    "animationCurve",
+    "valueForStateKey:",
+    "cacheUsedByProxyBitmapRep",
+    "defaultRecentPictureWithOriginalData:cropSize:",
+    "selectionIndexes",
+    "_forceClosed",
+    "isSubviewCollapsed:",
+    "setNumberOfLights:",
+    "_goThroughWhitespace:forPosition:",
+    "tokenField:shouldUseDrawingAttributes:forRepresentedObject:",
+    "_timeout",
+    "revertToContentsOfURL:ofType:error:",
+    "_notifyObservers",
+    "synchronizeBackBufferIfNeeded",
+    "autoPositionMask",
+    "policyValuesForTrust:",
+    "contextWithPixelFormatAttributes:options:",
+    "_generateSQLBeginsWithStringInContext:",
+    "removeParamDescriptorWithKeyword:",
+    "rowForDisplayValue:",
+    "_openOldFavorites",
+    "setDisplaysPageBreaks:",
+    "setRecentsAutosaveName:",
+    "prepareIn:swap:",
+    "_loadPickerBundlesIn:",
+    NULL,
+    "_showHideToolbar:resizeWindow:animate:",
+    "_dimmedImage:",
+    "_isMenuMnemonicString:",
+    "isUndoRegistrationEnabled",
+    "_saveUserPanelValues",
+    "validateResourceURL:withOptions:",
+    "_launchSpellChecker:",
+    "removeKeysForObject:",
+    "accessoryControllers",
+    "_coreUILinearBarNoIndicator:",
+    "setDisabledImage:forControlTint:",
+    "__patchUpdated:",
+    NULL,
+    "mouseEntered:withFrame:inView:",
+    "_removeOldestSubthumbnail",
+    "_pathForFSRef:",
+    "_allSubviewsAreOpaque",
+    "_updateLayerOpacityFromView",
+    "_askDelegateWithURL:realm:forRequest:failureCount:failureResponse:protocol:withCallback:context:",
+    "setLocalizationDictionary:",
+    "singlestep:",
+    "initWithEffectName:",
+    NULL,
+    "internalNameForEntityName:version:",
+    "_initForPropPatchWithPatchDict:deleteProperties:",
+    "minimumGroupWidth",
+    "draggedImage:movedTo:",
+    "switchToImageWithTransition:orientation:autoPlay:",
+    "setFrame:display:",
+    "observedNode",
+    "hideOtherApplications:",
+    "createLayerForTool:event:",
+    "significantText",
+    "foldComparisonPredicate:",
+    "generatePageViewBounds",
+    "defaultBackupManager",
+    "initTitleCell:",
+    "_enableTrackingArea:",
+    "addBorderToDictionaryRef:",
+    "systemTimeZone",
+    "secondaryInvocation",
+    "writeToPasteboard:",
+    NULL,
+    "draggingImageForRowsWithIndexes:inColumn:withEvent:offset:",
+    "runLoopModes",
+    "setupLayers",
+    "greenPreBlurROI:destRect:",
+    "enlargedBounds:withOffset:andCount:",
+    "removeAllExpandedNodes",
+    "clearSearchField",
+    "_stringByResolvingSymlinksInPathUsingCache:",
+    "initWithScheme:host:path:",
+    "formData",
+    "insertLineBreak:",
+    "highlight:",
+    "decimalNumberByDividingBy:",
+    "didUpdateValueForKey:forCell:",
+    "isCompatibleWithSubscription:",
+    "_specialServicesMenuUpdate",
+    "displayStringsForAttributes:includeBoldItalic:",
+    "_setTitleNeedsDisplay",
+    "frameAtIndex:animationValue:",
+    "_showsNode:",
+    "_indentationForRow:withLevel:isSourceListGroupRow:",
+    "initWithKey:value:",
+    "elementCount",
+    "_drawContextMenuHighlightForIndexes:clipRect:",
+    "_textAttributes",
+    "altersStateOfSelectedItem",
+    "nibInterface",
+    "valueForTag:client:",
+    "didChangeAttributeForKey:",
+    "disableUndoRegistration",
+    "_invalidateForSubviewFrameChange:oldSize:oldTopLeft:",
+    "changeDirectoryForGoIntoNode:",
+    "addValue:withLabel:",
+    "matrixReloaded",
+    "_editor:didCommit:withOriginalDelegateInvocation:",
+    "endModalSession:",
+    "_useTigerMetricsForLeftUnborderedOffset",
+    "_types",
+    "_drawerCloseThreshold",
+    "titleComponent",
+    "_postColumnDidMoveNotificationFromColumn:toColumn:",
+    "openCodeFile:withEncoding:",
+    "appendBezierPathWithRoundedRect:xRadius:yRadius:",
+    "_visibleRectOfLayer:",
+    "drawInContext:withBounds:",
+    "startQueryForString:withServers:",
+    "_convertStringToNumber:",
+    "gestalt:forDisplayID:",
+    "imageWithPath:",
+    "_setValue:type:forParameter:",
+    "primitiveSortingFirstName",
+    "languageName",
+    "_pageDownWithEvent:",
+    "hasRunLoop:",
+    "registerPlugin:forType:",
+    "writeWithBackupToFile:ofType:saveOperation:",
+    "_markSelfAsDirtyForBackgroundLayout:",
+    "_endEditingIfNecessaryWhenDeselectingColumnRange:",
+    "showAtPoint:",
+    "photoCacheDirectoryPath",
+    "movieWithAttributes:error:",
+    "spaceItemSize",
+    "_userCanSelectCell:",
+    "removeBookmark:",
+    "indexOfCrayon:",
+    "setTopLevelObject:",
+    "contextExpression",
+    "escapeKey:",
+    "maximumRange",
+    "_portInvalidated:",
+    "imageRepsWithContentsOfFile:",
+    "ejectButtonCell",
+    "openURLs:withAppBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifiers:",
+    "enterSlideshowFullScreen",
+    NULL,
+    "getComputedStyle::",
+    "setPrintJobTitle:",
+    "instanceMethodDescriptionForSelector:",
+    "_attributesFromComposition:",
+    "runMode:untilDate:",
+    "initWithBytesNoCopy:length:encoding:freeWhenDone:",
+    NULL,
+    "nts_DescriptionDictionary",
+    "_setShowOpaqueGrowBox:",
+    "_createFontPanelSizeRep",
+    "encodeSMPTETime:forKey:",
+    "tableView:heightForRow:",
+    "filterInfo",
+    "serializeDataAt:ofObjCType:context:",
+    "_setActualSize:",
+    "addDrawerWithView:",
+    "hasOpenPopupAnnotations",
+    "grouping",
+    "_setPlaceholderForValue:inObject:",
+    "attemptRecoveryFromError:optionIndex:",
+    "rootContext",
+    NULL,
+    "_compareSingleDictionaryKeyWithRecordValue:",
+    "mouseDownMovesWindow",
+    "initWithKey:type:access:isHidden:",
+    "beginLoadingImageForEmails:forClient:",
+    "didFailWithError:",
+    "setImageWithURL:",
+    "miniwindowImage",
+    "setTransformStruct:",
+    "isFinished",
+    "_setRTFDFileWrapper:",
+    "previewPanelSelectPreviousItem:",
+    NULL,
+    "openHandCursor",
+    "addAdditionalField:",
+    "valuePointerFunctions",
+    "setJobStyleHint:",
+    "isEnabled",
+    "_isEditable",
+    "textView:clickedOnCell:inRect:",
+    "graphicsContextWithWindow:",
+    "_windowAnimationVelocity",
+    "aeDesc",
+    "_rangeForMoveDownFromRange:verticalDistance:desiredDistanceIntoContainer:selectionAffinity:",
+    "sortedPropertyValuesWithKey:addressBook:",
+    "processGRLs:currentGRL:withTitle:withCurrentPriority:pruneList:",
+    "objectForKey:inDomain:",
+    "updateButtons",
+    "imageWithPDF:atSize:angle:center:intoRect:fillWith:redB:greenB:blueB:redW:greenW:blueW:",
+    "initWithStart:len:",
+    "cgImageRepresentation",
+    "prepareEditorWithString:attributes:",
+    "clockPreferencesChanged:",
+    NULL,
+    "_dataAtIndex:",
+    "shadowComponentSize",
+    "_subviewsOrDividersHaveChangedSinceAdjustment",
+    "deselectIdentifier:forPerson:",
+    "longCharacterIsMember:",
+    "_keyboardDelayForPartialSearchString:",
+    "copyAnyResource",
+    "setAllowsCursorRectsWhenInactive:",
+    "baseSetter",
+    "setViewFrame:inCellFrame:inView:",
+    NULL,
+    NULL,
+    "setNotificationDelegate:",
+    "_setBundleForHelpSearch:",
+    "validateForUpdate:",
+    "_hashMarkDictionaryForDocumentView:measurementUnitName:",
+    "minDate",
+    "unlockOperations",
+    "_computeToolbarItemKeyboardLoop",
+    "getRed:green:blue:alpha:",
+    "_nodeFromArchive:",
+    "cyanColor",
+    NULL,
+    "initListMembersWithURL:showHidden:",
+    "actualIndexForIndex:filtered:",
+    "_convertPointFromSuperview:test:",
+    "removeCIFilter:",
+    "exportedKeys",
+    "fieldDataForOid:inCert:auxData:",
+    "preloadURL:",
+    "setMovableByWindowBackground:",
+    "removeViewFromSuperview",
+    "_testPartUsingDestinationFloatValue:",
+    "_lastPageNumber",
+    "_sharedOidParser",
+    "initWithGroup:members:showAs:addressBook:",
+    "_displayValueForPredicateOperator:",
+    "imageTransform",
+    "peoplePane",
+    "imageNamed:",
+    "_setTransactionAborted:",
+    "setValueTransformer:forName:",
+    "_drawsNothing",
+    "synchronizeTableViewSelectionWithText:",
+    "enterFullscreenForView:withEffect:frame:fromPanel:",
+    "addView:",
+    "initWithSelector:argumentArray:",
+    "setDataSourceIndex:",
+    "addObject:",
+    "initWithRole:parent:",
+    "setAllProperties:",
+    "directoryContentsAtPath:matchingExtension:options:keepExtension:",
+    "doIconify:",
+    "modes:",
+    "setStore:",
+    "rotateByRadians:",
+    "_initializeAccessorStubs",
+    "address",
+    "heightFieldFrom:radius:",
+    "writePaperSize",
+    "transactionDidRollback",
+    "encryptComponents:",
+    "_delegateWillDisplayOutlineCell:forColumn:row:",
+    "mutableArrayValueForKey:",
+    "tracksModification",
+    "_compressorDidRenderConnection:busNumber:processHints:sampleBuffer:",
+    "initWithFrame:text:",
+    "_initWithCGColorSpaceNoCache:",
+    "baseAddress",
+    "saveList:",
+    "restOfKeyPathIfContainedByValueForKeyPath:",
+    "_isMetadataDirty",
+    "_dirtyRectUncoveredFromOldDocFrame:byNewDocFrame:",
+    "indexOfDirectory:",
+    "_children",
+    "_handleText:",
+    NULL,
+    "selectedNodes",
+    "setSelected:",
+    "_printDocumentsWithContentsOfURLs:settings:showPrintPanels:delegate:didPrintSelector:contextInfo:",
+    "dequeueAllOperations",
+    "_keyValuePairArrayForDictionary:reuseKeyValuePairsFromArray:",
+    "_certView",
+    "setMaximumFractionDigits:",
+    "setControllerVisible:",
+    "infoWindowController",
+    "displayNameAtIndex:",
+    NULL,
+    "_defaultValueForAttribute:range:",
+    "didChange:valuesAtIndexes:forKey:",
+    "ISS__ay_postNotificationName:object:inThread:",
+    NULL,
+    "_loadXMLData",
+    "setParentCrayonView:",
+    "deleteToBeginningOfParagraph:",
+    "processXMLDeclaration:",
+    "apply:context:",
+    "initWithContainerClassDescription:containerSpecifier:key:test:",
+    "_classSynonymDescriptionsFromImplDeclarations:presoDeclarations:",
+    "_toolTipManagerWillRecomputeToolTipsByRemoving:adding:",
+    "_handleAEQuitWithActivating:documentSaving:",
+    "_initInfoSession",
+    "_endListeningForApplicationStatusChanges",
+    "accessibilitySelectedTextRangeAttribute",
+    NULL,
+    "readPixelsFromBounds:toBaseAddress:withBytesPerRow:pixelType:",
+    "accessibilitySetSelectedTextRangesAttribute:",
+    NULL,
+    "selectedCells",
+    "undoMenuTitleForUndoActionName:",
+    "accessibilitySetPositionAttribute:",
+    "_createAttributedSubstringWithRange:",
+    "_inScaledWindow",
+    "_bitBlitSourceRect:toDestinationRect:",
+    "readDataOfLength:buffer:",
+    "_dynamicToolTipManagerInstances",
+    "inputElement",
+    "languageCode",
+    "initSpecialRecordWithUniqueId:addressBook:",
+    "linkedToLayerType",
+    "_endedLoadingURL:documentPreviewView:result:",
+    "_removeSubentity:",
+    "_performSwitchToIconMode",
+    "matchesPattern:",
+    "decodeBoolForKey:",
+    "_resizeWindowWithMaxHeight:",
+    "_shiftBucketDataFromIndex:by:insertionData:",
+    NULL,
+    NULL,
+    NULL,
+    "initWithExternalName:",
+    "createSymbolicLinkAtPath:withDestinationPath:error:",
+    NULL,
+    "newListName:",
+    "clearCacheForGroup:",
+    NULL,
+    "useCGForNicestRendering",
+    "dataRefType",
+    "finalizeForWebScript",
+    "registerDefaults:",
+    "resetQueryForChangedAttributes:",
+    "displayForLayerTime:displayTime:",
+    "setObjectID:",
+    "setRoundingIncrement:",
+    "cornerView",
+    NULL,
+    "drawListBox:inContext:",
+    "_appendSanitizedTextBytes:length:encoding:isSymbol:attributes:",
+    "copyStandardSidebarNodeTitles",
+    "setup",
+    "initWithFrame:scale:",
+    "_setOutlineImagesForRow:",
+    "forgetWord:language:",
+    "remoteLocation",
+    "_runLoop:removePort:forMode:",
+    "setGutterWidth:",
+    "beginEntityMapping:manager:error:",
+    "setURL:blockingUntilLoading:timeoutDate:",
+    NULL,
+    "_dataSourceRespondsToWriteDragData",
+    "_propagatePendingDeletesAtEndOfEvent:",
+    "instantiateNibWithOwner:topLevelObjects:",
+    "_lockForWriting",
+    "_convertRect:toAncestor:",
+    "_postWillScrollNotification",
+    "newInsertStatementWithRow:",
+    "_menuPanelInitWithCoder:",
+    "_validateWithSchemaAndReturnError:",
+    "cost",
+    NULL,
+    "_isTerminating",
+    "customPropertyDefinitionWithName:addressBook:",
+    "setPixelBufferAttributes:",
+    "directionForPort:",
+    "setFullPath:",
+    "moveDown:",
+    "_initWithEntity:withID:withHandler:withContext:",
+    "_releaseResources",
+    NULL,
+    "_setFilterPredicateNoCopy:",
+    "viewHasToolTips:",
+    "_menuLocationForEvent:inCellFrame:ofView:",
+    "setOpenGLPixelFormat:",
+    "noteMembersSelectionChanged:",
+    "numberOfSelectedRows",
+    "username",
+    "isMainInputController",
+    "mapForClass:",
+    "_loadPreview:withDocumentPreviewView:",
+    "animateTransition:",
+    "setMigrationManager:",
+    "_changed",
+    "kernelsWithString:messageLog:",
+    "maximumAge",
+    "advanceMonthButtonCellForDatePickerCell:",
+    "managedObjectContextForAddressBook:",
+    "revertPaste:",
+    "addSingleButton",
+    "classNameForClass:",
+    "initForContext:",
+    NULL,
+    "_checkGrammarInString:language:details:",
+    "_alignFirstVisibleColumnToDocumentViewEdge:",
+    "maximumRangeOfUnit:",
+    NULL,
+    "_reverseCompare:",
+    "contentsRect",
+    "preservesSelection",
+    "mappingForAttribute:forConfigurationWithName:",
+    "removeLayoutManager:",
+    "_themeTabAndBarArea",
+    "_addInput:forKey:",
+    "setPerson:",
+    "_loadFromDocument:",
+    NULL,
+    "progressPanel",
+    "_noteNote2:",
+    "pointerValue",
+    "mask",
+    "_retainedObjectsFromRemovedStore:",
+    NULL,
+    "tableOptionsPanel:",
+    "_parameterValues",
+    "updateTimebase:",
+    "trackedCell",
+    "initWithSet:copyItems:",
+    "_appendBezierPathWithRoundRect:cornerRadius:",
+    "decimalNumberBySubstracting:withBehavior:",
+    "setUsingDefaultVoice:",
+    "commitEditing",
+    NULL,
+    "_renameCollection:to:",
+    "setTrustValues:",
+    "restoreKeyboardFocus:",
+    "navNodeClass",
+    "_setUtilityWindow:",
+    "_scrollByDelta:",
+    "tickMarkPosition",
+    "_activate",
+    "mutableDictionary",
+    "_fillGlyphHoleForCharacterRange:startGlyphIndex:desiredNumberOfCharacters:",
+    "presentationWindowForError:originatedInWindow:",
+    "addItemWithTitle:action:keyEquivalent:",
+    "nts_MoveIntoAddressBook:",
+    "_addBindVarForConstVal1:inContext:",
+    "setContainerClassDescription:",
+    "adjustOffsetToNextWordBoundaryInString:startingAt:",
+    "_supportsVariableHeightRows",
+    "enableUpdates",
+    "_hasCursorRects",
+    "initWithCGColorSpace:",
+    "copyCustomAttributes:",
+    NULL,
+    NULL,
+    "_bindItemImageInVRam:domain:vramNode:",
+    "startRectForSheet:",
+    "removeObject:range:identical:",
+    "_direction",
+    NULL,
+    "scaledImageSize",
+    "arrayWithArray:",
+    "_addToolbarItemToToolbarFromMenuItem:",
+    "setMovieAttributesFromUserData",
+    "textField",
+    NULL,
+    "setWeek:",
+    "_brightColorFromPoint:fullBrightness:",
+    "perform:",
+    "updateControls",
+    "fileSystemAttributesAtPath:",
+    "CA_pathWithComponents:",
+    NULL,
+    "performFindPanelAction:",
+    "_setSurface:",
+    "seekToFileOffset:",
+    "requiresValue",
+    "dispatchInstruction:",
+    "addAlreadyAddedToiPhotoButton",
+    "setParagraphGlyphRange:separatorGlyphRange:",
+    "_unnestListAtIndex:markerRange:",
+    "writeDate:",
+    "_web_rangeOfURLResourceSpecifier_nowarn",
+    "_allowAnimated_setBoundsOrigin:",
+    "hasRAMCache",
+    "sharedNetworkController",
+    "_insertNewItemWithItemIdentifier:atIndex:notifyDelegate:notifyView:notifyFamilyAndUpdateDefaults:",
+    "invalidateLastSelectedIndex",
+    "nextActions",
+    "setCustomizedName:",
+    "initWithOptions:refcon:callbacks:",
+    NULL,
+    "_fileWrapperOfType:",
+    "_senderIsInvalid:",
+    "setFrameFromContentFrame:",
+    "__selectionFilter:",
+    "widthTracksTextView",
+    "freeAttributes",
+    "webPlugInCallJava:method:returnType:arguments:",
+    "setOnStateValue:",
+    "parseField:atIndex:",
+    "objectByApplyingXSLTAtURL:arguments:error:",
+    "saveTrustValuesInDomain:",
+    "_parseText1",
+    "appendTransform:",
+    NULL,
+    "_appendColorPicker:",
+    "_addPlugInsFromPath:allowNonExecutable:checkForExistingPlugIn:",
+    "setDescriptionFunction:",
+    "_enablePrivateEditing",
+    "_draggingTypes",
+    "capitalizedString",
+    "hasNodeLabel",
+    NULL,
+    "currentTime",
+    "_isAnyFontBindingBoundToController:",
+    "_applyAudioChannelVolumesFromAttributes",
+    NULL,
+    "setUsesIndexLabels:",
+    "_initWithRequest:delegate:directory:",
+    "_descriptorByTranslatingArray:ofObjectsOfType:inSuite:",
+    "initWithImageSource:options:",
+    "storeMin:andMax:ofObject:",
+    NULL,
+    "_searchCriteriaWithSlices:anyAttribute:",
+    "isVerticallyResizable",
+    "createRenderingContextForCharacterRange:typesetterBehavior:usesScreenFonts:hasStrongRight:maximumWidth:",
+    "peopleOrCompaniesSelection",
+    "nodeType",
+    "shouldStartTaskNamed:",
+    "resultCount",
+    "rangeOfNominallySpacedGlyphsContainingIndex:",
+    "setCompositionParameterView:",
+    "_newMappingForPropertiesOfRange:",
+    "startWithView:itemIndex:",
+    "_sendMenuClosedNotification",
+    "_servicesMenuHasBeenBuilt",
+    "setUpSourceForData:",
+    NULL,
+    "setBool:forKey:",
+    "expressionType",
+    "setDestinationOrigin:travelTimeInSeconds:",
+    "_insertGlyphs:elasticAttributes:count:atGlyphIndex:characterIndex:",
+    "toolbarType",
+    "addObservedKey:",
+    "inputConnectionFormatDescriptionDidChange:",
+    NULL,
+    "endSelectionProcess:",
+    "_searchForImageNamed:",
+    "shapeDepth",
+    NULL,
+    "mainWindowFrameColor",
+    "attachColorList:systemList:makeSelected:",
+    "_pushHandling:",
+    "_pageLayout:wasPresentedWithResult:inContext:",
+    "accessibilityIsDocumentAttributeSettable",
+    "setCanRead:",
+    "showsCertButton",
+    "addPathToLibrarySearchPaths:",
+    "traceWithFlavor:priority:format:arguments:",
+    "isExpansionToolTipInView:withDisplayInfo:",
+    "tokenFieldCell:menuForRepresentedObject:",
+    "setRenderingFlags:",
+    "setOrderedState:",
+    "_enableObserving",
+    "_rectsForMultiClippedContentDrawing",
+    "_setGraphView:",
+    "alternateMnemonic",
+    NULL,
+    NULL,
+    "sound:didFinishPlaying:",
+    "_setKeyViewGroupBoundaryNeedsRecalc:",
+    "autoresizesOutlineColumn",
+    "appleEventCode",
+    "printInfoDidChange:",
+    "setTitle:ofItemWithIdentifier:",
+    "saveParameter:to:",
+    "_validatePropertiesWithError:",
+    "setComposition:",
+    "endRenderTexture",
+    "_setRecents:",
+    "_acceptsFirstResponderWhenSelectableWithFullKeyboardAccess",
+    "_shouldDrawTwoBitGray",
+    "_ensureNoStatementPrepared",
+    "binderSpecificFlagAtIndex:",
+    "drawKeyEquivalentWithFrame:inView:",
+    "setEntryType:",
+    "initWithBulletCharacter:length:",
+    "_insertObjectWithGlobalID:globalID:",
+    "_listResources:",
+    "trackingTokenTextView:",
+    "nilSymbol",
+    "pixelFormatRGB8",
+    "orderedByStart",
+    "retainResource",
+    "needsPanelToBecomeKey",
+    "_postRedoLayout",
+    "_calculatePreviewThumbnailImageWithMaxSize:isThumbnail:",
+    "setLineWidth:",
+    "emulateUpdateCard:withImportedCard:changes:",
+    "setupLoadedNib",
+    "parseAuthorityKeyId:",
+    "_willPresentDisablingAutosavingError:forURL:",
+    "calcSize",
+    "usesAlternatingRowBackgroundColors",
+    "canGoBack",
+    NULL,
+    "finalValueForKey:forCell:",
+    "newForeignKeyID:entity:",
+    "clearGLContext",
+    "storeObject:forUID:forResolution:forKey:",
+    "computeContentSize",
+    "_includeSubslicesForSlicesAtIndexes:",
+    "_findRecordsOfTypes:withAttribute:value:matchType:retrieveAttributes:allowBinary:",
+    "_learnSpellingFromMenu:",
+    NULL,
+    "encodeArrayOfObjCType:count:at:",
+    NULL,
+    "precomposedStringWithCompatibilityMapping",
+    "forceSetMode:",
+    "serializePropertyList:",
+    "drawNode:bounds:view:",
+    "_shouldLinkItemAtPath:toPath:",
+    "syncToViewUnconditionally",
+    "setValueSelectionBehavior:",
+    "checkSpellingOfString:startingAt:",
+    "convertFromAncestor:toView:clipTo:",
+    "memberForKey:",
+    "constraints",
+    "bestLocationRepFromURL:",
+    "_entryForSpecifier:",
+    "runModal",
+    "rangeToParent",
+    "setDisplayLinkLock:",
+    NULL,
+    "_sendPartialString",
+    "_defaultSelectedKnobColor",
+    "opaque",
+    "eject",
+    "_endDragging",
+    "linesOfFile",
+    "initWithPath:logonOK:",
+    "valueWraps",
+    "setTitleColor:",
+    "scheduleDelayedUpdate",
+    "_queryViewOptions",
+    "windowDidMiniaturize:",
+    "_panelMessage",
+    "_caseSensitiveCompare:",
+    "_changedObjectIDs",
+    "_addEditableSubfieldForElement:dateFormat:",
+    "outputImageKey",
+    "setOriginalTemplate:",
+    "eventParameterWithData:type:size:",
+    "_showNewestSubthumbnail",
+    "boundsAsQDRect",
+    "setUpdatePreviewSize:",
+    "_performServiceFromDictionary:withPasteboard:",
+    "PDFViewWillChangeScaleFactor:toScale:",
+    "resignMainWindow",
+    "attachmentFrame",
+    "negativeSuffix",
+    "setInlinePreviewURL:",
+    "removeFontTrait:",
+    "_finishAutosavingWithSuccess:context:",
+    "checkIfCanStartSlideShow",
+    "_eventRefInternal",
+    "stringParameterValue:",
+    "_initWithFontAttributes:options:",
+    "scriptingIsLessThanOrEqualTo:",
+    "removePageAtIndex:",
+    "findVisiblePages",
+    "prefetchThumbnailsProgress",
+    "vector",
+    "_compareNode:withDisplayName:toNode:withDisplayName:",
+    "deleteToBeginningOfLine:",
+    "insertAppleUseCoreUI:atIndexes:",
+    NULL,
+    "_ignoresViewTransformations",
+    "_discardCursorEventsForWindowNumber:criteria:",
+    NULL,
+    "timeIntervalSinceNow",
+    "dictionaryAtURL:errorCode:securely:",
+    "_validatePagination",
+    "createRepresentationFromProvider:ofType:withOptions:",
+    NULL,
+    "windowDidMove:",
+    "_parseHeader",
+    NULL,
+    "_inFavMode",
+    "PDFViewPerformGoToPage:",
+    "mouse:",
+    "_appendEventDeclarationsToAETEData:includingParts:",
+    "setRightChild:",
+    "_resizeLeftCursor",
+    "_sendClientMessage:arg1:arg2:",
+    NULL,
+    "setCell:selected:",
+    "speechFeedbackServicesTimer",
+    "initWithName:password:applicationID:",
+    "relatedMatchesForName:label:givenLastName:",
+    "deviceDeltaZ",
+    NULL,
+    "cachedImageForItemClass:",
+    "restoreGraphicsState",
+    "_computeTargetItemsByRegenerating:",
+    "_noteToolbarSizeModeChangedAndPostSyncSEL",
+    "enabledStateAtIndexPath:",
+    "deinterlaceVideo",
+    "sendDidFinishLoading",
+    "_registerForDocViewFrameAndBoundsChangeNotifications",
+    "_iChatEncryptionUsage",
+    "_valueClassIsSortableWithBinding:",
+    "_customTitleFrame",
+    "writePrintInfo",
+    NULL,
+    "copy",
+    "openUntitledDocumentAndDisplay:error:",
+    "method",
+    "isAdditive",
+    NULL,
+    "updateMovieControllerBounds",
+    "_copyCoreUILinearBarDrawOptionsWithView:",
+    "isConcurrent",
+    "_badgeForString:",
+    "SCTPerformDelayedSelector:withObject:afterDelay:",
+    "customCall:inputData:outputData:",
+    "refreshControlBarIfNecessary:",
+    "_eventDataDictionary",
+    "_windowMoved:",
+    NULL,
+    "_prepPanel:identities:",
+    "removeElementsInRange:",
+    "availableFontNamesWithTraits:",
+    "colorPanelColorChanged:",
+    "unregisterSearchDataSource:",
+    "_removeSubrowsForRow:fromSet:",
+    NULL,
+    "setKeysAndEncoding:",
+    "_documentPreviewFailedToLoad:",
+    "senderDidResignActive:",
+    "scriptCommand",
+    "databaseVersion",
+    "showPeopleButton",
+    NULL,
+    "_proxyShare",
+    "_setNeedsDisplayFromMainThread",
+    "underlyingDataAreVolatile",
+    "allPropertyKeys",
+    NULL,
+    "_stringByStandardizingPathUsingCache:",
+    "invalidateShadow",
+    "resourcesInit",
+    "modificationDateYear",
+    "configureForDisplayedFileProperties:",
+    "loadThumbnailForURL:",
+    "_installHeartBeat:",
+    "_setColumnName:",
+    NULL,
+    "_web_guessedMIMEType",
+    "_buildGraphUnitsForInputConnection:error:",
+    "setType:",
+    "_shiftDown::::",
+    "setNumberOfRows:",
+    "backgroundQueue:invocationExceededQueueLimit:",
+    "_imagesWithData:hfsFileType:extension:zone:expandImageContentNow:includeAllReps:",
+    "CA_stringByDeletingPathExtension:",
+    "_setRef:toObj:",
+    "cgImage",
+    "_kitNewObjectSetVersion:",
+    "initWithPointerFunctions:",
+    "updateGRLResults:",
+    NULL,
+    "_addTrackingTag:",
+    "contentAspectRatio",
+    "_setLocality:",
+    "segmentedBuffer",
+    NULL,
+    "allowsGroupEditing",
+    "cachedSize",
+    "_setIsFlattened:",
+    "stringWithKey:",
+    "imageRepWithData:",
+    "clearGroupsSelection",
+    "addOutput:error:",
+    "columnTitleForIdentifier:",
+    "_resourceLoadLoop:",
+    "isDragging",
+    NULL,
+    "_appendSubThumbnail:",
+    "getResolutionData:carbonMetricsTop:left:bottom:right:",
+    NULL,
+    "_attachedSheet",
+    NULL,
+    "initWithKey:isStored:",
+    "_registerDragTypes:",
+    "passesFilterAtIndex:",
+    "decodedValueForKey:ofClass:fromDictionary:",
+    "setControlView:",
+    "_retrySavingAndReturnError:",
+    NULL,
+    "__isPatchInUse:",
+    "_viewKnowsPages",
+    "accessibilityWindowAttribute",
+    "removePersistentDomainForName:",
+    "setNotationName:",
+    "_setValue:forKeyPath:ofObject:mode:validateImmediately:raisesForNotApplicableKeys:error:",
+    NULL,
+    "loadUI",
+    "copyObject:",
+    "_writeURLStringsWithNamesInRange:toPasteboard:",
+    NULL,
+    "_primitiveSetDefaultNextKeyView:",
+    "displayStateForNode:",
+    "_getReadableNotWritable:types:forDocumentClass:",
+    "adjustScroll:",
+    NULL,
+    "datasourceDidChange",
+    "eventNumber",
+    "rulersVisible",
+    "_metrics",
+    "setTemplate:",
+    "GFDictionaryEnumerator",
+    "_doClickAndQueueSendingOfAction:",
+    "advanceToString",
+    "setKey:atIndex:",
+    "_isValidRelationshipDestination",
+    NULL,
+    "_cacheUserKeyEquivalentInfo",
+    "_useSimpleTrackingMode",
+    "queueLimit",
+    "setEndSubelementIndex:",
+    "errorMessages",
+    "countFiltered:",
+    "_acceptableRowAboveRow:minRow:",
+    "newSmartGroup:",
+    "childNodesMatchingString:",
+    "_draggedFilenameFromPasteboard:",
+    "directorySubpathsOperationAtPath:",
+    "reassignFilterChain:",
+    "_rotateCoordsForDrawLabelInRect:",
+    "_web_initWithDomain_nowarn:code:URL:",
+    "_oldSizeDuringLiveResize",
+    NULL,
+    "_sendDataSourceSortDescriptorsDidChange:",
+    "setMarkerLocation:",
+    "uid",
+    "_notePendingRecentDocumentURLsForKey:",
+    "timeSlider:setCurrentTime:",
+    "setLoadingProgressValue:",
+    "initWithUniqueId:addressBook:",
+    "_000102",
+    "rectIncludingShadow",
+    "_complete:",
+    "_writeDocument:toPath:",
+    "wasGeneratedWithIconServices",
+    "_colorSyncProfileClass",
+    NULL,
+    "CA_addValue:multipliedBy:",
+    "isEditingCanceled",
+    "_displayToolTipIfNecessaryIgnoringTime:",
+    NULL,
+    "processPendingChanges",
+    "_AEDesc",
+    "wantsToTrackMouseForEvent:inRect:ofView:",
+    NULL,
+    "_saveRecents",
+    "setMipmapImage:",
+    "setTabKeyTraversesCells:",
+    "growBoxWithParent:",
+    "classForArchiver",
+    "initWithCompatibilityVersion:",
+    NULL,
+    "_orderOutRelativeToWindow:",
+    "_preferredScript",
+    "policyString",
+    "_setupRendering",
+    "setDefaultDuration:",
+    "setWidth:type:forLayer:edge:",
+    "setRequestTimeout:",
+    NULL,
+    "rendererType",
+    "_initWithEntities:",
+    "setMuted:",
+    "drawKnob:",
+    "allowFlushing",
+    "accessibilitySharedCharacterRangeAttribute",
+    "initWithCGSource:options:",
+    "_setMetadata:",
+    "dataReferenceEnumeratorWithQTMovie:",
+    "_isUsedByCell",
+    "_decrementImagePointerToCGImageRefCache",
+    "queryString",
+    "asyncInvokeServiceIn:msg:pb:userData:menu:remoteServices:unhide:",
+    "pointerArrayWithPointerFunctions:",
+    "_keysForValuesAffectingValueForKey:",
+    NULL,
+    "setAttribute:atIndex:",
+    "_scrollViewForColumnsWillTrackHorizontalScroller:",
+    "_pauseUIHeartBeatingInView:",
+    "_drawsWithinMenuBar",
+    "createScaledImageByX:Y:fromX:Y:",
+    "stopInlineSlideshow",
+    "legendHidden",
+    "implementationClassName",
+    "getBytes:length:",
+    "objectRegisteredForID:",
+    NULL,
+    NULL,
+    "_characterIndexForMoveRightFromCharacterIndex:",
+    "computeLinearA:andB:fromX0:y0:x1:y1:",
+    "_setCustomizesAlwaysOnClickAndDrag:",
+    NULL,
+    NULL,
+    "blurHalfSizeImage:radius:image:",
+    "initWithString:calendarFormat:",
+    "attributedStringToEndOfGroup",
+    "_endUpdate",
+    "updateSearchFieldWithPredicate:",
+    "_setDeselectsWhenMouseLeavesDuringDrag:",
+    "reconnectBindings:",
+    NULL,
+    "primaryIdentifier",
+    "unpackROI:forRect:",
+    "windowWillOrderOnScreen:",
+    "_windowChangedNumber:",
+    "primaryKeyGeneration",
+    "insertSegmentOfMovie:timeRange:atTime:",
+    "drawInRect:fromRect:operation:fraction:",
+    NULL,
+    "outlineView:objectValueForTableColumn:byItem:",
+    "initInNode:recordRef:type:",
+    "setTypesetterBehavior:",
+    "failureResponse",
+    "isCanonical",
+    "searchTypeLabelAtIndex:",
+    "_transaction",
+    "initWithKey:typeDescription:appleEventCode:presentableDescription:name:",
+    "initWithContentRect:styleMask:backing:defer:screen:",
+    "addSubgroup:",
+    "drawerWillResizeContents:toSize:",
+    NULL,
+    "panelShouldHaveFullScreenActualSizeButton",
+    "nts__fullPhoneticName",
+    "plugInKeys",
+    "initWithRowCharRange:containerWidth:rowArray:collapseBorders:",
+    "imageByApplyingState:backgroundStyle:",
+    "indexOfItemWithRepresentedNavNode:",
+    "start:curve:",
+    "panel",
+    "versionHashModifier",
+    "_sizeOfTitlebarFileButton",
+    NULL,
+    "_isEnabledAndHasEnabledSubitem",
+    "progressIndicatorColor",
+    "_initWithParentObjectStore:",
+    "_clearUpdates",
+    "handleQuitScriptCommand:",
+    "_monitors",
+    "updateWindowForProgress:",
+    "runModalWithPrintInfo:",
+    "textContainers",
+    "reSetAcceptsMouseMovedEvents",
+    "containerIsObjectBeingTested",
+    "setValue:forBinding:atIndex:error:",
+    "setScrollZEnabled:",
+    "sourceHref",
+    "_coreUIDialCallbacksMap",
+    "setOperation:",
+    "sendAction:to:",
+    "_coreUICircularState:",
+    "initPropFindWithSession:withDepth:URI:lookingForProps:includingParent:",
+    "decrSize:",
+    "_endEditingIfNecessaryWhenSelectingRowRange:",
+    "_createRelationshipDescriptionForNode:",
+    "initWithFile:",
+    "setShowsCompositionNames:",
+    "_currentTableCell",
+    "_hasPublicAccess",
+    "resizeLeftRightCursor",
+    "currentVoiceIdentifier",
+    "dateValueYearless",
+    "_setImage:fromWindow:",
+    "previewView:didLoadPreviewForDocumentURL:",
+    "_isCached",
+    "bundleForCurrentNib",
+    "_setupOpenPanel",
+    "addCollection:",
+    "_backing",
+    NULL,
+    "_actualIndexForMouseEvent:",
+    "__layoutUpdated:",
+    "logMessage:",
+    NULL,
+    "decimalSeparator",
+    "objectValueInvalidationCapableObjectForObject:",
+    "_dispatchKind:",
+    "_requestTypeForOperationKey:",
+    "previewPanel:didShowPreviewForURL:",
+    "_searchFieldSearch:",
+    NULL,
+    "mountNewRemovableMedia",
+    "endRenderTextureAndFinish:",
+    "_dragParamsOfDividerAtIndex:",
+    "_scriptingInsertObjects:atIndexes:inValueForKey:",
+    "createProxyPortWithOriginalPort:forKey:",
+    "setEventsTraced:",
+    "_markMovementTrackingInfo",
+    "_isPendingDeletion",
+    "_updateSearchResultsCount:",
+    "drawImage:",
+    "wraps",
+    "setShouldCreateUI:",
+    "toggleKeepVisibleToolbarItem:",
+    "raiseWithStatus:",
+    NULL,
+    "reconcileToSuiteRegistry:suiteName:recordTypeName:",
+    "initWithCredentials:andOwner:",
+    NULL,
+    "panel:compareFilename:with:caseSensitive:",
+    "writePath:docInfo:errorHandler:remapContents:hardLinkPath:",
+    "variableExpression",
+    NULL,
+    "initializeButtonStructureAtX:y:forResolution:",
+    "initWithKey:mask:binding:",
+    "_populate:",
+    NULL,
+    "setMinColumnWidth:",
+    "_changeShadowBlur:",
+    "recordsMatchingSearchElementNoHinting:takeLock:",
+    "publicRecordClassForImplClass:",
+    "isPlaceholderForMarkerExplicitlySet:",
+    "scaleXBy:yBy:",
+    "localizedNameForKey:",
+    "_namespaces",
+    "_drawBorder:inRect:",
+    "_popState",
+    "_recentMenuItemTitlesFromLocationComponentChains:includingIcons:",
+    "_setWidth:",
+    "iconForFileType:",
+    "getNearestOutline:forDestination:",
+    "setRootNode:makeHistory:notify:",
+    "components:fromDate:",
+    "levelsOfUndo",
+    NULL,
+    "_postEventNotification:",
+    NULL,
+    "_parseText1Fast",
+    "_setLastSelected:",
+    "_removeNextPointersToMe",
+    "currentTaskIndex",
+    NULL,
+    "boundsRectForBlock:contentRect:inRect:textContainer:characterRange:",
+    "uniqueID",
+    "pathExtension",
+    NULL,
+    "textView:shouldSetColor:",
+    "canDRMInteractWithUser",
+    "vendor3",
+    "initialSearchRow",
+    "valueForKey:withInputs:exists:",
+    "attributesForOutputPort:nodeIdentifier:",
+    "baseWritingDirection",
+    "_surfaceMoved:",
+    "allCompositions",
+    "dataWithData:",
+    "holeROI:forRect:userInfo:",
+    "pasteboardChangedOwner:",
+    "movieContentView",
+    "__patchActivated:",
+    "addCharactersInRange:",
+    NULL,
+    "_old_encodeWithCoder_NSTableColumn:",
+    "setObjectValue:",
+    "_syncToChangedToolbar:itemInserted:",
+    "_createCFAuthChallenge",
+    "invalidateRect:",
+    "lockAfterClicked:",
+    "_setDraggingMarker:",
+    "decodedObject",
+    "readFromData:options:documentAttributes:",
+    "setCurrentProgress:",
+    "nts_SendAddressBookDidSaveNotificationsWithPublicUserInfo:privateUserInfo:privateTablesChanged:",
+    "setInputImage:",
+    NULL,
+    "usesStrongWriteBarrier",
+    NULL,
+    "resetProfiling",
+    "isDying",
+    NULL,
+    "_setName:",
+    "supportedTextureBufferFormatsForManager:",
+    "attachColorList:",
+    "endSheet:",
+    "symbolCharacterSet",
+    NULL,
+    NULL,
+    "_glyphAtIndex:characterIndex:glyphInscription:isValidIndex:",
+    "_setAutoSize:",
+    NULL,
+    "removeObject:fromBothSidesOfRelationshipWithKey:",
+    "_dockDied",
+    NULL,
+    NULL,
+    "_newReplicatePath:ref:atPath:ref:operation:fileMap:handler:",
+    "_ql_validateURLSecureAccess:forPreview:",
+    "updateOutlineColumnOutlineCell:forDisplayAtIndexPath:",
+    "compatibilities",
+    "_isUsingManagedProxy",
+    "URLToAddressWithScheme:andPort:URI:",
+    "abPeopleFromUniqueIdsWithAddressBook:",
+    "_helpBundleForObject:",
+    "_handleError:withError:",
+    "_lastDraggedEventFollowing:",
+    "_thumbnailLayerHitTest:",
+    "_autoResizeState",
+    "makeSearchFieldKey",
+    "quartzFilterManager:didSelectFilter:",
+    "allocBatch:withEntity:count:",
+    "stringWithoutAmpersand",
+    NULL,
+    "invalidateFocusedIndex",
+    "initWithBitmapData:bytesPerRow:size:format:options:",
+    "frameStartTime:",
+    "updateDisplayName",
+    "_elementFromTidyDoc:element:encoding:elementClass:nodeClass:",
+    "accessibilitySetSelectedRowsAttribute:",
+    "_close",
+    "_pulseFindIndicator:",
+    "outputVideoFrame:withSampleBuffer:fromConnection:",
+    "scanInteger:",
+    "newScriptingObjectOfClass:forValueForKey:withContentsValue:properties:",
+    "_presetToCreateCA",
+    "createAllImagesFromData:options:",
+    "propertyNamed:",
+    "canConnect",
+    "resolveInstanceMethod:",
+    "browser:shouldTypeSelectForEvent:withCurrentSearchString:",
+    "_declaredKeys",
+    "_updateTrackingRects",
+    "setSelectedRange:affinity:stillSelecting:",
+    "initWithEntity:sqlString:",
+    "addSelectionCore:normalize:",
+    "saveToFile:saveOperation:delegate:didSaveSelector:contextInfo:",
+    "localURL",
+    NULL,
+    "initWithJPEGFile:",
+    "imageWithPDF:atSize:angle:center:intoRect:redB:greenB:blueB:redW:greenW:blueW:outlineLocation:outlineWidth:outlineOpacity:",
+    "realElementRect",
+    "ikMouseDown:",
+    "drawStrikethroughForGlyphRange:strikethroughType:baselineOffset:lineFragmentRect:lineFragmentGlyphRange:containerOrigin:",
+    "_initWithSharedBitmap:rect:",
+    "_feSampler",
+    "_forceSetColor:",
+    "_nameFieldContentsAsPosixName",
+    "_applicableShowsFocus",
+    "prepareKeychainToSync:",
+    NULL,
+    "_rowEntryForChild:ofParent:requiredRowEntryLoadMask:",
+    "childAtIndex:",
+    NULL,
+    "_iconForOSType:creator:",
+    "_comparison",
+    "setFirstImageScheduled:",
+    "cascadeTopLeftFromPoint:",
+    "setupFilterChain",
+    "setOriginalImageSize:",
+    "groupingSeparator",
+    "_setTargetViewFrameRect:",
+    "initWithManager:resolution:",
+    "_drawDragImageCellAtColumn:row:withCellFrameUnion:",
+    "_addButtonWithTag:inFrame:",
+    "resizeFlags",
+    "resetCancelButtonCell",
+    NULL,
+    "configureForTreatsFilePackagesAsDirectories:",
+    "_setJobDisposition:savePath:inPrintSession:printSettings:",
+    NULL,
+    "autosaveTableColumns",
+    "comment",
+    "_windowWillShowToolbar",
+    NULL,
+    "_setAllowedClasses:",
+    "drawForLayerTime:displayTime:",
+    "graphWillStopForSession:dueToError:",
+    "_temporaryAttribute:atCharacterIndex:longestEffectiveRange:inRange:",
+    "transactionDelegate",
+    "_setCursorForMouseLocation:",
+    "_resizeLeftRightCursor",
+    "setEraseColor:",
+    "setError:info:fatal:",
+    NULL,
+    "setOutlookWebAccessPath:",
+    "invalidateCachedCTM",
+    "menuForEvent:inRect:ofView:",
+    "orderedIndexAtIndex:",
+    "editedToolbar",
+    "toolTipTextColor",
+    "setPortMinValue:",
+    "primitiveCreationDateYear",
+    "allHeaderFields",
+    "setNumRowsToToggleVisible:",
+    "URLHandleResourceDidBeginLoading:",
+    "_rectOfColumnRange:",
+    "_defaultKnobColor",
+    "_minXTitlebarDecorationMinWidth:",
+    "_setLayerTreeRendererSurfaceGone:",
+    "focusRingType",
+    "_sizeButtonToFit:",
+    "instancesImplementSelector:",
+    "rootGraph",
+    NULL,
+    "setHiddenUntilMouseMoves:",
+    "_autoUpdateCellContents",
+    "_propertyDescriptionForKey:checkSubclasses:",
+    "allocWithZone:",
+    "initWithProperties:",
+    "_createMutableSetValueGetterWithContainerClassID:key:",
+    "initWithCondition:",
+    "_realNodeForNode:",
+    "endSubelementIndex",
+    "animationBlockingMode",
+    NULL,
+    "initWithDelegate:name:",
+    "allowsPrinting",
+    "accessibilityIsFocusedAttributeSettable",
+    "setBitsPerSample:",
+    "_setFrameCommon:display:stashSize:",
+    "_ql_waitForKey:toBeEqualTo:timeout:",
+    "isFilePackageAtPath:",
+    "setAlwaysVisibleWhenStopped:",
+    "markAsViewed:",
+    "systemInputPorts",
+    "_drawRatingWithFrame:inView:",
+    "addInkListToDictionaryRef:",
+    "removeCacheWithUID:",
+    NULL,
+    "_binderClassForBinding:withBinders:",
+    "defaultLineCapStyle",
+    "removeOutputUnitsForConnection:fromGraph:ofCaptureSession:",
+    "outlineView:itemForPersistentObject:",
+    "generalPasteboard",
+    "setVerticalPageScroll:",
+    "_setupPopUpButtonCell",
+    NULL,
+    "setImage:rect:",
+    "drawButton:inView:",
+    "titleForPerson:identifier:",
+    "setTypeDescription:forReconcilingToSuiteRegistry:",
+    "gotoNextItem:",
+    "attribute:atIndex:longestEffectiveRange:inRange:",
+    "_animationTargetRect",
+    "setPixelBuffer:cubeMapFace:mipMapLevel:currentVirtualScreen:",
+    "keyUpDelegate:",
+    "prepareForDifferentCard:",
+    "createDictHashTable:",
+    "_startRearrangementObservingForSuppressedContentObjects:",
+    "ISOCurrencyCodes",
+    "undoActionName",
+    "_setContentsDirtyForNodeWithIdentifier:",
+    "handleDelegateConfirmedSelection",
+    NULL,
+    NULL,
+    "moveToPoint:",
+    "correctBufferSizeWithSize:",
+    "convertPointFromWindowToView:",
+    "_scriptingArrayOfObjectsForSpecifier:",
+    "_updateNumberOfTitleCellsIfNecessary:",
+    "_dateStringToDraw",
+    "numSlices",
+    "filterBrowserViewWithOptions:modal:",
+    "deviceIDList:",
+    "_evaluateRelativeToObjectInContainer:",
+    NULL,
+    "_patchUpdated:",
+    "objectAtRunIndex:length:",
+    "__stateUpdated:",
+    "_updatevideoPreviewConnectionFromVideoPreviewOutput",
+    "startRenderingPatch:options:",
+    "setOriginalImageSizeCache:",
+    "setIndentationMarkerFollowsCell:",
+    "_newSortingFirstName",
+    "_rulerAccViewRightTabWell",
+    NULL,
+    "showItem:",
+    "_sharedSecureFieldEditor",
+    "setLocalizedName:",
+    "initWithBaseString:",
+    NULL,
+    "maxScaleFactor",
+    "mandatoryClient",
+    "convertViewPointToImagePoint:",
+    "_endListeningForSessionStatusChanges",
+    "registerPort:forName:",
+    "setPatchSetsTransform:",
+    "applicationDidFinishLaunching:",
+    "initWithStringsBundle:",
+    "sendsSearchStringImmediately",
+    "isRelationship",
+    "markedTextAttributes",
+    "provideNewView:",
+    "_displayNodes",
+    NULL,
+    "setValue:forStateKey:",
+    "_cleanUpForCarbonAppTermination",
+    "_getCharacters:length:fromKeyTranslation:",
+    "tableColumn:didChangeToWidth:",
+    "_findFirstUserSelectableRowStartingFrom:to:selectedRowsOkay:byExtendingSelection:",
+    "_old_readColorsFromGlobalPreferences",
+    "setPageOrder:",
+    "_hasCredentials",
+    "_sendMenuOpeningNotification",
+    NULL,
+    "_unlinkCIEffect:",
+    "_setDocModal:",
+    NULL,
+    "appendChild:",
+    "_shouldManageVisibilityOnlyIfVisible:",
+    "setNumberOfDataSourceItems:",
+    "createToOneJoinIntermediateForProperty:lastStep:inScope:context:",
+    "getInputBottomLineParams",
+    "playing",
+    "previouslyIndexedWindows",
+    "hasLearnedWord:",
+    "computeRowAtPoint:cacheHint:",
+    "selectDefaultRange",
+    "initWithType:error:",
+    "keyPathsForValuesAffectingPreview",
+    "_preflightChosenSpellServer",
+    "_initWithAccount:host:port:scheme:",
+    "initWithContainerClassDescription:containerSpecifier:key:uniqueID:",
+    "_protectionSpaceForURL:realm:",
+    "goToNode:",
+    "patternPhase",
+    NULL,
+    "dragImageForRowsWithIndexes:tableColumns:event:offset:",
+    "initWithDomain:eventCode:userInfo:",
+    "abRankOfPhoneNumberMatchingString:",
+    "checkCurrentVersionCompatibleWithCoder:",
+    NULL,
+    "_titleForSimpleQueryString:",
+    "initWithArray:",
+    NULL,
+    "_keyEquivalentForNode:",
+    "_labelPatternColorForLabelIndex:",
+    "orangeColor",
+    "ISS_initWithDirtyString:",
+    "shouldRefresh",
+    "_finalize",
+    "clearsFilterPredicateOnInsertion",
+    "_referenceBindingValue",
+    "deleteConnectionForKey:",
+    "_openCollections",
+    "addCustomGroupBox",
+    "rangeOfVisibleIndexes",
+    "_shouldMiniaturizeOnDoubleClick",
+    "setAllowsFileLoading:",
+    "IKStringFromSize:",
+    "_setMainWindow:",
+    "setPrimitivePhoneticFirstName:",
+    "_clearTemporaryAttributes",
+    "setExcellentEntropy:",
+    "initWithFrame:controller:",
+    "_updateSizeIfNeeded",
+    "setCurrentAnimationStep:",
+    "_initWithClassDescription:synonymDescription:",
+    "currentContext",
+    "commitPendingChanges",
+    "_setFileSpecifier:",
+    "continueTracking:at:inView:",
+    NULL,
+    "_animationDuration",
+    "updateRow:",
+    "setMarkupType:",
+    "_willInitWithCoder",
+    "reconcileToCarbonWindowBounds",
+    NULL,
+    "setForUseWithModel:",
+    "userDataRef",
+    "_distForGlyphLocation:",
+    "markedTextSelectionChanged:client:",
+    "setDestination:",
+    "validateForDelete:",
+    "_locationTemporary",
+    NULL,
+    "_observeKeyPathForRelatedBinder:registerOrUnregister:",
+    "_applyTargetConfigurationWithAnimationMoveAndResize:show:hide:",
+    "ramManager",
+    "doPageChangeAnimation",
+    "_scriptingDictionaryOfType:withDescriptor:",
+    "_childrenChanged:",
+    "initWithUTF8String:",
+    "setFormattingStringsFilename:",
+    "imageWithData:options:",
+    "setAcquireFunction:",
+    "automaticallyRearrangesObjects",
+    "previewView:didChangeDisplayStateForURL:",
+    "currentMigrationStep",
+    NULL,
+    "lockDocument",
+    "_isCurrentlyGapStyleDropTarget",
+    "renewRows:columns:",
+    NULL,
+    "keyFrameSelected:",
+    "showPicker",
+    "emailHasAssociatedCert:",
+    "setDisableHighlight:",
+    "_setTrackingRects:insideList:owner:userDataList:trackingNums:count:",
+    "destinationOptionsForMigration:sourceMetadata:error:",
+    "bundlePath",
+    "phoneticLastName",
+    "_refreshList:",
+    "memberAtIndex:",
+    "currentFilter",
+    "_closeButtonOrigin",
+    NULL,
+    "stopPeriodicEvents",
+    "genericRGBColorSpace",
+    "navNode",
+    "updateTrackingAreaWithFrame:inView:",
+    "abBackupPath",
+    "initWithObject:animation:",
+    "setTXTRecordData:",
+    "keys",
+    "_vCardRepresentationAsString",
+    "_getTitleSize",
+    "findPreferredLanguage",
+    "_forwardEvent:location:",
+    "_writeStringInRange:toPasteboard:",
+    "directoryCanBeCreatedAtPath:",
+    "replacementObjectForPortCoder:",
+    "quickTimeVersion",
+    "__performUndo3:",
+    "_menuFormRepresentationForOverflowMenu",
+    NULL,
+    "getAttrValuePtrForTypeNode:value:",
+    "_hasActiveAppearance",
+    "drawBackgroundInRect:inView:highlight:",
+    "keyEquivalentFont",
+    "_copyCacheWithFunction:userInfo:userInfoReleaseCallback:md5List:md5Indices:md5Count:",
+    "fastDrawString:attributes:containerSize:padding:inRect:onView:pinToTop:sizeOnly:size:",
+    "_enabled",
+    "setOptimizesParameters:",
+    "_makeMiniView",
+    "removeObjectAt:",
+    "_setContentRect:",
+    "_delayedWriteColors",
+    "initWithName:appleEventCode:fieldDescriptions:isHidden:presentableDescription:",
+    "initWithDictionary:copyItems:",
+    "_recalcSubviews",
+    "accessibilityCloseButtonAttribute",
+    "indexOfLastSpecialGroup",
+    "setBulletCharacter:",
+    "tabletEvent",
+    "baselineThreshold",
+    "baselineDeltaForCharacterAtIndex:",
+    NULL,
+    "deserializeString:",
+    "_setEditOnSingleClick:",
+    "attributedStringForNil",
+    "_detachListener",
+    NULL,
+    "_darkBlueColor",
+    "_startObservingModelObject:",
+    "_toolTipRectForCell:withFrame:",
+    "numberOfRangesOnPage:",
+    "stringFromNumber:",
+    NULL,
+    "_getPositionFromServer",
+    "creator",
+    "nts_ParentGroups",
+    "isZoomed",
+    "_primitiveTypeDescription",
+    "dateWithYear:month:day:hour:minute:second:timeZone:",
+    "marshalEvent:obj:obj2:",
+    "toManyRelationships",
+    "_isReservedWordInParser:",
+    "_restoreExpandedState",
+    "_doEditOperation:",
+    "_handleMouseMovedForEvent:withFrame:inView:",
+    "purpleColor",
+    "proxyPropertiesForURL:",
+    "_savedDelegate",
+    "shouldLoadAttributes",
+    "_indexOfColonInString:",
+    "rectOfPathComponentCell:withFrame:inView:",
+    "customizationPaletteIsRunning",
+    "_fromContainerInfo:andKeyCode:getAdjustedContainerInfo:andKey:",
+    "setHasUndoManager:",
+    "startupImages",
+    NULL,
+    "selectMemberRow:subrow:byExtendingSelection:",
+    "drawHighlightWithFrame:inView:",
+    "IKIPDrawNicelyScaledInRect:operation:fraction:",
+    "resolveWithTimeout:",
+    "modalWindow",
+    "grabberImage",
+    NULL,
+    "dragColor:withEvent:inView:",
+    "_setOwnsRealWindow:",
+    "_pointWithinBounds:",
+    "_finalize_QCImageKernel",
+    "findPreviousOccuranceOfAttributeNamed:startingRange:",
+    "setRelevance:",
+    NULL,
+    "greenROI:destRect:",
+    "__graphDidChange:",
+    "_shouldPowerOff",
+    "doubleAction",
+    "_recursiveGainedHiddenAncestor",
+    NULL,
+    "initWithTypefaceInfo:key:",
+    "_doUserSetListMarkerFormat:options:inRange:level:",
+    "addEffectWithName:type:position:",
+    "IKViewWillResignFirstResponder:",
+    "tableView:willDisplayCell:forTableColumn:row:",
+    "_finishMessagingClients:",
+    NULL,
+    "nicestRenderingDelay",
+    "setColorRenderingIntent:",
+    "isRegularToolTipVisible",
+    "positionAtIndex:",
+    "removeTableColumn:",
+    "didPerformMigrationWithManager:",
+    "initWithWindowRef:",
+    "initWithFireDate:interval:target:selector:userInfo:repeats:",
+    "shortStandaloneMonthSymbols",
+    "_setTabView:",
+    "animation:valueForProgress:",
+    "infoForFilesInContainer:andReturnResultCode:",
+    "setHasThousandSeparators:",
+    "enterSlideshowFullScreenWithStartRect:",
+    "cachedResponse",
+    "_ignoreGrammarFromMenu:",
+    "addObserver:toObjectsAtIndexes:forKeyPath:options:context:",
+    "superentity",
+    "valueTypeForDimension:",
+    "trackEnumerator",
+    "_setEffects:",
+    "nts_ImportMacBuddyMeCard",
+    NULL,
+    "_setCallbackHandler:",
+    "_hideAllDrawers",
+    "_addImageToCache:",
+    "_setKeySegment:",
+    "dateControlFrame",
+    "_trimRegionInvalidatedDuringDisplayToRectsJustDrawn",
+    "_thread:",
+    "doClick:",
+    "prefersEnabledOverEditable:",
+    "createTextLayer",
+    "chooseFormat:",
+    "browser:nextTypeSelectMatchFromRow:toRow:inColumn:forString:",
+    "_accessibilityMinValueWithoutCollapsing",
+    "provideImageTexture:bounds:userInfo:",
+    "_knownEntityKeyForObjectID:",
+    "_collectElasticRangeSurroundingCharacterAtIndex:minimumCharacterIndex:",
+    "closeDataFile",
+    "registerWithCFURLProtocol",
+    NULL,
+    "_fireFirstAndSecondLevelFaultsForObject:withContext:",
+    "checkAndMarkMipmapAsInvalid",
+    "addColumn",
+    "getMatrixFrom:toPatch:matrix:ignoreWithin:includeFromTransform:",
+    "readFromFileWrapper:ofType:error:",
+    "_showField:identifier:",
+    "_shouldUseAliasToLocate:",
+    "currentPoint",
+    "layoutAlgorithm",
+    "originalImageName",
+    "setUsesPreferredLanguage:",
+    "_desiredLayerBounds",
+    "authenticationMethod",
+    "propertyName",
+    "setOscPortsConfiguration:",
+    "_addSpellingAttributeForRange:",
+    "_stopAnimation",
+    "expressionForSubquery:usingIteratorVariable:predicate:",
+    "_getDirtyRects:clippedToRect:count:boundingBox:",
+    "updatePoofAnimation",
+    "valueTransformerForBinding:",
+    "tiltAngle",
+    "appSmartFoldersNode",
+    NULL,
+    NULL,
+    "isCachedSeparately",
+    "slideshowDontExportToiPhoto:",
+    "initWithPixelFormatAttributes:options:",
+    "_copyOfCustomView",
+    "currentInputSourceBundleID",
+    NULL,
+    "coachMarkExpired:",
+    "setupCarbonMenuBar",
+    "manyToManyRelationships",
+    "_updateReadyStatus",
+    "descriptionForOptionalSubelementName:",
+    "iDiskNode",
+    "getHyphenLocations:inString:wordAtIndex:",
+    "init",
+    "_selectObjectsAtIndexesNoCopy:avoidsEmptySelection:updateItems:",
+    "_updateDockWindowIDAndDisplayIfNeeded:",
+    "setMinNumberOfRows:",
+    "session:addAuthHeaderToMessage:",
+    "filterChainChanged:",
+    "setRecentSearches:",
+    "_updateForVersion:",
+    "_registerForClipBoundsDidChangeNotificationIfNecessaryForSuperview:",
+    "objectInInputImageAtIndex:",
+    "orderFrontStandardAboutPanel:",
+    "_printerForPrinter:",
+    "_handleRootNodeChanged",
+    "_web_HTTPStyleLanguageCode",
+    "_shouldTerminateWithDelegate:shouldTerminateSelector:",
+    "unbindNonManagedItems",
+    "_sendBindingAdapterWillDisplayCell:forColumn:row:",
+    "setNotShownAttribute:forGlyphAtIndex:",
+    "_dragLocalSource",
+    "_parseArchivedList:",
+    "addScaled:",
+    "moveUpAndModifySelection:",
+    "_alreadySpecifiedCertAuthorityValues",
+    "initWithAnimation:progress:start:",
+    "_keyViewPrecedingPickerViews",
+    "setWantsToBeColor:",
+    "_collapseItemEntry:collapseChildren:clearExpandState:recursionLevel:",
+    "_dataSourceRespondsToSortDescriptorsDidChange",
+    NULL,
+    "registerNSTags:withNamespace:",
+    "initWithImageProxy:",
+    "_initWithPath:bundle:",
+    "_transferCache:",
+    "_loadImageWithName:",
+    "setDouble:forKey:",
+    "isKeyWindow",
+    "settingsView:setSetting:forKey:",
+    "startProfiling",
+    "initWithObserver:name:object:",
+    "_okToStartTextEndEditing",
+    "criteriaForRow:",
+    "isFauxDisabled",
+    NULL,
+    "setMouseTracker:",
+    "deleteProxyPortForKey:",
+    "replaceIndexReferenceModelObjectArrayWithEqualCopy:",
+    "addressBookLockFile",
+    "beginSheetForWindow:modalDelegate:didEndSelector:contextInfo:certificates:showGroup:",
+    "_arrowsConfig",
+    "_finalizeWithReferenceCounting",
+    "_adjustFocusRingLocation:",
+    "_unicodeTextEventFromString:",
+    "_writeCharacters:range:",
+    "setValues:forParameter:",
+    NULL,
+    "ISS_uri",
+    "hasCacheForUID:withSize:",
+    NULL,
+    "typeDescription",
+    NULL,
+    "initWithRole:parent:tableView:row:",
+    "_setNextSizeAndDisplayMode",
+    NULL,
+    "_web_URLByRemovingLastPathComponent_nowarn",
+    "setSelectedTextAttributes:",
+    "addAddress:stringAttribute:endOfRange:",
+    "parseForBasicPropertiesWithByteOrder:",
+    "_collectApplicableUserInfoFormatters:max:",
+    "removeTrackingRects",
+    "setPlaceholder:forMarker:isDefault:",
+    "textRectForControlView:cellFrame:",
+    "performOperationUsingObject:andObject:",
+    "_drawnByAncestor",
+    NULL,
+    "_showsControlCharacters",
+    "initWithContentRect:comboBoxCell:",
+    "_scriptingTypeDescriptor",
+    "addBookmark:",
+    "isEdited",
+    "_distanceInNonDragDirectionBeforeAbortingDragAttempt",
+    NULL,
+    "scrollerWidthForControlSize:",
+    "isSeparatorItem",
+    "persistentStoreTypeForFileType:",
+    "referenceBinder",
+    "scriptingIsEqualTo:",
+    "insertNewlineIgnoringFieldEditor:",
+    "localizedDescriptionForFilterName:",
+    "primaryKeyForEntity:",
+    "launchWithDictionary:",
+    "_isManagedController",
+    "IK_PNGRepresentationWithCompressionFactor:",
+    "animationStep:",
+    "renderImageWithCIPipeline:inRect:",
+    "onStateValue",
+    "addressBookSaveFile",
+    "setMinValue:",
+    "menu:updateItem:atIndex:shouldCancel:",
+    "_reconfigure",
+    "popupViewClose:",
+    "waitForThreadsToFinish",
+    "columnWidthForColumnContentWidth:",
+    "initWithString:nodeType:",
+    "subtitleFrame",
+    "glyphIndexForPoint:inTextContainer:fractionOfDistanceThroughGlyph:",
+    "deleteKey:",
+    NULL,
+    NULL,
+    "_markColumnWidthsNotYetCompared",
+    "_usesToolTipsWhenTruncated",
+    "setOpenGLEnabled:",
+    "allowsCopying",
+    "_disableSelectionPosting",
+    "_allowsEmptyCompoundRows",
+    "nodeResignsFirstResponder:view:",
+    "_chooseBestMatchingFace",
+    "inputContext",
+    "_setBlockCapacity:",
+    "determineCharacterSetSizes",
+    "_doOpenInSeparateWindow:model:",
+    "_postRuntimeError:",
+    "setBidiProcessingEnabled:",
+    "peopleAtRemoteLocation:",
+    "isMaster",
+    "_coreUILinearBarFocusStyleWithView:",
+    "colSpan",
+    "rangeValue",
+    "subpathsAtPath:",
+    "_addSubfieldsForICUDateFormatString:",
+    "layoutControls",
+    "_internalNextTypeSelectMatchFromRow:toRow:inColumn:forString:",
+    "_bundleForClassPresentInAppKit:",
+    "_isUtilityWindow",
+    "_postDidFinishNotification",
+    "gutterBoundsForPage:",
+    "_containerViewOfTitles",
+    "_rebuildGraph",
+    "refreshAfterUndo:",
+    "currentBrowsingNodePath",
+    "arrayWithContentsOfFile:",
+    "_addAnimatedColumn",
+    "_scriptingObjectCountInValueForKey:",
+    "selectionFromPoint:toPoint:",
+    "_acceptExpressions:flags:",
+    "isProgrammable",
+    "adjust:brightness:andContrast:",
+    "_coreUIIsFocused:",
+    "innerRect",
+    "_sortByIdentifiers:",
+    "dragOperationForDraggingInfo:type:",
+    "makeSmall",
+    "_scheduleAnimationTimer",
+    "createVisualContext",
+    "cellIndexesAtLocation:",
+    "makeWindowControllers",
+    "noteFontCollectionsChanged",
+    "registerCallbackObserver:",
+    "doAwakeFromNib",
+    "goToPreviousPage:",
+    NULL,
+    "startWaitCursorTimer",
+    "_adjustLineScrollWithSnap:",
+    "_updateProxySettings",
+    "setRulerViewClass:",
+    "_isInUILayoutMode",
+    NULL,
+    "adapterOperations",
+    "drawTextureWithContext:inRect:",
+    "_displayName:",
+    "_invalidateKeyToIndexTable",
+    "setPercentSymbol:",
+    "isValidOnContext:",
+    "setPaperName:",
+    "initWithFontDescriptor:",
+    "_unregisterForToolbarNotifications:",
+    "_metadataXML",
+    "encodeValue:forKey:intoDictionary:",
+    "sharedCertificateTrustPanel",
+    "drawDisclosureGroupHeader:inRect:",
+    "registerNodeWithName:constructor:instantiateSelector:attributesSelector:info:",
+    "_showAllInsertionPointsForGlyphRange:atPoint:",
+    "accessibilitySetSelectedText:",
+    NULL,
+    "tightenKerning:",
+    "setMinimumDaysInFirstWeek:",
+    "_importThreadBegan:",
+    "frameForElementAtIndex:",
+    NULL,
+    "_fixSharedData",
+    "_modelAndProxyKeysObserved",
+    "setMarkers:",
+    "outputFormat",
+    "setTitles:",
+    "canWrite",
+    "fade",
+    "rowForUpdate",
+    "_showQueryProgress",
+    "setAllowsExpandingMultipleDirectories:",
+    "_documentInfoDictionary",
+    "_getLocalizedLabels:andLocalizedValues:",
+    "_updateFocusRingsForOldLastSelectedRow:",
+    "bezierPathWithRoundedRect:xRadius:yRadius:",
+    "_setAppleUseCoreUI:",
+    "setFreeFormLayoutMode:",
+    "isUniform",
+    "addTypePopupWithTypes:popupExtension:saveType:saveCreator:optionFlags:",
+    "_bindAncestorNamespaces",
+    "setCustomizationSheetWidth:",
+    "initWithThumbnailSize:",
+    NULL,
+    "initWithRemoteName:",
+    "updateFilter:withParameters:",
+    "_setValue:forKeyPath:ofObjectAtIndex:",
+    "_forceUpdateDimpleLocation",
+    "reflectionWithInitialAlpha:height:",
+    "slideDraggedImageTo:",
+    "_canAcceptRichText",
+    "isList",
+    "initTextCell:pullsDown:",
+    "setTextAttributesForNegativeValues:",
+    "setAttributedStringForNil:",
+    "changeBaseWritingDirection:",
+    "webScriptNameForSelector:",
+    "sharedIconCache",
+    "ikKeyDown:",
+    "getObjectValue:forString:range:error:",
+    "rightMouseUp:",
+    NULL,
+    "createCurrentImageFromView:",
+    "alphaControlAddedOrRemoved:",
+    "userAction",
+    "_refreshSuspendedAttributeFromCallback",
+    "_reconcilePrintSessionAttributes",
+    "_menuItemClick:",
+    "screens",
+    "_untitledDocumentNumber",
+    "setCornerView:",
+    "initWithRole:parent:goesNext:",
+    "_unmapRunLoop:",
+    "nts_SaveAndTriggerSync:updateModificationDate:",
+    "initWithDomain:type:name:port:",
+    "IKPBVRamManagerDomainForResolution:createIfNotExisting:",
+    "thumbnailQuality",
+    "setFromValue:",
+    "searchAttributes:allowBinary:",
+    "destroyArrays",
+    "_pathLength",
+    "window:willPositionSheet:usingRect:",
+    "previewView:gotDocumentPreview:forURL:",
+    "nts_AddMember:toGroup:",
+    "nts_syncGroupSmartGroupPropertiesWithLock:",
+    "setDestinationEntityExternalName:",
+    "setDocumentAttributes:",
+    "handleCocoaWindowEvent:callRef:",
+    "setTextStorage:",
+    "QTTimeRangeValue",
+    "_descriptionValues",
+    "backgroundIsDark",
+    "_userCanSelectAndEditTableColumn:row:",
+    "minItemSize",
+    "__deselect:context:",
+    "coerceTextStorage:toString:",
+    "_isGroup:parentOfAllMembers:",
+    "_setCurrentInputFilepath:",
+    "_displayDelayedMenu",
+    "_selectedCrayon",
+    "dsNodeReference",
+    "containsKey:",
+    "indices",
+    "pathControl:willPopUpMenu:",
+    NULL,
+    "_firstPresentableName",
+    "titlePosition",
+    NULL,
+    "registerPluginClass:forObjectClass:andBinderClass:",
+    "appearance",
+    "_wsmOwnsWindow",
+    "isInert",
+    "sharedPreviewView:willStopSharingWithPreviewPanel:forURL:",
+    "accessibilitySetSelectedAttribute:",
+    "undoAttributes",
+    "_getSourceListColorFor:startColor:endColor:bottomColor:",
+    "cellIndexesInRect:",
+    "addItemsWithTitles:",
+    "cacheDepthMatchesImageDepth",
+    "validateAccess",
+    "addOperation:",
+    "writeToConsumer:withOptions:",
+    NULL,
+    "_keyFrames",
+    "setIntegrate:",
+    "switchedToIndexMode",
+    "initWithCapacity:origin:image:yOffset:",
+    "mapRepresentationIntoRAM:",
+    "ageStatisticsForIndex:",
+    "drawWithRect:options:",
+    "importToValueSetter:",
+    "drawThemeContentFill:inView:",
+    "draggedImage:endedAt:operation:",
+    "accessibilityAttributeValue:",
+    "proxyData",
+    "_bindingInfoForBinding:",
+    "_rename:",
+    "dataSource",
+    "_endTableCell",
+    "setDelegate:",
+    "joinsForRelationship:",
+    "_scriptingDescriptorOfValueType:orReasonWhyNot:",
+    NULL,
+    "isSharedInstance",
+    "_setNoDataConnections:",
+    "_applicableLabelsArrayForDisplayMode:isInPalette:",
+    "_attributedStringFromDescriptor:",
+    NULL,
+    NULL,
+    "updateLanguagesFromDefaults",
+    "startSpeaking:",
+    NULL,
+    "_documentViewAlignment",
+    "closeSidebar:",
+    "_selectFromIndex:toIndex:scrollIndexToVisible:",
+    "_unregisterForCompletion:",
+    "accessibilityIsFrontmostAttributeSettable",
+    "setDefaultImage:",
+    "_diskCacheDefaultPath",
+    "imagingModeForced",
+    "_makeHODWindowsPerform:",
+    "_outlineTableColumnIndex",
+    "removePointer:",
+    "newCount:",
+    "_markCursorRectsForRemovedView:",
+    "_createCA",
+    "systemColorsDidChange:",
+    "_clearMouseTracking",
+    "insertDoubleQuoteIgnoringSubstitution:",
+    "_simpleInsertGlyph:atGlyphIndex:characterIndex:elastic:",
+    "_flushAnimations",
+    NULL,
+    "handleOpenScriptCommand:",
+    "outlineViewShouldSlideBackAfterDragFailed:",
+    "fileHandleWithNullDevice",
+    "intersectSet:",
+    "_startHeartBeating",
+    "initWithManyToMany:fk:invfk:",
+    "initWithResponseClass:",
+    "elementName",
+    NULL,
+    "setOutputPortOrder:forKey:",
+    "GFArrayEnumerator",
+    "_deferredWindowChanged",
+    "_clearDirtyRectsForTreeInRect:",
+    NULL,
+    "yAtRow:",
+    "executeAndReturnError:",
+    "calculateFigureCenter:",
+    "invalidateCoreGraphicsImage",
+    "_jumpToHereMode:",
+    NULL,
+    "_sanityCheckPListDatabase:",
+    NULL,
+    "_setDecipherOnlyUsage:",
+    "_applyObjectValue:forBinding:canRecoverFromErrors:handleErrors:typeOfAlert:discardEditingCallback:otherCallback:callbackContextInfo:didRunAlert:",
+    NULL,
+    "_unsetInputs",
+    "keyPathForBinding:",
+    "descriptionForClassMethod:",
+    "objectInInputRampParamsAtIndex:",
+    "__ikVisibleRect",
+    "getExternalMovie:",
+    "insertSublayer:atIndex:",
+    "operations",
+    "initWithOperatorType:modifier:",
+    "isAnIcon",
+    NULL,
+    "deserializeInts:count:atCursor:",
+    NULL,
+    "_handlesSelectAll",
+    "setIgnoresAntialiasThreshold:",
+    "_keyFrameAtIndex:",
+    "getResolutionData:labelMetricsTop:left:bottom:right:baselineY:",
+    "resetToolMode",
+    "paramDescriptorForKeyword:",
+    "_scrollPoint:fromView:",
+    "_endColumnAnimationOptimization",
+    "initWithACENode:",
+    "setAcceptsDrop:",
+    "dragImageForRows:event:dragImageOffset:",
+    "stalenessInterval",
+    NULL,
+    "_valueBuffer",
+    "max",
+    NULL,
+    "drawSelectionAroundTextRect:",
+    "handleMouseDownEvent:at:inPart:withMods:",
+    "_windowSideTitlebarTitleMinWidth:",
+    "setMaxAnimationFrameRate:",
+    "_setCertAuthorityBasicConstraintsPresent:",
+    NULL,
+    "setAnimationDelay:",
+    "_configureAndDrawTitleWithRect:cellFrame:",
+    "willOpen",
+    "_stripAttachmentCharactersFromAttributedString:",
+    "addToDirectoryResults:",
+    "editPerson:",
+    "performRubberBandingWithEvent:",
+    "accessibilityIsValueAttributeSettable",
+    "navNodeWithQueryString:searchScopes:title:",
+    "imageFlow:didLoadItemAtIndex:",
+    NULL,
+    "documentContentKind",
+    "componentsSeparatedByCharactersInSet:",
+    "_drawThemeComboBoxButtonWithFrame:inView:",
+    NULL,
+    "_URL",
+    NULL,
+    "browser:canDragRowsWithIndexes:inColumn:withEvent:",
+    "initWithMetadataManager:recordUniqueIds:",
+    "_isStrictByParsingExcludedElements",
+    "_updateGrammar",
+    "peoplePickerView",
+    "_opaqueRect",
+    NULL,
+    "_didImportCellsAtIndexes:",
+    "objectInstanceDescription",
+    "_chooseFace:",
+    "_includeObject:intoPropertyWithKey:andIndex:",
+    "_enableEnablingKeyEquivalentForDefaultButtonCell",
+    "fileHandleWithStandardInput",
+    "_clearDeletions",
+    "isOnLocalHost",
+    "onSliderMouseDown:event:",
+    "addObject:toBothSidesOfRelationshipWithKey:",
+    "_sweepDirectionForGlyphAtIndex:",
+    "_insertionOrderForPicker:",
+    "_widthOfPackedGlyphs:count:",
+    "_validatedPosixName",
+    "creationDate",
+    "_inTexturedWindow",
+    "shouldReportNamespacePrefixes",
+    NULL,
+    "dataWithEPSInsideRect:",
+    "_backstopView",
+    "SFElement",
+    NULL,
+    "materialWarp:pull:choke:edge:flat:",
+    "copyStream:to:length:",
+    "logs",
+    "_setNeedsDisplay:",
+    "updateSpellingPanel",
+    "_characterIndexForMoveLeftFromCharacterIndex:",
+    "serialize",
+    NULL,
+    "_invalidateForLiveResize",
+    "rectForPage:",
+    "startSync",
+    "_setCustomAreaSize:",
+    "_setUpAppKitTranslations",
+    "trackScrollButtons:",
+    "_web_looksLikeIPAddress",
+    "_unbind:",
+    "sendEOF",
+    "volatileRepresentation",
+    "_doneLoadingImage:",
+    "_genericValueForKey:withIndex:flags:",
+    "members",
+    NULL,
+    "addSubItem:",
+    "_glyphRangeForCharacterRange:actualCharacterRange:okToFillHoles:",
+    "saveToPath:",
+    "_inLiveResize",
+    "addPropertiesAndTypes:withAddressBook:acquireLock:save:",
+    "setShowsBaselineSeparator:",
+    "defaultBackupFileNameConvertingFromHFSToPosix:",
+    "showsBorderOnlyWhileMouseInside",
+    "normalSpeakingRate",
+    "_savedMode",
+    "initWithContentsOfFile:encoding:error:",
+    "shadowFrom:red:green:blue:opacity:",
+    NULL,
+    "_writableTypeForType:saveOperation:",
+    "statusStringForCode:domain:",
+    "defaultRenderingOptions",
+    "indexAtLocationOfDroppedItem",
+    "loadOurNib",
+    "setTextColor:",
+    "_imageFromNewResourceLocation:",
+    "makeObjectsPerformSelector:",
+    "addModificationDateToDictionaryRef:",
+    "descendsFrom:",
+    "_hideLanguagePopUp",
+    NULL,
+    "resetCommunication",
+    "convertRectFromFrameToBounds:",
+    "_drawerLeftOffset",
+    "_collectionsChanged:",
+    "colorWithString:",
+    NULL,
+    "_drawFrameInterior:clip:",
+    "boundsForTextCell:",
+    NULL,
+    "setNegativeInfinitySymbol:",
+    "undoMenuItemTitle",
+    "setLevelsOfDetail:",
+    "initWithName:host:",
+    "_offset",
+    "valueHandler",
+    "_sendEventToThreadLocked:",
+    NULL,
+    "_potentialMaxSize",
+    "_drawFrameShadowAndFlushContext:",
+    "_setSessionData:",
+    "initWithFrame:",
+    "nameColumnTag",
+    "_visibleItemViewers",
+    "_initValueTransformers",
+    "animationResizeTime:",
+    "writePluginInformationIntoDictionary",
+    "_autosaveRecordPath",
+    NULL,
+    "imageFlow:startResizingWithEvent:",
+    "fontInstanceForFontDescriptor:size:affineTransform:renderingMode:",
+    "_cfindexOfObject:range:",
+    "initWithPredicate:inScope:",
+    "_web_RFC1123DateString",
+    "keyPathExpressionForString:",
+    "_undoManager",
+    "pageOrder",
+    "_shouldHighlightCellWhenSelected",
+    "_addToTypingAttributes:value:",
+    "setTargetValue:forObject:keyPath:duration:",
+    "_scriptingTypeWithDescriptor:",
+    "decompressionSessionOptionsForConnection:",
+    "decimalNumberByMultiplyingByPowerOf10:withBehavior:",
+    "infoWithAddressBook:",
+    "shownValueInObject:errorEncountered:error:",
+    "_shouldEnforcePixelAlignment",
+    "_inputPorts",
+    "_registerExtraFunctions",
+    "_setUpAutomaticRearrangingOfObjects",
+    NULL,
+    "setContinuousSpellCheckingEnabled:",
+    "poolCountHighWaterResolution",
+    NULL,
+    "isEqualToData:",
+    "removeObject:fromPropertyWithKey:",
+    "titleFrameOfColumn:",
+    "isSteppable",
+    "_indexForMoveLeft",
+    "_growFrameForDropGapStyleIfNecessary",
+    "setLaunchPath:",
+    "_createPixelBufferFromImageBuffer:bounds:needsClipping:flippedState:options:",
+    "_allowsScreenFontKerning",
+    "loadNSImageNamed:fromBundle:into:",
+    "_audioCompleted1",
+    "_undoDeletionsMovedToUpdates:",
+    "initWithShort:",
+    "setMessageText:",
+    NULL,
+    "_predicateRestrictingSuperentitiesForEntity:",
+    "_preferredFocusLocationMask",
+    "registeredObjects",
+    NULL,
+    "_defaultTimeout",
+    "_setObject:forAttributeKey:",
+    "setAllowedInputSourceLocales:",
+    "appendBezierPath:",
+    "hasGizmo",
+    "setJavaEnabled:",
+    NULL,
+    "_abCompareNotWithinIntervalAroundToday:",
+    "_setMultipleValue:forKeyPath:atIndexPath:",
+    "_initFromRangeRecord:",
+    "filter:valueForKey:",
+    NULL,
+    "mouseMovedDelegate:",
+    NULL,
+    "initUnlockWithURL:lockToken:",
+    "setDatabaseOperator:",
+    "fogShader",
+    NULL,
+    NULL,
+    "fontNameWithFamily:traits:weight:",
+    "IKSlideshowWrapAround",
+    "_bidiLevels",
+    "export:",
+    "respondsToProperty:",
+    "indexOfSegmentContainingPoint:inCellFrame:",
+    "objectValues",
+    "_alwaysDrawsActive",
+    "setImageAlignment:",
+    NULL,
+    "eventSize",
+    "deserializeList:",
+    "initWithContainerClassDescription:containerSpecifier:key:",
+    "isUsableWithObject:",
+    "resizeEdgeForEvent:",
+    NULL,
+    "archiver:willEncodeObject:",
+    "shadeColorWithDistance:towardsColor:",
+    "openWithFinder:",
+    "_windowResizeBorderThickness",
+    NULL,
+    NULL,
+    NULL,
+    "_setCurrentThread:",
+    "_gray221Color",
+    "windowWillChangeFrame:toFrame:",
+    "indexOfObject:range:identical:",
+    "initWithRect:",
+    NULL,
+    "initWithGroups:addressBook:",
+    "_setDefaultItems:",
+    "setShouldAntialias:",
+    "writeInt:",
+    "initWithPasteboardDataRepresentation:",
+    "setMipmapItem:",
+    "dragFile:fromRect:slideBack:event:",
+    "_setObject:forProperty:usingDataSize:",
+    "commandDescriptionsByName",
+    "removeChapters",
+    "_drawLineForGlyphRange:inContext:from:to:at:thickness:lineOrigin:breakForDescenders:",
+    "selectedTextBackgroundColor",
+    NULL,
+    "newCreateTableStatementForManyToMany:",
+    "setPanelType:",
+    NULL,
+    "contentResizeIncrements",
+    "scrollStepInDirection:",
+    "reloadCriteria",
+    "setProperties:",
+    "pasteAsPlainText:",
+    NULL,
+    "_updateDependenciesWithPeerBinders:",
+    "noteNewRecentDocument:",
+    "currentTask",
+    "removeFromWindow:",
+    "_populateReplyAppleEventWithResult:",
+    "initWithIncrements:parent:",
+    "initRemoteWithProtocolFamily:socketType:protocol:address:",
+    "_currentLocalMousePoint",
+    NULL,
+    "_removeAllToolTips",
+    "extensions",
+    "setAllowsOpenGLAcceleration:",
+    "openTempFile:",
+    "_createMatrixRowsAndColumns",
+    "setTightenThresholdForTruncation:",
+    "_createMenuItemWithTitle:",
+    "_getRestOfFile",
+    "setAllowEditing:",
+    "_countWithNoChangesForRequest:error:",
+    "_printerInPrintSession:",
+    "didChangeValueForKey:forIndexes:",
+    "_filenameForCollection:",
+    "_bezelBottomOffset",
+    "_expandedCFCharacterSet",
+    "_validateLinkTargetSpecifier",
+    "cropPRS",
+    "_setExcludedFromVisibleWindowList:",
+    "waitUntilAllOperationsAreFinished",
+    "setClassDescription:",
+    "cancelPerformSelector:target:argument:",
+    NULL,
+    "invalidateCredentials:",
+    "_sendDataSourceSetObjectValue:",
+    "accessibilityIsParentAttributeSettable",
+    "nextSingleByteBase64Line:",
+    "removeDescriptorWithKeyword:",
+    "accessibilityIsSelectedRowsAttributeSettable",
+    "_mouseActivationInProgress",
+    "setIntAttribute:value:forGlyphAtIndex:",
+    "_newLazyRepresentation:::",
+    NULL,
+    "autosaveCache",
+    "_addRangeToArray:",
+    "_moveDownAndModifySelection:",
+    "hour",
+    "temporaryAttribute:atCharacterIndex:longestEffectiveRange:inRange:",
+    "timeDateFormatter",
+    "decodeNXObject",
+    "_resizeRightCursor",
+    "_drawRoundedBorder:radius:mapRadius:groupType:texOut:texIn:lineWidth:",
+    NULL,
+    "nts_ValueInTemporaryCacheForProperty:",
+    "initWithQCImageBuffer:options:",
+    "_setForceTailTruncation:",
+    "_setSuppressNotification:",
+    "accessibilityWindowsAttribute",
+    NULL,
+    "_delayedFreeRowEntryFreeList",
+    "_newLegalSizeFromSize:force:roundDirection:",
+    "_contentToFrameMinXWidth:",
+    "decimalNumberByMultiplyingBy:",
+    "unionWithRect:",
+    "localeIdentifier",
+    "scalingFactor",
+    "ensureGlyphsForGlyphRange:",
+    "_countDisplayedDescendantsOfItem:",
+    "_getRidOfCacheAndMarkYourselfAsDirty",
+    "_alignCoords",
+    NULL,
+    "minWidth",
+    "insertionContainer",
+    "_forceUpdateCompositions",
+    NULL,
+    "initWithCharacterRange:isSoft:",
+    "_setDocumentPreview:",
+    "createPillBezier:inContext:",
+    "pictureTaker:willPopupRecentItems:",
+    "maxRenderingSize",
+    "_stringForRepresentedObjects:",
+    "_doResizeDrawerWithDelta:fromFrame:",
+    "timeMachineController",
+    "setCancellationDelegate:wasCancelledSelector:contextInfo:",
+    NULL,
+    "_isHelpMenu",
+    "setIsInPriorityList:",
+    "_effectiveCalendar",
+    "MIMETypeForExtension:",
+    "coreFindString:",
+    "abortTakePicture",
+    "directoryDataHasArrived:",
+    "netServiceDidPublish:",
+    "beginSheetWithPrintInfo:modalForWindow:delegate:didEndSelector:contextInfo:",
+    "setSource:",
+    "_grayHighlightColor",
+    "description",
+    "_layoutTabs",
+    "_generateSQLForConst:inToMany:inContext:",
+    NULL,
+    "setModalDelegate:",
+    "connection:didReceiveResponse:",
+    "output",
+    "_setLetOverrideDefaults:",
+    NULL,
+    "inputSourcesFromInputSourceLocales:",
+    "columnAtX:",
+    NULL,
+    "getFileSystemRepresentation:maxLength:withPath:",
+    "setTitleWithMnemonic:",
+    "knownKeyValuesPointer",
+    "invalidateCacheAndStorage",
+    "sharedMemory",
+    "accessibilityColumnsAttribute",
+    "quartzfilter",
+    "scriptingColorWithDescriptor:",
+    "_updateAntialiasingThreshold",
+    "setSelectedComposition:",
+    "_initWithOutput:",
+    "elementWithName:",
+    "CA_encodeObject:forKey:conditional:",
+    NULL,
+    NULL,
+    "makeImmutable",
+    "_characterIndexForMoveWordRightFromCharacterIndex:",
+    NULL,
+    "setMasksToBounds:",
+    "validateForInsert:",
+    "typeOfCustomProperty:addressBook:",
+    "draggedImageForFreeFormLayoutWitClickedPoint:hotPoint:",
+    "_setNeedsDisplayForItemViewers:movingFromFrames:toFrames:",
+    NULL,
+    "enumeratorOfInputTopLine",
+    "_propertyDescriptionForKey:checkSubclasses:superclasses:",
+    "editCard:",
+    "_accessibilityValue",
+    "checkForGLError",
+    "_setLocalName:",
+    "_splitView",
+    "_attachmentAtGlyphIndex:containsWindowPoint:",
+    "accessibilityIsDescriptionAttributeSettable",
+    "quickTimeMedia",
+    "searchForString:inBooks:withResponseTarget:options:",
+    "setCanChooseDirectories:",
+    "initWithMachPort:options:",
+    "nextToken",
+    NULL,
+    "setIrisClosed:",
+    "insertSegmentOfTrack:fromRange:scaledToRange:",
+    "clipToQDRegion:",
+    "viewGRLWithView:withParent:",
+    "_titleIsRepresentedFilename",
+    NULL,
+    "_setCARenderAnimation:",
+    "_finishHideAnimation",
+    "download:didCancelAuthenticationChallenge:",
+    "setGraph:",
+    "_createMutableArrayValueGetterWithContainerClassID:key:",
+    "isSharedWithContext:",
+    "_reallyChooseGuess:",
+    "screenRectCG",
+    "typeOfProperty:forTable:",
+    "registerServicesMenuSendTypes:returnTypes:",
+    "backingReleaseCallback",
+    "_contentView",
+    "sourceInstancesForEntityMappingNamed:destinationInstances:",
+    NULL,
+    "initWithOptions:capacity:",
+    "initRootWithKey:withGRLIndex:",
+    "numberWithUnsignedLong:",
+    "initWithArray:forTarget:withReferenceValues:andRange:andCopyItems:",
+    "setPassphrase:",
+    "minimalSharedContextForCurrentThread",
+    "__isRoomWellLit:size:bpr:skipFirstComponent:spp:",
+    "__addToSelection:context:",
+    "boundsForPage:",
+    "_findLastFieldLabelforAttribute:startingAt:",
+    "archivedDataWithRootObject:",
+    "removeClassDescriptions:",
+    "_loadFromQueryData",
+    "decrDBRetainCount",
+    "recipeDifference:with:",
+    "mergeFontFeaturesInto:",
+    "_typeDescriptionsFromEnumerationImplDeclarations:presoDeclarations:valueTypeDeclarations:",
+    "_usesFastJavaBundleSetup",
+    "_insertStatusItem:withPriority:",
+    "_drawDebugRange:withOffset:",
+    "setNextUndoManager:",
+    "closePanel",
+    "maxDate",
+    "pushDestination:",
+    "_userLoggedOut",
+    "setThumbnailsFitOnScreen:",
+    "_helpWindow",
+    "registerUndoWithTarget:selector:object1:object2:object3:object4:",
+    "_undoRedoInProgress",
+    "_initWithNib:",
+    "_setLastHitView:",
+    "_noise2d:y:min:max:",
+    "selectedObjects",
+    "_calcOutlineColumnWidth",
+    "valueForTag:",
+    "_preEventHandling",
+    "smartInsertDeleteEnabled",
+    "setCharactersToBeSkipped:",
+    "splitterWithIndex:parent:",
+    "_updatePreview",
+    "adjustScroller",
+    "_deactivateOverlayControls",
+    "_indexSheetTransitionFrame",
+    "minimumSignificantDigits",
+    "selectIntermediate",
+    "_removeExtension:",
+    "_invokeMultipleSelector:withArguments:onKeyPath:atIndex:",
+    "_recursivelyPropagateCocoaDirtyRectsToCarbonForHIView:",
+    "evaluatePredicates:withObject:substitutionVariables:",
+    "setMovieAttributes:",
+    "contextHelpForObject:",
+    "_drawRect:liveResizeCacheCoveredArea:",
+    "removeTemporaryAttribute:forCharacterRange:",
+    "_drawDelegate",
+    "makeDocumentWithContentsOfURL:ofType:error:",
+    "_historyControlCell",
+    "rowCountRange",
+    "_fillLayoutHoleForCharacterRange:desiredNumberOfLines:isSoft:",
+    "sortingFirstName",
+    "setCurrentTab:",
+    "trackID",
+    NULL,
+    "_loadPreviewSucceededForDocumentPreviewView:",
+    "canStoreColor",
+    NULL,
+    "_sumForKeyPath:",
+    "selectKeyViewPrecedingView:",
+    "setAlternateParentClass:",
+    "noteRollOverPath:",
+    "windowChangedMain:",
+    "numberWithUnsignedLongLong:",
+    "colorWithColor:",
+    "netService:didNotPublish:",
+    "doubleValueOfProperty:",
+    "_oldFontSetNames",
+    "_expandItemEntry:expandChildren:startLevel:",
+    "setShowsBorderOnlyWhileMouseInside:",
+    "_updateSelectionIndexPaths:",
+    "deliverResult",
+    "_validateObjects:forOperation:error:exhaustive:forSave:",
+    "wantsToDrawIconIntoLabelAreaInDisplayMode:",
+    "hasHiddenParts",
+    "getProperties",
+    "addressBook",
+    "numberWithLongLong:",
+    "setAlignmentRect:",
+    NULL,
+    "_growFrameForDropGapStyle",
+    "_timerFired:",
+    "setDestinations:forRelationship:",
+    "_cfAppendCString:length:",
+    "dataLength",
+    "setMovable:",
+    "_preloadWithQuality:",
+    "dictionaryWithCapacity:",
+    "setQCComposition:",
+    "purgeExtras",
+    "processCDATA:",
+    "loadData:MIMEType:textEncodingName:baseURL:",
+    "_addTargetAnimation:start:atProgress:",
+    "drawerDidOpen:",
+    "mouseDraggedOnCharacterIndex:atCoordinate:withModifier:client:",
+    "addGroupsFromPasteboard:toGroup:",
+    "receiversSpecifier",
+    NULL,
+    "registerModel:",
+    "grl",
+    "_distanceFromBaseToTopOfWindow",
+    "saveFontCollection:withName:",
+    NULL,
+    "_hide:",
+    "_userCanSelectSingleRow:",
+    "reason",
+    "zoomRange",
+    "sourceObject",
+    "blackSubtractAndPremultiply:pattern:factors:blackLevels:image:",
+    "_removeLockTokenForURI:",
+    "_validateDropForDragInfo:",
+    "darkPaperBackgroundUsingTexture:",
+    "cancel:",
+    "hasPosterImage",
+    "_createNewNodePreviewHelper",
+    NULL,
+    "_removeToolTipAndTimer",
+    "personValue",
+    "noHolesZoomRange",
+    "movieTypesWithOptions:",
+    "setMaxWidth:",
+    "setCurrentNode:",
+    NULL,
+    NULL,
+    "getGlyphsInRange:glyphs:characterIndexes:glyphInscriptions:elasticBits:bidiLevels:",
+    "setSegmentCount:",
+    "pemEncodedTextData",
+    "keyNavigationView",
+    "windowWillGoAway:",
+    "finishWindowModal",
+    "_setPartialKeysWithTableBinder:forTableColumnBinder:",
+    "isVertical",
+    "groupsController:outlineView:shouldEditTableColumn:item:",
+    "addJoinIntermediate:",
+    NULL,
+    "clearViewport:",
+    "setJoinType:",
+    "nts_GroupsWithAddressBook:",
+    "didClose",
+    "_fontNameForFamily:face:",
+    "center:didAddObserver:name:object:",
+    "resetFormForFields:",
+    "groupsAtRemoteLocation:",
+    "_cleanUpAfterSave",
+    "_canAutoGenerateKeyboardLoops",
+    "addToPageSetup",
+    "cycleToNextInputServerInLanguage:",
+    "capitalizeWord:",
+    "_validateCredentialsWithPath:andDAVSession:",
+    "setFlipped:",
+    "layoutType",
+    "_decrementInUseCounter",
+    "nts_SetNeedsToRestoreAddressBookFromMetaData:",
+    "_unhide",
+    "_commonName",
+    "_printStructure:toString:linePrefix:",
+    "_initWithWindowNumber:scaleFactor:",
+    "_indexPath",
+    "imageAndTitleOffset",
+    "_setPostHandler:andTargetObject:",
+    "operationQueue",
+    "PMPageFormat",
+    "activateIndexSheetWithAnimation:",
+    "tracksWithCharacteristic:",
+    "setOutlineTableColumn:",
+    "nts_InsertInArray:",
+    "_installOpenRecentMenuOpeningEventHandler:",
+    "IKIPSetFrame:constrainedToScreen:display:animate:",
+    "rotateRight:",
+    "miniDocumentPreviewFrame:forItemAtURL:withItemFrame:",
+    "_needsDisplay",
+    "nts_ClearInstanceCaches",
+    "setCacheMode:",
+    NULL,
+    "_baseKey",
+    "initSymbolicLinkWithDestination:",
+    NULL,
+    "_insertionIndexPathAppendChildIndex:",
+    "setIntParameterValue:to:",
+    NULL,
+    "nts_GroupsAtRemoteLocation:",
+    "_alignPoint:force:",
+    "allowsNaturalLanguage",
+    "_getItemsAndValuesToAddForRow:ofType:",
+    NULL,
+    "_getInputWhiteParams",
+    "setShowsiChatTheaterButton:",
+    "_setNullForKey:",
+    "presentError:",
+    "initWithRect:options:owner:userInfo:",
+    "setSelectionIndexes:",
+    "defaultTypesetterBehavior",
+    "minScaleFactor",
+    "_editedDocumentCount",
+    "minPossiblePositionOfDividerAtIndex:",
+    "initWithCVImageBuffer:options:",
+    NULL,
+    "_hasOverrideForSelector:",
+    "_versionReference",
+    "_freeTextures:",
+    NULL,
+    "path",
+    "_attributes2ForPageOffset:entryOffset:blockType:baseAttributes:",
+    "convertFont:toHaveTrait:",
+    "viewForObject:",
+    "initForBasicProperties",
+    "_coreUILinearOrientation:",
+    "_queryNumberOfChildrenOfItem:withRowType:",
+    "validateMetaData",
+    "setLanguage:",
+    "_rulerAccViewStylesAction:",
+    "browser:isColumnValid:",
+    "_filenamesWithAlwaysIncludingDirectories:",
+    "exportFileAtPath:info:",
+    "comparisonsForProperty:",
+    "_dragIndexes:withEvent:pasteboard:source:slideBack:",
+    "localizedDefaults",
+    "slider",
+    "_endEditingIfEditedCellIsChildOfItemEntry:",
+    "initWithGRL:invocation:",
+    "setDefaultMiterLimit:",
+    "groupsController:outlineView:willDisplayOutlineCell:forTableColumn:item:",
+    "configureForLayoutInDisplayMode:andSizeMode:inToolbarView:",
+    "selectionBoundingBox",
+    "pictureTakerShouldClearRecents:contextInfo:",
+    "yellowComponent",
+    "insertDescriptor:atIndex:",
+    "converterProperties:allObjects:images:imageBPC:imageRenderingIntent:",
+    "accessibilityIsRoleAttributeSettable",
+    "stringByFoldingWithOptions:locale:",
+    "initAppearingAnimationWithItems:diff:",
+    "setPrimitiveCreationDateYearless:",
+    "_internalTypeSelectStringForColumn:row:",
+    "setAttributes:",
+    "moveToBeginningOfDocument:",
+    "adjustMatrix:numberOfRows:",
+    "setUndoActionName:",
+    "shouldEnableRollOverIdentifier:withSelection:",
+    "stopControl",
+    "_scanImages",
+    "documentAttribute:",
+    "_attributeDescription",
+    "setScrollerValueFromSelection",
+    "updateMatrices",
+    "_indexOfKey:",
+    "_initWithSuiteName:className:implDeclaration:presoDeclaration:",
+    "inertia",
+    NULL,
+    "clearAllModelObjectObserving",
+    "_releaseUndoManager",
+    "executionMode",
+    "_highlightsWithHighlightRect",
+    "segmentedCell",
+    "alertWithError:",
+    "darkMetalBackgroundUsingTexture:",
+    "objectDidBeginEditing:",
+    "parseKeyHeader:",
+    "autorecalculatesContentBorderThicknessForEdge:",
+    "_ql_waitForKey:toBeEqualTo:",
+    "setPage:",
+    "transactionDidCommit",
+    "invfk",
+    "addGuidesLayer:",
+    "curveToPoint:controlPoint1:controlPoint2:",
+    NULL,
+    "valueWithNonretainedObject:",
+    "imagePosition",
+    "incrementRefCount",
+    "_minimumFrameHeight",
+    "_isDoingOpenFile",
+    "sliceIsEditable",
+    "defaultValue",
+    "movieNamed:error:",
+    "runToolbarConfigurationPalette:",
+    "_refreshLayoutAndContent",
+    "instanceMethodForSelector:",
+    "popupHit:",
+    "fireTime",
+    NULL,
+    "cacheRelease:",
+    "_resetMoveAndRenameSensing",
+    "tokenFieldCell:shouldUseReadablePasteboardTypes:",
+    "setSizeFunction:",
+    "drawBackgroundInClipRect:",
+    "_changedFlags",
+    "currentCursor",
+    "initWithCertificate:",
+    "_generateSQLContainmentStringInContext:",
+    "menuFormRepresentation",
+    NULL,
+    "_specifiedIndexOfObjectInContainer:",
+    "registerDragTypes:forWindow:",
+    "pdfViewResized:",
+    "createPixelBufferFromImageBuffer:withFormat:transformation:bounds:colorSpace:options:",
+    "applicationShouldTerminate:",
+    "decodeObject",
+    "sessionUID",
+    "_uri",
+    "setMe:",
+    "setInformationalString:",
+    "labelViewClass",
+    "_encodePropertyList:forKey:",
+    "_graphIsRunning",
+    NULL,
+    "_localizedKeyFromBundleStringFileForKey:",
+    "insertTable:",
+    "setStandardInput:",
+    "PDFView",
+    "predicateWithSubpredicates:",
+    "updateProgress:",
+    "_updateLayerFiltersFromView",
+    "_data:len:",
+    "setRepeatDuration:",
+    "_trackedConnection",
+    "indentation",
+    NULL,
+    "serviceType",
+    "_loadAnimation",
+    "keySpecifier",
+    "_closeWithEffect:canReopen:",
+    "searchNode",
+    "exitFullscreen",
+    "_changeHistory:",
+    "accessibilityIsZoomButtonAttributeSettable",
+    "properties",
+    "providerMD5",
+    "_runAsSheet",
+    "controllerForBinding:",
+    "_updatedCardWithChanges:",
+    "setTextAttributesForNegativeInfinity:",
+    "_startEditingColumn:row:event:",
+    "reinitialize",
+    "predicate",
+    NULL,
+    "initWithSourceObject:sourceKey:targetObject:targetKey:userInfo:",
+    "isVariableBasedKeypathScopedBySubquery:",
+    "drawingRectForBounds:",
+    "_drawRect:liveResizeFill::::cacheCoveredArea:",
+    "updateSyncIndicators",
+    "_drawGradientInRect:",
+    NULL,
+    "_thumbnailView",
+    "initRecordDescriptor",
+    "isEventCoalescingEnabled",
+    "setupSearchView",
+    "changeAddressFormat:",
+    "getThreadArgument",
+    "_borderView",
+    "installCarbonEventHandler",
+    "_selectTextOfCell:",
+    "_attemptToEditFocusedColumn",
+    "_scaleFactorForStyleMask:",
+    "initWithURL:options:documentAttributes:error:",
+    "_parseFonts1",
+    "pauseWritingOperationWithScheduledTime:",
+    "_disableResizedPosting",
+    "isSingleAttribute:",
+    "_willShowDisplayableView:",
+    "optionsFromPanel",
+    "_setSubmenu:",
+    NULL,
+    "shouldCreateUI",
+    "__computePreLiveColumnResizeWidthsByColumn",
+    "changeToolbarDisplayMode:",
+    "CA_attributesForKeyPath:",
+    "shouldShowMediaBrowser",
+    "_liveResizeCachedBounds",
+    "_setVisibleRectOfColumns:",
+    "initWithButtonID:",
+    "isBindingKeyless:",
+    "property:matchesPieces:forPerson:",
+    "loadFindStringToPasteboard",
+    "addAccessoryController:",
+    "accessibleChildren",
+    "initWithObject:entity:",
+    "rectArrayForGlyphRange:withinSelectedGlyphRange:inTextContainer:rectCount:",
+    NULL,
+    "loadPluginForRight:engineRef:pluginView:",
+    "deleteBackwardByDecomposingPreviousCharacter:",
+    "_stringByTranslatingTextDescriptor:toType:inSuite:",
+    "initWithPrintInfo:purpose:",
+    "compositingFilter",
+    "reloadSlideshowItemAtIndex:",
+    "setThumbnail:withSize:",
+    "addNode:forKey:",
+    "_maxXWindowBorderWidth:",
+    "abUniqueIds",
+    "menuClassName",
+    "statusMenu",
+    "setMouseCell:",
+    "classForActionDictionary:",
+    NULL,
+    NULL,
+    "numberOfCharactersSelectedOnPage:",
+    "registerURLHandleClass:",
+    NULL,
+    "locationInWindow",
+    "_isUserRemovable",
+    "newlineCharacterSet",
+    "setDividerStyle:",
+    "_wantsLiveResizeToUseCachedImage",
+    "newPasswordField",
+    "thumbnailImage",
+    "unscriptRange:",
+    "_arrowScrolling",
+    "startClearSearchTimer",
+    "_accessibilityIsInCustomizationSheet",
+    NULL,
+    "autorelease",
+    "_web_parseAsKeyValuePairHandleQuotes_nowarn:",
+    "objectInSubNodesAtIndex:",
+    "_locationFromUnitsValue:",
+    NULL,
+    "setOnOpenGLContext:",
+    "entityForID:",
+    "_rootRowsArray",
+    "_itemEnabledStateChanged",
+    "initWithReferenceToData:",
+    "initWithDate:",
+    "_wantsRevealoverAtColumn:row:",
+    "caseSensitive",
+    "_allocRowHeightCache",
+    "_positionSheetConstrained:andDisplay:",
+    "headerRectOfColumn:",
+    "decimalNumberWithDecimal:",
+    "_itemChangedToolTip",
+    "_typeAhead:",
+    "setSpoolPath:",
+    "nts__RealCompositeName",
+    "initWithElement:frame:dateFormat:stringValue:",
+    "_errorWasPresentedWithRecovery:inContext:",
+    "_uninstallRemovedTrackingAreas",
+    "_uniqueMessageNumber",
+    "abbreviationDictionary",
+    "_clipViewAncestorWillScroll:",
+    "_rootNode",
+    "_surfaceDidComeBack:",
+    "preferredVolume",
+    "appendClause:forKeyPathExpression:allowToMany:",
+    "setMouseRow:",
+    "_menuDidSendAction:",
+    "displayChanged:",
+    "predicateString",
+    "_pointInPicker:",
+    "_removeHelpKeyForObject:",
+    "supportUnitsForConnections",
+    "_auxStorage",
+    "_mappingNamed:",
+    "_rulerAccViewUpdateStyles:",
+    "_scriptingDescriptorOfRecordType:orReasonWhyNot:",
+    "_shouldAddObservationForwardersForKey:",
+    NULL,
+    "advanceToEOL",
+    "_sqlTokenForPredicateOperator:inContext:",
+    "isMiniaturizable",
+    "_keyFramesSelected",
+    "_drawPart:withFrame:",
+    "setFoundMatch:",
+    "objectForKey:",
+    "_texturePattern",
+    "accessibilitySelectedText",
+    "setBorderColor:",
+    "saveFilter:notification:",
+    "_deleteNote:",
+    "setCreationOptionFlags:",
+    "animateCompositions",
+    "_beginTransaction:",
+    "loadThumbnail",
+    "checkSpelling:",
+    "sendSynchronousRequest:returningResponse:error:",
+    "abCaseInsensitiveIsEqual:",
+    "exitSlideshow:",
+    "setArrowsPosition:",
+    "_adjustLayoutForTextAreaFrame:",
+    "toolbarBackgroundColor",
+    "_descriptionOfView:",
+    NULL,
+    "_performKeyEquivalent:conditionally:",
+    "accessibilitySelectedChildren",
+    NULL,
+    "_startLoadWithRequest:delegate:",
+    "browser:numberOfRowsInColumn:",
+    "_isInheritedPropertyNamed:",
+    "_moveToPreviousBlock",
+    "setVisualContextRef:",
+    "_doUserComplete",
+    "initWithLongLong:",
+    "imageWithCallback:param:",
+    "_frameDidDrawTitle",
+    NULL,
+    "_unicodeInputEventReceived",
+    "setConstraints:",
+    "fastImageForSize:forGLRendering:",
+    "_browserDoubleAction:",
+    "initWithControlPoints::::",
+    "outlineView:selectionIndexesForProposedSelection:",
+    NULL,
+    "initWithFrame:inStatusBar:",
+    "endOffset",
+    "handleFailureInFunction:file:lineNumber:description:",
+    "_noop:",
+    "_forciblyStopFileWritingForRunningOperation",
+    "class",
+    "insertObject:inAttributesAtIndex:",
+    "deleteCharactersInRange:",
+    NULL,
+    "insertObject:range:",
+    "_drawMouseCoordinates",
+    "becomeSingleThreaded:",
+    "_enableScreenUpdates",
+    "_stopTimerIfRunningForToolTip:",
+    "_ensureCellIsLoaded",
+    "glRendererEnabled",
+    "setActiveKnob:",
+    "glyphIsEncoded:",
+    "decodeRectForKey:",
+    "initWithReferenceToFile:",
+    "propertyList",
+    "baseGetter",
+    "streamWithObjectToken:track:",
+    "_willUnmountDeviceAtPath:ok:",
+    "setAutoAlternates:",
+    NULL,
+    "_minCellSize",
+    "setCanClickDisabledFiles:",
+    "whereClause",
+    "_performDragOfCell:fromMouseDown:",
+    "wantsToTrackMouse",
+    "_rulerAccViewDecimalTabWell",
+    "isEqualToCompressionOptions:",
+    NULL,
+    "updateDateAttributes",
+    "_blockDescription",
+    "setVerticallyCentered:",
+    "copyWithZone:",
+    "pasteboard:provideDataForType:itemIdentifier:",
+    "fetchCustomPropertyDefinitionsWithRecordType:addressBook:",
+    "imageRectForBounds:",
+    "_sessionDidBecomeActive",
+    "_resizeColumnByDelta:resizeInfo:",
+    NULL,
+    "runModalSavePanelForSaveOperation:delegate:didSaveSelector:contextInfo:",
+    NULL,
+    "deviceDeltaY",
+    "createButton:rightSideDivider:",
+    "_loadCell:atRow:col:inMatrix:",
+    "_freeClients",
+    "drawSubtitle",
+    "_drawDropHighlightBackgroundForRow:",
+    "localizedFailureReason",
+    "mouseCol",
+    "setMaxCode:",
+    "saveCompositionToFile:flatten:",
+    "_fullNameIncludingAuxiliaryElements:",
+    "initWithSet:",
+    "secondsFromGMTForTimeInterval:",
+    "reenableHeartBeating:",
+    "_lockFocusNoRecursion",
+    "drawHeaderWithAlpha:",
+    "getTypographicLineHeight:baselineOffset:leading:",
+    "auxData",
+    "handleMenuClosed:",
+    "rootProxyForConnectionWithRegisteredName:host:usingNameServer:",
+    "cgsRegionObj",
+    "trackingAreas",
+    "clearDictionaryRef",
+    "paragraphSpacingAfterGlyphAtIndex:withProposedLineFragmentRect:",
+    NULL,
+    "effectID",
+    "pixelBufferRepresentation",
+    "titleStringFrame",
+    "shouldEnableActionForPerson:identifier:",
+    "_setBundle:forClassPresentInAppKit:",
+    "selectParagraph:",
+    "onStateImage",
+    "selectionForAccessibilityRange:",
+    "_setFont:forCell:",
+    "disable:",
+    NULL,
+    "setOutputOrder:forKey:",
+    "immutablePlaceholder",
+    "setAllowDynamicResize:",
+    "setSelectedDirectories:",
+    "initWithStore:fromPath:",
+    "popAndInvoke",
+    "prevShownGRL",
+    "isFixedPitch",
+    "hasFaultForRelationshipNamed:",
+    "_isDefaultFixedPitch",
+    "URI",
+    "setDrawSynchronously:",
+    "firstTextViewForTextStorage:",
+    "_resultTypeDescription",
+    "setURLs:preservingDisplayState:",
+    "submenuAction:",
+    "coveredCharacterCache",
+    "setRoot:",
+    "scrollViewFrameDidChange:",
+    "columnCountRange",
+    "isNativeFileType",
+    "hasDrawable",
+    "parentIndexPathForIndexPaths:",
+    NULL,
+    "_hideToolbarWithAnimation:",
+    "convolutionAddROI:destRect:userInfo:",
+    "_setURL:",
+    "_propertyDescriptionsByKey",
+    "appendPasswordUI:",
+    "cgImageSourceRef:",
+    "cellsCopyForTasks",
+    "decomposedStringWithCompatibilityMapping",
+    "resetTransforms",
+    "addKeysToBeUpdated:",
+    "setTrackingMode:",
+    "addTemporaryAttributes:forCharacterRange:",
+    "policiesDisclosed",
+    "accessibilitySetOverrideValue:forAttribute:",
+    "initWithUser:password:persistence:",
+    "_numberOfGlyphs",
+    "writeFontTable",
+    "_reconcilePageFormatAttributes",
+    "_displayChanged",
+    "_wantsMinimalArchival",
+    "numberOfGroupsInImageBrowser:",
+    "_addExtension:",
+    NULL,
+    "indexHandler",
+    "_changingSelectionWithKeyboard",
+    "_isLastSelected",
+    "_executeScript:",
+    NULL,
+    "pathForResource:ofType:",
+    "deleteToMark:",
+    "unhide:",
+    "alternateIconsForAnimationFilenames",
+    "decimalNumberByMultiplyingByPowerOf10:",
+    "_drawerWindow",
+    "_changeQNameURI:toURI:forPrefix:",
+    "_setEnabledFileTypes:",
+    "nicestMipmapItemForSize:forGLRendering:cacheIt:",
+    "hourOfDay",
+    "_adjustControls:andSetColor:",
+    "initTitleCell:styleMask:",
+    NULL,
+    "selectedRange",
+    "abdSyncProgress:",
+    "analyzeReconfiguredWindow:",
+    NULL,
+    "isAsynchronous",
+    "save",
+    "_presentablePluralName",
+    "annotationControl",
+    "_blockLevelElementForNode:",
+    NULL,
+    "setIMEnglishName:",
+    "resolveDecompressionSessionOptionsAndUseDefaultPixelBufferAttributes:",
+    NULL,
+    "zoomStateCached",
+    "_addTrustedAttribute:atIndex:",
+    "horizontalEdgePadding",
+    "_findParentWithLevel:beginingAtItem:childEncountered:",
+    "setAutoresizesOutlineColumn:",
+    "initWithCell:atIndex:inFlowView:parent:",
+    "textPasteboardTypes",
+    "dictionaryWithObjectsAndKeys:",
+    "speedRange",
+    NULL,
+    NULL,
+    "updateTabs",
+    "_autovalidateVisibleToolbarItems",
+    "rightTabMarkerWithRulerView:location:",
+    "_rectOfDiscreteBrickAtIndex:withDrawingRect:",
+    "wantsToDrawLabelInPalette",
+    "isEqualToString:",
+    "_initialViewToSelectFromDirection:",
+    "setPrintInfo:",
+    "miniwindowTitle",
+    NULL,
+    "tableView:didClickTableColumn:",
+    NULL,
+    NULL,
+    "setColumnTitle:forIdentifier:",
+    "_retainedAllMigratedObjectsInStore:toStore:",
+    "characterSetWithRange:",
+    "addPortsToRunLoop:",
+    "_updateXMLNode:fromObject:",
+    "cameraCallbackCreateNotifier:",
+    "doRemoveSubscription:",
+    "addressBookDirectory",
+    "_shouldPropagateWindowLevelToInputMethods",
+    "getClassesFromResourceLocator:",
+    "saveValueInUndo:forProperty:",
+    "getWhite:alpha:",
+    "importObject:",
+    "typesetterBehavior",
+    "_showDrawRect:",
+    "_copyAttributesTo:",
+    NULL,
+    "notANumber",
+    "_initWithDeclaration:cachedNamesByAlias:",
+    "setFullMetadata:",
+    "initWithTypesetter:",
+    "_setIPAddress:",
+    "clearField:",
+    "_calcNumVisibleColumnsAndColumnSize",
+    "initWithStructure:",
+    "_acceptOperator:flags:",
+    "_setFloat:ifNoAttributeForKey:",
+    "_concludeReloadChildrenForNode:",
+    "statusForPerson:",
+    NULL,
+    "prompt",
+    "predicateByAlsoMatchingNilValueForLeftExpression:modifier:",
+    "kbProductString",
+    "_makeRememberedOrNewEditingSubviewBecomeFirstResponder",
+    "abStringByRemovingPunctuation",
+    "openHelpAnchor:inBook:",
+    "_horizontalScroller",
+    "animatable",
+    "setContextMenuRepresentation:",
+    "setCacheManager:",
+    "initWithUnsignedInt:",
+    "executeCountRequest:withContext:",
+    "_initWithBitmapData:bytesPerRow:size:format:params:",
+    "_showsInvisibleCharacters",
+    "_layoutLineFragmentStartingWithGlyphAtIndex:characterIndex:atPoint:renderingContext:",
+    "setKeys:triggerChangeNotificationsForDependentKey:",
+    "init:",
+    "setUsername:",
+    NULL,
+    "_uploadData:toPath:withProps:andHeaders:",
+    "setResourceData:",
+    "serializeListItemIn:at:",
+    NULL,
+    "setPrimaryKeyGeneration:",
+    "textShouldEndEditing:",
+    "isInFullScreenMode",
+    "setDataSource:",
+    "initWithOperatorType:modifier:options:",
+    "list",
+    "_showTooltip",
+    "uiController",
+    "setFontPanelFactory:",
+    "isSearchableAttribute:",
+    "URLByDeletingLastComponent",
+    "fileManager:shouldProceedAfterError:removingItemAtPath:",
+    "cellFrameAtRow:column:",
+    "getAttributesAndValuesInNode:fromBuffer:listReference:count:allowBinary:",
+    "_canUnlearnSpellingForRange:",
+    "mouseUpAction",
+    "_removeEventHandlers",
+    "_setShouldRelease:",
+    "_canBecomeDefaultButtonCell",
+    "_threadDying:",
+    "allGroup",
+    "_drawEmptyColumnsForView:inRect:",
+    "createScaledImageByX:Y:",
+    NULL,
+    "paragraphRangeForRange:",
+    "knowsPageRange:",
+    "nextWordFromIndex:forward:",
+    "xmlAttributesWithIdentifier:",
+    "createNewTexturePacker",
+    "_attributesUpdated:",
+    "viewSizeForPage:",
+    "cellAtPoint:",
+    "_clearChangedThisTransaction:",
+    "_restoreSharedPreviewViewForURL:",
+    "_selectionIndexPathsInBrowser:",
+    "beginDrawingInView:inRect:",
+    "_computeTravelTimeForInsertionOfItemViewer:",
+    "_nicestDraw",
+    "initWithQueryString:searchScopes:title:",
+    "copyResolutionData:into:withRatio:",
+    "resizeWithOldSuperlayerSize:",
+    "_processLibXML2HeadElementNode:",
+    "setEntity:",
+    "generatesCalendarDates",
+    "setImage:startRect:andEndRect:",
+    "setCGRendererEnabled:",
+    NULL,
+    "_focusRingBleedRegion",
+    "beginTransaction",
+    "_windowDidComeBack:",
+    "_addAttachmentForElement:URL:needsParagraph:usePlaceholder:",
+    "blurHalfSizeROI:destRect:",
+    "graphUnitDescriptionWithGraphNode:ofGraph:",
+    "setFullScreen:options:",
+    "irisOpened",
+    "_setModal:",
+    NULL,
+    NULL,
+    "formChanged:",
+    "_removeToolTip:stopTimerIfNecessary:",
+    "decrementSampleUseCount",
+    NULL,
+    "initWithParameters:",
+    "_delegate_dataCellForTableColumn:row:",
+    "setPlaysAllFrames:",
+    "repeatDuration",
+    "_itemIdentifierForModule:",
+    "_markAutoCreated:",
+    "_readPersistentTableColumns",
+    "performSelectorOnMainThread:withObject:waitUntilDone:modes:",
+    "selectedTabViewItem",
+    "_propertyRangesByType",
+    "searchTextRectForBounds:",
+    "_setVerticalScrollerHidden:",
+    "sendPort:withAllRights:",
+    "setWindowFrame:",
+    "initWithSpecifier:",
+    "sortedPropertyPortKeys",
+    "updateGroupSelection:",
+    "hasChangesPending",
+    "preparePageLayout:",
+    "removeAllItems",
+    NULL,
+    "_specifiedIndexesOfObjectsInContainer:",
+    "createTimeLineWithTime:value:",
+    "version",
+    "_createPersonRecord:",
+    "updateMovieBackgroundColor",
+    NULL,
+    "tokenSetForLength:",
+    "definitionForProperty:",
+    "_setUnprocessedDeletion:",
+    "setTreatsFilePackagesAsDirectories:",
+    "pasteAsRichText:",
+    "_web_URLWithComponents:",
+    "fontDescriptorWithSymbolicTraits:",
+    "_presentableNames",
+    "event",
+    "didChangeText",
+    "releaseRenderingContext",
+    "documentChanged:",
+    "setAutomaticQuoteSubstitutionEnabled:",
+    NULL,
+    "_addAttachedObject:",
+    "setKeywordColors:",
+    "beginModalSessionForWindow:",
+    "normalizedFontDescriptor",
+    "initWithDataRepresentation:",
+    "abEllipsizeWithFont:withWidth:reverseForRightToLeft:",
+    "execute:atTime:withArguments:",
+    "_memoryCacheTouchNode:",
+    "writeObliqueness:",
+    "drawComboBox:inContext:",
+    "syncTableViewToChoiceAnnotation",
+    "showHelpFile:context:",
+    "modDateQuery",
+    NULL,
+    "_referenceData64",
+    "_missingColumnsForRowRange:blockIndex:text:",
+    "_checkForTerminateAfterLastWindowClosed:",
+    "addBackgroundImage:rect:",
+    "_detachFromParentWindow",
+    "_isUtility",
+    "isVectorial",
+    "_fillsClipViewWidth",
+    "isManyToMany",
+    "initWithAction:",
+    "getObjects:",
+    "handleMouseEvent:",
+    "loadItemIndex",
+    "_wantsMenuIndicatorForSegment:",
+    "_setSuperview:",
+    "documentDidBeginDocumentFind:",
+    NULL,
+    "stepTowardsDestinationAtleastAsFarAs:",
+    "_setEditingTextView:",
+    "expectEndOfInput",
+    "initWithTextBlock:charRange:glyphRange:layoutRect:boundsRect:containerWidth:allowMargins:collapseBorders:allowPadding:",
+    "headerTextColor",
+    "accessibilityIndexOfChild:",
+    "_enterLibXML2ElementNode:tag:",
+    "previewThumbnailImage",
+    "updateControlsPanelWithWidth:animate:keepCentered:",
+    "_pendingActCount",
+    "_CGSgetWindowFrame:",
+    "_endRunMethod",
+    NULL,
+    NULL,
+    "command",
+    "numberWithShort:",
+    "showPlayerControls",
+    "_skipValidation",
+    "fadeWindow:fromAlpha:toAlpha:duration:delegate:",
+    "_endTableRow:",
+    "_refreshIsInUseByAnotherApplicationFromCallback",
+    NULL,
+    "_NSNavShortVersionCompare:",
+    "becomeFirstResponderDelegate",
+    NULL,
+    "isLeafCertificate",
+    "_uniqueizeIndexSet:",
+    NULL,
+    "rectOfCell:",
+    "_rowFromTemplate:withRowType:",
+    "previewPanelNavigationResponder:",
+    "memberOfInputTopLine:",
+    NULL,
+    "_maxXTitlebarWidgetInset:",
+    "_noteInstantiationFromWindowTemplate",
+    "initWithInitialSearchIndex:totalIndexes:forView:",
+    "setLineFragmentRect:forGlyphRange:usedRect:baselineOffset:",
+    "draggingToSelf",
+    "setObject:forCacheKey:",
+    "imageWithPasteboard:",
+    "heightForWidth:",
+    "useHUDStyle",
+    "extract2ROI:destRect:",
+    "controller:didChangeToFilterPredicate:",
+    "cancelInput:conversation:",
+    "setImageScalingX:",
+    "_getPathFromGraph:toNode:withBuffer:",
+    "mutableSetValueForKey:",
+    "_disableTrackingRect:",
+    "valueLists",
+    "initWithRenderer:userData:renderSize:renderContext:options:",
+    "_newTabForElement:",
+    "separatorItem",
+    "_scrollTo:",
+    NULL,
+    "updateLayoutInRange:",
+    NULL,
+    "_appHasVisibleWindowOrPanel",
+    "splitView:constrainMaxCoordinate:ofSubviewAt:",
+    "initWithDir:bufferSize:",
+    "parseURL",
+    "reopen",
+    "_suggestCompletionsForPartialWordRange:inString:language:",
+    "initWithDir:string:",
+    "PDFViewSavePDFToDownloadFolder:",
+    "selectionMode",
+    "_notifyView_DidRemoveItemAtIndex:",
+    "descriptorWithString:",
+    "setIgnoresMultiClick:",
+    "_setControlTextDelegateFromOld:toNew:",
+    "_isPreviewRunning",
+    "setAnimationsMask:",
+    "_resizeTextFieldToFit:",
+    "textView:doubleClickedOnCell:inRect:atIndex:",
+    "originalCropSize",
+    "replaceObjectsInRange:withObjectsFromArray:range:",
+    "cancelDelayedPerformWithTarget:",
+    "getArgument:atIndex:",
+    "firstPage",
+    NULL,
+    "setShowsCertButton:",
+    "isFloating",
+    "reloadThumbnails",
+    NULL,
+    NULL,
+    "_validFrameForFrame:resizedFromEdge:",
+    NULL,
+    "setAlertStyle:",
+    "launch",
+    "performDoubleClick:",
+    "_knownEntityKeyForObject:",
+    "_drawRoundedRect:radius:lineWidth:drawingMode:",
+    "_verticalResizeCursor",
+    "_acceptsFirstResponderInItem:",
+    "copyCGLContextForPixelFormat:",
+    "makeCharacterSetCompact",
+    "removeAllDrawersImmediately",
+    "seekToEndOfFile",
+    "_setParentWindow:",
+    "outlineView:draggingExited:",
+    "_setShouldInvalidateShadow:",
+    "_appendNewItemWithItemIdentifier:notifyDelegate:notifyView:notifyFamilyAndUpdateDefaults:",
+    "_isWhite",
+    "removeFrameUsingName:",
+    "_sortedEdges",
+    "saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:",
+    "_flattenMipmap:throughCopy:forCell:",
+    "removeProperties:",
+    "_initWithColorSpace:callbacks:data:",
+    "_shouldRegisterForEditingNotifications",
+    "isDaylightSavingTime",
+    "strokeRect:",
+    "_showToolTip:",
+    "stringByAppendingPathComponent:",
+    "cellBaselineOffset",
+    "_textFieldCellSize",
+    "setShowsAddToiPhotoButton:",
+    "scopeLocations",
+    "setUsername:andPassword:",
+    "ISS__ay_prepareForInterThreadMessages",
+    "levelsOfDetailBias",
+    "runModalForWindow:relativeToWindow:",
+    "runModalForDirectory:file:",
+    "_appDidBecomeActive:",
+    "_shouldHideAddButtonForSlice:",
+    "setMatrixClass:",
+    "outlineColumnGroupForRow:column:tableView:",
+    "_getRetainedLastFocusRingView:bleedRegion:",
+    "arrowPosition",
+    "setImageProxy:",
+    "endRelationshipCreationForEntityMapping:manager:error:",
+    "entityMappingsByName",
+    "getUid",
+    "coerceColor:toArray:",
+    "setWeakEntropyRange:",
+    "goToFirstPage:",
+    "_showControlsPanel",
+    "interiorBackgroundStyle",
+    "sizeForNode:",
+    "_openStrikeMenu:",
+    "graphicsContextWithGraphicsPort:flipped:",
+    "nameForInputPort:",
+    "_applicationDidResignActive",
+    "_fullDescription:",
+    "_syncAllExpandedNodes",
+    "_defaultValidation:error:",
+    "updateTrackingRectsForCell:",
+    "_preferInactiveBezelArtInView:",
+    "__performUndo4:",
+    "columnsInRect:",
+    "accessibilityEditedAttribute",
+    "updateMarkers",
+    NULL,
+    "nodeActorForView:",
+    NULL,
+    NULL,
+    "_toolTipForColorPicker:",
+    NULL,
+    "cacheFaultingStatement:forRelationship:",
+    "_shouldComputeRevealovers",
+    "_createTrackingArea",
+    "_abCompareContainsSubString:options:",
+    "scrollTo:",
+    "_cocoaErrorString:",
+    "comparison",
+    "deauthorize",
+    "visualBackgroundColor",
+    "fileSystemFileNumber",
+    "_toolbarIsHidden",
+    "detailsDisclosed",
+    "nicestRenderingExpendStep",
+    "canonicalRequestForRequest:",
+    "mediaBrowserNode",
+    "shouldHideMeCard",
+    "beginUpdateInsertionAnimationAtIndex:throwAwayCacheWhenDone:",
+    "_noteToolbarModeChangedAndUpdateItemViewers:",
+    "_caConfigFileFullPathName",
+    "_timestamp",
+    "governingEntityForKeypathExpression:",
+    "setRelinquishFunction:",
+    "clearSelection",
+    "startSpecifier",
+    "imageScalingY",
+    "_copyImageToPasteboard",
+    "setAutodisplay:",
+    "_insertNode:byEntityName:",
+    "isEditorKey",
+    "selectedColumn",
+    "_zoomToFitAll",
+    "setHidden:",
+    "fieldEditorTextDidChange:",
+    "_startChanging",
+    "newSeparatorItem",
+    "_accessibilitySplitterRects",
+    NULL,
+    "timerFired:",
+    "_matrix",
+    "removeElementView:",
+    "_needsOutline",
+    "_locationOfColumn:",
+    "removeReorderedItemsFromDatasource:",
+    "loadContent",
+    "setDividerMode:",
+    "encodeDouble:forKey:",
+    "_batchRetainedObjects:forCount:withIDs:optionalHandler:withInlineStorage:",
+    "minContentSize",
+    "_assignIdentifier",
+    "servicesProvider",
+    NULL,
+    "evaluateString:sourceURL:line:",
+    NULL,
+    "_pinViews:resizeFlagsToLeaveAlone:",
+    "_toolbarSmallLabelFontSize",
+    "pointingHandCursor",
+    "resolveNamespaceForName:",
+    "_setTestedObjectTypeDescription:",
+    "_aspectRatio",
+    "setFieldEditor:",
+    "initWithBitmapDataPlanes:pixelsWide:pixelsHigh:bitsPerSample:samplesPerPixel:hasAlpha:isPlanar:colorSpaceName:bitmapFormat:bytesPerRow:bitsPerPixel:",
+    "transformBezierPath:",
+    "cancelClicked:",
+    "isTransparent",
+    "initWithWindow:",
+    NULL,
+    "textContainerForAttributedString:containerSize:lineFragmentPadding:",
+    "speechSynthesizer:willSpeakPhoneme:",
+    "needsDelegate",
+    "_optionDescriptionsForBinding:",
+    NULL,
+    "contentKind",
+    "maximumRecordedDuration",
+    "registerForPropertyChanges",
+    "_sendOrEnqueueNotification:selector:",
+    "showsCompositionNames",
+    "setCharacterEncoding:",
+    "trackConnection:fromPort:atPoint:",
+    "classDescriptions",
+    "openUserDictionary:",
+    "newTempNotificationWithName:object:userInfo:",
+    "_isKeyWindowIgnoringFocus",
+    "directoryServicesServer:",
+    "defaultInputDeviceWithMediaType:",
+    "insertColumn:",
+    "setConnectionID:",
+    "firstIndex",
+    "_frameOfCell:",
+    "showsAttributeFilter",
+    "makeDocumentForURL:withContentsOfURL:ofType:error:",
+    NULL,
+    "insertedObjects",
+    "_currentTable",
+    "_win32TitleString",
+    NULL,
+    "_autoAdvanceCalendar:",
+    "cameraOffImage",
+    "average:",
+    NULL,
+    "setWaitCursorEnabled:",
+    "_getFSRefForApplicationName:",
+    NULL,
+    NULL,
+    "drawPlaceHolderWithRect:withAlpha:",
+    "imageWillChange",
+    "__doImageDragUsingRowsWithIndexes:event:pasteboard:source:slideBack:",
+    "_rangeForMoveUpFromRange:verticalDistance:desiredDistanceIntoContainer:selectionAffinity:",
+    "__selectionUpdated:",
+    "_fastMipmapItemForSize:forOpenGL:useMinimumQualityThreshold:",
+    "registerForPropertyChangedNotifications",
+    "_realThumbnailSize",
+    "speechSynthesizer:didEncounterErrorAtIndex:ofString:message:",
+    "displayIfNeededInRect:",
+    "insertTab:",
+    NULL,
+    "addToolTipRect:owner:userData:",
+    "invalidateSelection",
+    "performPrimitiveOperationUsingObject:andObject:",
+    "_plugInPath",
+    "renderer",
+    "_validateAndCommitValueInEditor:editingIsEnding:errorUserInterfaceHandled:bindingAdaptor:",
+    NULL,
+    "_addBindVarForConstVal1:",
+    "initWithContentsOfURL:byReference:",
+    "previousFailureCount",
+    "lockOwner",
+    "portWithMachPort:",
+    "handlePortMessage:",
+    "setAlternateColor:",
+    "_setLoadedMetrics:",
+    "forwardPropogateTemplate:withViews:forOriginalTemplate:",
+    "viewWithTag:",
+    "_attributesForElement:",
+    "_ignoreObserving",
+    "_getDocInfoForKey:",
+    NULL,
+    "use",
+    "maximumIntegerDigits",
+    "filterForName:parameters:",
+    "extraArgumentCount",
+    "verticalScroller",
+    "setAutoPlayDelay:",
+    "setTitle:andMessage:",
+    "cachedChildrenForNode:",
+    "_outputVideoFrame:withSampleBuffer:fromConnection:",
+    "zone",
+    "unlock",
+    "netServiceBrowser:didRemoveDomain:moreComing:",
+    "closeSpellDocumentWithTag:",
+    "removeSubrecord:",
+    "exitDisplayOperationForWindow:",
+    "planToComplete:forType:",
+    "_prefixDown",
+    "blurHorizontalPass5ROI:destRect:",
+    NULL,
+    "functionalDisplayMode",
+    "_backgroundDataCancelled",
+    NULL,
+    "_beginTempEditingMode",
+    "fillRect:",
+    "stringVersion",
+    "_document:didPrint:forScriptCommand:",
+    "sharedPreviewViewIsVisible:",
+    "flowLayout:",
+    "_makeCGPathForNode:bounds:inContext:",
+    "userHomeDirectory",
+    "otherMouseUp:",
+    "initWithDataNoCopy:",
+    "_allIdentifiers",
+    "insertItem:",
+    "callCracklib:",
+    "_loadUsingWebKit",
+    "_scriptingCountOfValueForKey:",
+    "newNodeWithIndex:belowIndexPath:firstChild:sibling:",
+    "_syncToChangedToolbar:toolbarItemUserVisibilityPriorityChanged:",
+    "_copyPrivateKeyFromPublicKeyHash:",
+    "createConversationForConnection:",
+    "diffItemsArray:withDataSource:",
+    "_updateEventFromAttributedString:pinRange:replacementRange:",
+    "initToDataReference:error:",
+    "_bindingInfoIndexForBinding:",
+    "insertElement:range:coalesceRuns:",
+    "initInNode:type:name:create:",
+    "browserSingleClick:",
+    "dotMacBaseLocationForDotMacUser:",
+    "setOperationGroup:",
+    NULL,
+    "_webArchiveClass",
+    "windowDidBecomeVisible:",
+    "findGroup:",
+    "toolTipNoLabel",
+    "sourceType",
+    "_runLoop:addPort:forMode:",
+    "addImageFromPasteboard:",
+    "_checkCardOnly",
+    NULL,
+    "childrenCount",
+    "handleChannel:",
+    "increments",
+    "_drawingRectForPart:",
+    "writeToURL:atomically:encoding:error:",
+    "periodicFlushThreadState",
+    "IKCreateCGImageFromPlanarData",
+    "_primitiveInvalidateDisplayForGlyphRange:",
+    "setShouldCloseDocument:",
+    "rangeOfTextBlock:atIndex:",
+    "_setOrganizationUnit:",
+    "foreignKeyColumnDefinitions",
+    "allowsOtherFileTypes",
+    "addStringValueToDictionaryRef:",
+    "_createSmartFolderTitleIfRequired",
+    "clipForDrawingRow:column:",
+    "groupsController:outlineView:setObjectValue:forTableColumn:byItem:",
+    "_setObjects:",
+    "imageBufferConverterClasses",
+    "setDatabaseImpl:andAddressBook:",
+    "canDrawInCGLContext:pixelFormat:forLayerTime:displayTime:",
+    "_performLayoutIfNeeded",
+    "setSet:",
+    NULL,
+    "replaceElementAtIndex:withElement:",
+    "filestreamPosition",
+    "crayonAtIndex:",
+    "_potentialMinSize",
+    "resourceExistsAtPath:",
+    "_accessibilityTextViewCompletionWindow",
+    "windowDidExpose:",
+    "credits",
+    "_delayedShowNode:",
+    "zoomValueDidChange",
+    "initWithMainResource:subresources:subframeArchives:",
+    "_configureBottomControls",
+    "outlineView:labelShouldDisplayEnabledAtRow:",
+    "nts_IsModified",
+    NULL,
+    "_wantsToDestroyRealWindow",
+    "_web_setBool:forKey:",
+    "accessibilityGrowAreaAttribute",
+    "initWithSession:sourceURI:destinationURI:sourceToken:destinationToken:",
+    "rangeOfCharacterFromSet:",
+    NULL,
+    "ab_stringByAddingPercentEscapesIfNecessary",
+    "_menuItemView",
+    "makeNewConnection:sender:",
+    "setFocusRingColor:",
+    "_refreshDevicesWithIOType:",
+    "_methodNameForCommand:",
+    NULL,
+    "_moveUpWithEvent:",
+    "selectCountWithFetchRequest:",
+    "recacheAllColors:",
+    "runToolbarCustomizationPalette:",
+    "_loadInitialRows",
+    "inShowcaseMode",
+    NULL,
+    "movieControllerObjectToken",
+    "__windowKey:",
+    "modifier",
+    "newInsertStatementWithCorrelation:",
+    "isLeaf",
+    NULL,
+    "canGoToNextPage",
+    NULL,
+    "endLineStyle",
+    "setAllowEdit:",
+    "_finalize_QCThreadPatch",
+    "_useErrorPresenter:",
+    "createTextureBufferForManager:withFormat:target:transformation:bounds:colorSpace:options:",
+    "createJoinIntermediatesForKeypath:startEntity:startAlias:forScope:inFetchIntermediate:inContext:",
+    "autoScale:",
+    "_setCurrentBorderEdge:isTable:",
+    "fontPanelDidChooseFace:",
+    "displayNameSort:",
+    "_makeRootNode",
+    "defaultValueFontAttribute",
+    "_initWithDataOfUnknownEncoding:",
+    "accessibilitySelectedTextRangesAttribute",
+    "era",
+    "setValidInputKeys:",
+    "updateAttachmentsFromPath:",
+    "_standardMarkerAttributesForAttributes:",
+    "setCountdownDelegate:",
+    "setIcon:forFile:options:",
+    "_configureAccessoryView",
+    "abEncodeBase64DataBreakLines:allowSlash:padChar:",
+    "kbURLString",
+    "isObjectTableColumnDataCell:",
+    "displayPriority",
+    NULL,
+    "valueForDimension:",
+    "_scrollingMenusAreEnabled",
+    NULL,
+    "hasVolatileCache",
+    "_isRunningAppModal",
+    "setMasterObjectRelationship:",
+    "drawBevel:inFrame:topCornerRounded:bottomCornerRounded:isHUD:isDarkWindow:",
+    "appearanceChanged:",
+    "exportToiPhoto",
+    NULL,
+    NULL,
+    "_clearMouseTrackingForCell:",
+    "setDirty:",
+    "isPackage",
+    "numberOfVisibleColumns",
+    "top",
+    "imageWithImageProvider:size::format:colorSpace:options:",
+    "_faultHandler",
+    "showInspectorWindow",
+    "willAccessChildNodes",
+    "deepestScreen",
+    "menuForSegment:",
+    NULL,
+    "dmCreateRequestWithSession:file:props:URI:",
+    "_hasPBuffer",
+    "setScaleFactor:",
+    "_collectSubentities",
+    "setFetchRequestTemplate:forName:",
+    "initWithOwner:",
+    "_subtractFromNeedsDisplayRegion:",
+    "_customMetrics",
+    "setObjectClass:",
+    "setResourceLoadDelegate:",
+    NULL,
+    "setMaximumAge:",
+    "_setupCertExtensions:numExtens:",
+    "_certDataArray",
+    "initWithContainer:key:mutableSet:mutationMethods:",
+    "setPrevious:",
+    "shadowsCells",
+    NULL,
+    "_documentFromRange:document:documentAttributes:subresources:",
+    NULL,
+    NULL,
+    "nts_SmartGroups",
+    "setMenuIndicatorShown:forSegment:",
+    "handleShadowHilite",
+    "selectedRecords",
+    "timeZoneWithAbbreviation:",
+    "_setParentWindowForSheet:",
+    "initWithSession:method:URI:",
+    "fastestEncoding",
+    "_savePanelWasPresented:withResult:inContext:",
+    "setCloseTarget:",
+    "isSelectedForSegment:",
+    NULL,
+    "_threadContext",
+    "greenComponent",
+    "_lockFocusOnRep:",
+    "_setFallBackInitialFirstResponder:",
+    NULL,
+    "accessibilityIsSelectedTextRangesAttributeSettable",
+    "_connectionWasBroken",
+    "removeList:",
+    "hardwareCapsChangeNotifier",
+    "roundedBezierPathWithRect:radius:",
+    "drawImageOutline",
+    "_verticalSlice",
+    "arguments",
+    "scrollToRect:",
+    "setAnchorLeft",
+    "acceptsFirstMouse:",
+    "setRanges:",
+    NULL,
+    "nodeForKey:",
+    "initWithOpertaionType:outputFileURL:bufferDestination:scheduledTime:",
+    "releaseFadeReservation",
+    NULL,
+    "__deleteKeyFrame:timeLine:context:",
+    NULL,
+    "isFlushDisabled",
+    "draggable",
+    "makeBTAvailable:",
+    NULL,
+    "_clientDelegate",
+    "copyNSImageRepresentation",
+    "_drawTimeLineAtIndex:rect:",
+    "removeOwner:",
+    "_windowDidMove:",
+    "rulerView:willMoveMarker:toLocation:",
+    "_registerAllDrawersForDraggedTypesIfNeeded",
+    "flushCachedChildren",
+    "_argumentDescriptions",
+    "setUsesScreenFonts:",
+    "glyphRangeForBoundingRectWithoutAdditionalLayout:inTextContainer:",
+    "_baselineMode",
+    "validateEditing",
+    NULL,
+    "nonBaseCharacterSet",
+    "addBoundsToDictionaryRef:",
+    "CI_rect",
+    "sharedGlyphGenerator",
+    "parser:foundUnparsedEntityDeclarationWithName:publicID:systemID:notationName:",
+    "heightTracksTextView",
+    "entityNameForPropertyKey:",
+    "_validityPeriod",
+    "authorizationViewShouldDeauthorize:",
+    "_incrementLine:",
+    "_updateTypes:ports:list:direction:",
+    NULL,
+    "stringByTrimmingCharactersInSet:",
+    "_doFinalAnimationStep",
+    "abEntityDescriptionInAddressBook:",
+    "_persistentProperties",
+    "rectForIndex:",
+    "maxDoubleValue",
+    "increment",
+    "isFirstAndKey",
+    "_didInitWithCoder",
+    "fontWithName:size:",
+    "samplerWithImage:keysAndValues:",
+    "setSelectable:",
+    "_writeDocumentPropertiesToString:",
+    "_entity",
+    "_setManagedObjectContext:",
+    NULL,
+    "_liveResizeImageCacheingEnabled",
+    NULL,
+    "_showLineNumbers:",
+    "_runningDocModal",
+    "_canHandleDelete",
+    NULL,
+    "_invokeMultipleSelector:withArguments:onKeyPath:atIndexPath:",
+    "_scrollSelectionToVisible",
+    "_commonInitIvarBlock",
+    "_printSettingsForSetting",
+    "serializeObject:",
+    "spellServer:suggestGuessesForWord:inLanguage:",
+    "_representationTypeCanBePlayed:",
+    "_setRect:",
+    "nextEventMatchingMask:",
+    "setImage:forSegment:",
+    "_titleCellOfColumn:",
+    NULL,
+    "writeToURL:forManager:withOptions:",
+    "setStringValue:forFieldNamed:",
+    "installRatio:intoResolutionData:",
+    "notActiveWindowTitlebarTextColor",
+    "_disableAutosavingAndColumnResizingNotificationsAndMark:",
+    "frameAutosaveName",
+    "_useSharedKitWindow:rect:",
+    NULL,
+    "setHostingWindow:",
+    "_tableBinderForTableViewSupportsSorting:",
+    "_receiverThread:",
+    "allowsLayoutAnimations",
+    "groupingSize",
+    NULL,
+    "statementClass",
+    "defaultBaselineOffsetForFont:",
+    "_decodeArrayOfObjectsForKey:",
+    "setTabStops:",
+    "notifyWithName:infos:",
+    "menuStateColumnChanged",
+    NULL,
+    "makeCharacterSetFast",
+    "verifyInvitation:invitationDictionary:trustRefOnErr:signerIdentity:",
+    "setPoolCountHighWaterMark:",
+    "_textFieldWithStepperCellSize",
+    "appendSuiteDeclarationsToAETEData:",
+    "connection",
+    "pluginClassForObject:andBinderClass:requiredPluginProtocol:",
+    "timeMode",
+    "_startPulse",
+    "imageWithCGLayer:",
+    NULL,
+    "distantPast",
+    "object:shouldUnbind:",
+    "performMnemonic:",
+    "maxImageSize",
+    "shouldAnalyzeGRL:",
+    "setSelectedItemIdentifier:",
+    "_doLayoutTabs:",
+    "copyPath:toPath:handler:",
+    NULL,
+    "shouldBeTreatedAsInkEvent:",
+    NULL,
+    "sendEmailToGroup:",
+    "markEnd",
+    "_titleTextAttributesForNode:",
+    "textViewDidChangeTypingAttributes:",
+    "initRelockWithSession:path:lockToken:",
+    "isWaitCursorEnabled",
+    "findFontLike:traits:forCharacters:length:inLanguage:checkCoveredCache:",
+    "canBecomeMainWindow",
+    "removeObserver:",
+    NULL,
+    NULL,
+    "_isToManyCountKeyPathExpression:",
+    "windowController",
+    "_popUpContextMenu:withEvent:forView:",
+    "createRandomKey:",
+    "_deleteRequestPostHandler:",
+    "descriptorWithDescriptorType:data:",
+    "pixelFormatBGRA8",
+    "mouseUpDelegate:",
+    "_isCompany",
+    NULL,
+    NULL,
+    "wrappedDirection",
+    "initWithRole:subrole:parent:",
+    "processNotation:",
+    "setIndexIntoTemplate:",
+    "rawOptions",
+    "setCertData:",
+    "calendarDate",
+    "RTFFromRange:",
+    "addExpandedNode:",
+    "drawNewParagraphIcon:inContext:",
+    "nts_Info",
+    "globalFrameDidChange:",
+    "timeZoneWithName:",
+    "initWithDescription:kernelFile:filterBundle:",
+    "_postDidScrollNotification",
+    "_tempUnhideHODWindow",
+    "setDockMenu:",
+    "_canShowEffects",
+    "_isDrawingToHeartBeatWindow",
+    "__isSystemFont",
+    "debugDescription",
+    "samplerWithImage:",
+    "emPath",
+    "initWithTarget:protocol:",
+    "resumeNotifications",
+    "imageByApplyingTransform:",
+    "_commitTransaction:",
+    "_closeListsForParagraphStyle:atIndex:inString:",
+    "imageConverter:bpc:renderingIntent:",
+    "allConnections",
+    "setAttributeDescriptor:forKeyword:",
+    NULL,
+    "importPumaLDAPServers",
+    "setIndexReferenceModelObjectArray:clearAllModelObjectObserving:",
+    NULL,
+    "_reflectSelection:",
+    "initWithHTTPResponse:",
+    "_newEntryWithUnavoidableSpecifier:path:url:isSymbolicLink:",
+    "_searchCacheForRowObject:",
+    "initWithTrack:",
+    "editedRange",
+    NULL,
+    "setContentPlacementTag:",
+    "shouldShowSeparatorBetweenControlWithID:andControlWithID:",
+    "_matrixWillResignFirstResponder:",
+    "setNeedsDisplayForItemAtIndex:",
+    "groupsController",
+    "_maxYTitlebarDragHeight",
+    "clearACLsBody",
+    "detachSubmenu",
+    "_finishInitializationWithFrame:andController:",
+    "_nearestCrayonUnderViewPoint:inRow:",
+    "availableFontNamesMatchingFontDescriptor:",
+    NULL,
+    "previewContentFrame",
+    "_validateAttributes:",
+    "applyForTime:presentationObject:modelObject:",
+    "infoForKey:",
+    "_setViewHandlesEvents:",
+    "setupDefaultLayers",
+    "_createMovieController",
+    "zoomPrefetchTaskDelay",
+    "initWithPickerOptions:",
+    "_newCustomizeToolbarItem",
+    "setMarkedTextAttributes:",
+    "_initWithURLFunnel:options:documentAttributes:",
+    "discard",
+    "defaultDecoderVersion",
+    "unbindTextureFromCGLContext:textureUnit:savedState:",
+    "setContinuouslyUpdatesValue:",
+    "_sendRuleAction",
+    "_updateCrayonsFromColorList",
+    "nicestRenderingFinalizeExpendStep:",
+    "_directoriesToSearch",
+    "wavePattern",
+    "_saveTornOffMenus",
+    "openLocalHost",
+    "originalImagePath",
+    "filterUsingPredicate:",
+    NULL,
+    "isRealPreview",
+    "_setInputColor1:",
+    "movieClipRegion",
+    "initWithTarget:",
+    "_updateSublayerPositionsForFlippedSuperview",
+    "gotoPreviousSelectionPoint",
+    "addPort:ofType:",
+    NULL,
+    "partCode",
+    "changeWindowFrameSizeByDelta:display:animate:",
+    "menuChangedMessagesEnabled",
+    "lastResortFont",
+    "visibleInputs",
+    NULL,
+    "copyStateFromMovie:",
+    "setProxySource:",
+    "getAudioMixerNode:andUnitElement:forConnection:",
+    "isVirtual",
+    "resetTotalAutoreleasedObjects",
+    "addComponentAction:componentID:",
+    "_setNameFieldContentsFromPosixName:",
+    NULL,
+    NULL,
+    "_takeColorFrom:andSendAction:",
+    "showsCheckerboard",
+    "_resizeKeepingPanelOnScreen:expand:",
+    "canStoreTextWithSize:",
+    "_generateContent",
+    "_loadImage",
+    "undoEdit",
+    "transition",
+    "_cfurlprtotectionspace",
+    "handleConnDeath:",
+    "proxyType",
+    NULL,
+    "_clearUnneccessaryItems:",
+    "updateSpellingPanelWithMisspelledWord:",
+    "generateOrderIntermediateInContext:",
+    "scriptingTextDescriptor",
+    "setDestinationType:",
+    "usageInPoster",
+    "contextHelpForKey:",
+    "valueForKeyFrame:controlType:",
+    "_minXTitlebarBorderThickness",
+    "_updateUI",
+    "findNode:matchType:",
+    "unsuppressSpecificNotificationFromObject:keyPath:",
+    "_setRotatedFromBase:",
+    NULL,
+    NULL,
+    "setIsContinuous:",
+    "_incrementImagePointerToCGImageRefCache",
+    "loadingProgressValue",
+    "setNilValueForKey:",
+    "mapROI:forRect:",
+    "initWithBufferSize:",
+    "outline:",
+    "_autoreleaseDuringLiveResize",
+    "setAllowedTypes:",
+    "_bringUpTrustSheetForNextCertificate",
+    "unarchiver:didDecodeObject:",
+    NULL,
+    "_propagateDeletesUsingTable:",
+    "_createSubstringWithRange:",
+    "doneTrackingMenu:",
+    "sqlString",
+    "_isCaptured",
+    "_getBackgroundRed:green:blue:alpha:",
+    NULL,
+    "computeRedGreenBlueROI:destRect:",
+    "isVolume",
+    NULL,
+    "replaceObject:withObject:",
+    "stringMarkingUpcaseTransitionsWithDelimiter2:",
+    "_requiresCacheWithAlpha:",
+    "_getClientDelegate",
+    "setCollectionBehavior:",
+    "scheduleEndOfSearch",
+    "_drawerVelocity",
+    "_processReferenceQueue:",
+    "sharedWindowID",
+    "moveParagraphForwardAndModifySelection:",
+    "_effectiveMessageForMessage:",
+    "setLevelsOfUndo:",
+    "exceptionWithName:code:reason:userInfo:",
+    "setIndependentConversationQueueing:",
+    "managedObjectModel",
+    "selectedRowInColumn:",
+    "setFileSize:",
+    "executeAppleEvent:error:",
+    "setURL:forPersistentStore:",
+    "timestamp",
+    "immutableCopyWithZone:",
+    "_replaceObject:",
+    "_trackMenuSelectionInMatrix:",
+    "reclaimPreviewView:forURL:itemIndex:",
+    "zAccel",
+    "subscriptRange:",
+    "singleLineTypesetter",
+    "_transactionStarted",
+    "_postItemWillCollapseNotification:",
+    "_removeAndDecrementBy:startingAtIndex:",
+    "editableState",
+    "imageWithName:",
+    "_deallocCursorRects",
+    "_startLoadingURL:timeoutDate:",
+    "nextCounter",
+    "duration",
+    "parser:didEndElement:namespaceURI:qualifiedName:",
+    "_setModifier:",
+    "surfaceID",
+    "setSubentityColumn:",
+    "setHasVerticalScroller:",
+    "_canDragNode:",
+    "integerValue",
+    "_conformingTypes",
+    "setMark:",
+    "_validDestinationForDragsWeInitiate",
+    "availableProfiles",
+    "certificate:isEqualTo:",
+    "_userSelectableRowIndexesForProposedSelection:",
+    NULL,
+    "expressionForKeyPath:",
+    "calendar",
+    "destinationPatch",
+    "setTextProc:",
+    NULL,
+    "forward::",
+    "_windowRefCreatedForCarbonControl",
+    "isSynchronized",
+    "_evaluateToBeginningOrEndOfContainer:",
+    "bilateralAddROI:destRect:userInfo:",
+    "_autoscrollForDraggingInfo:timeDelta:",
+    "initWithFigSampleBuffer:",
+    "_setShowOpaqueGrowBoxForOwner:",
+    "accessibilityIsTopLevelUIElementAttributeSettable",
+    "setSupportsSetAttributeValues:",
+    "_documentPreviewDidLoad:",
+    "setAccumulatorFormat:",
+    "_didSetFocusForCell:withKeyboardFocusClipView:",
+    "keyBindingManagerForClient:",
+    "_updateSelectionIndexes:",
+    "setFileListMode:",
+    "writeBOSString:length:",
+    "startProgress",
+    "setCellsHaveTitle:",
+    "orderManager",
+    "setMovieContentView:",
+    "_setIconRef:",
+    "highlightColor",
+    "_recentDocumentRecordsKeyForUserInterfaceItem:",
+    "addPatch:",
+    "_setPostsFocusChangedNotifications:",
+    "_stopControlsFade",
+    "initWithLeftExpression:rightExpression:customSelector:",
+    "_abCompareNotWithinIntervalFromToday:",
+    "addSelectionLayer:",
+    "redrawTimerNotification:",
+    "setSaveMode:",
+    "clampedFrame",
+    "addOpenToDictionaryRef:",
+    "openingEffect",
+    "cacheNodeWithUID:withResolution:",
+    "_dragCanBeginFromSomeMouseMotion",
+    "fileOwnerAccountNumber",
+    "startTimer:userInfo:",
+    "setFontName:",
+    "_keyViewFollowingPickerViews",
+    "addTimer:forMode:",
+    "gotString",
+    "_window",
+    "defaultCollator",
+    "_doScroller:hitPart:multiplier:",
+    "initWithEntity:",
+    "_configureObservingWithOption:",
+    "coerceValue:toClass:",
+    "deactivateIndexSheetWithAnimation:",
+    "updateNotifications",
+    "zoomImageToActualSize:",
+    "initAtPoint:withSize:callbackInfo:",
+    "_allowAnimated_addSubview:",
+    "iconView:validateDrop:proposedIndex:",
+    "addNamespace:",
+    "scriptErrorExpectedTypeDescriptor",
+    "_showOpaqueGrowBox",
+    "rotationForEvent:",
+    "_releaseOpenGLContext",
+    NULL,
+    "intersectWithRect:",
+    "setKVOContent:",
+    "startLiveSession",
+    "setInterfaceStyle:",
+    "_didNSOpenOrPrint",
+    NULL,
+    "autoBackupEnabled",
+    "commonAncestorContainer",
+    "generalSizeOfAChar",
+    "_setDataEnciphermentUsage:",
+    "_setColorList:",
+    "captureGraph",
+    "cellBackgroundColorDidChange",
+    "initWithCenterPoint:delegate:",
+    "setImageInterpolation:",
+    "initWithFontRef:size:",
+    "otherMouseDown:",
+    "_freeRepresentation:",
+    "parser:didStartMappingPrefix:toURI:",
+    "_indexOfRangeContainingIndex:",
+    "setName:",
+    "colorFromPasteboard:",
+    "halfSizeReconstructionROI:destRect:",
+    "_destroyShaders:",
+    "_windowOriginOffsetWhenHidingHint",
+    "valueWithRect:",
+    "_paperSizeInPageFormat:",
+    "faultingStatement",
+    "trackMouseForPopupMenuFormRepresentation:forItem:forLabelView:",
+    "sleepUntilDate:",
+    "_typeSelectAttributes",
+    "imageCropView:updateComponentStateWithZoomValue:withZoomControlsEnabled:",
+    "_tooltipStringForCell:column:row:point:trackingRect:",
+    "checkGrammarOfString:startingAt:language:wrap:inSpellDocumentWithTag:details:reconnectOnError:",
+    "middleNameFieldPresent",
+    "setUseCoreUI:",
+    "iPhotoBundleIdentifier",
+    "setControlsController:",
+    "updateWidth:",
+    "canConnectToPort:",
+    "setInputNeutralChromaticityX:",
+    "_rowHeightStorageEndLayoutChange",
+    "mouseEnteredToolTip:inWindow:withEvent:",
+    "_removeAllCellMouseTracking",
+    "maxColumns",
+    "_initWithCGLContext:options:",
+    "standardizedURL",
+    "sharpenReconstructedGreenEdges:radius:intensity:edgeIntensity:edgeThreshold:perceptual:blurred:image:",
+    "highQualityVideo",
+    "outputImage",
+    "refreshSuggestions",
+    "notifyOnSelectionChanged",
+    "relinquishFunction",
+    NULL,
+    "matchesAppleEventCode:",
+    NULL,
+    "_initWithCGLContextObj:",
+    "nts_DeletedUID",
+    "wantsToHandleMouseEvents",
+    "setForceBreaks:",
+    "readSelectionFromPasteboard:",
+    "selectionRed:green:blue:",
+    "removeChildAtIndex:",
+    "suspendExecution",
+    "initOffScreenWithSize:colorSpace:composition:",
+    "_rawData",
+    "initWithNSBitmapImageRep:",
+    "_sideTitlebarWidth",
+    "setAsMipmapOfImage:withSize:antialiased:quality:",
+    "_checkRotatedOrScaledFromBase",
+    NULL,
+    "decimalNumberByDividingBy:withBehavior:",
+    "_removeObjectAtArrangedObjectIndex:objectHandler:",
+    "maximumDecimalNumber",
+    "shouldResolveExternalEntities",
+    "_unhideChildren",
+    "setTextAttributesForNotANumber:",
+    "prepareForImport",
+    "_inputRampParams",
+    NULL,
+    "_addActiveConnection:",
+    "_reshapeContentAndToolbarView:resizeWindow:animate:",
+    "cancelButtonCell",
+    "_readStringIntoRange:fromPasteboard:",
+    "_aeteDataForAllSuites",
+    "cropElement",
+    "_buttonType",
+    "alternatePath",
+    "serializeServers:",
+    "writeBOSArray:count:ofType:",
+    "imageForPreferenceNamed:",
+    "_discloseContentBox",
+    "_setMarkedText:selectedRange:forInputManager:",
+    "editorDidEnd:returnCode:contextInfo:",
+    "allowsReordering",
+    "isNSDictionary__",
+    "unbindAll",
+    "_cellForRow:browser:browserColumn:",
+    "tableName",
+    "URLProtocol:didLoadData:",
+    NULL,
+    "content",
+    "control:didFailToValidatePartialString:errorDescription:",
+    NULL,
+    "isDoubleSided",
+    "setTotalRequestedMemory:ofType:rendererID:",
+    "setNodeNamespace:",
+    "scrollerDidChange:",
+    "setIdlingEnabledForNonQTKitMovies:",
+    NULL,
+    "dictionaryWithDictionary:",
+    "_termWindowIfOwner",
+    "isSingleSearchElement:property:value:comparison:level:",
+    "setFloatingPointFormat:left:right:",
+    "duplicates",
+    NULL,
+    "setNode:",
+    "_setBranchImageEnabled:",
+    "_freeAuthorizationRights:",
+    "object:shouldBind:toObject:withKeyPath:options:",
+    "setScheduledDate:",
+    "doDrawPageContent",
+    "PMSymbol",
+    "archiver:willReplaceObject:withObject:",
+    "unregisterModel:",
+    "_hasMenu",
+    "shapeY",
+    "initWithPointer:",
+    NULL,
+    "setVisibility:forTimeLine:",
+    "getObjects:range:",
+    "AppleUseCoreUIAtIndexes:",
+    "handleKeyEventWhileInOtherUI:",
+    "knobRectFlipped:",
+    NULL,
+    "_setDoublePageScrolling:",
+    "_windowNumber:changedTo:",
+    "setAlternate:",
+    "copyToObject:",
+    "computeOutsideShadow",
+    "searchResultCount",
+    "inlineSlideshowStatus",
+    "convertPoint:fromLayer:",
+    "headerHeight",
+    "_changedPossibleKeys",
+    "updateSelectedItem:forKeyDown:",
+    "centerControls",
+    "_setupTheater",
+    "_setInitialColumnContentSizeOfColumn:",
+    "serializeInt:",
+    "hotspotWithObjectToken:node:",
+    "registerModalWindow:",
+    "_setupToolTipsForView:",
+    NULL,
+    NULL,
+    "_blockRangeForGlyphRange:",
+    NULL,
+    "_toolbarViewClass",
+    "justifyWithFactor:",
+    NULL,
+    "_patternForBinding:",
+    "setRecentPictureAsCurrent:",
+    "_drawBackgroundWithFrame:inView:",
+    "_mainthreadComputePreviewThumbnailFinished:",
+    "_rowHeaderTableColumn",
+    "inputMethodInformation",
+    "valueWithRange:",
+    "_updateButtonsForModeChanged",
+    "movieWithFile:error:",
+    "_saveIconViewImagePosition:",
+    "invalidateFocus:",
+    "setSerializedValue:forStateKey:",
+    "eventRef",
+    "_removeEntity:",
+    "initWithFunc:forImp:selector:",
+    "_enableLogging:",
+    NULL,
+    "fbeQueryNode",
+    "readFromData:ofType:error:",
+    "open",
+    "markRemoteLocationWithServer:",
+    "incrementalLoadFromData:complete:",
+    "_cancelAddMarker:",
+    "getRectsBeingDrawn:count:",
+    NULL,
+    "shouldAbortExecution",
+    "_drawsVerticalGrid",
+    "fontSetChanged",
+    "_constrainSheetAndDisplay:",
+    "sharedPreviewView:willStartSharingWithPreviewPanel:",
+    "_oldPlaceWindow:",
+    "positionInternalViews:",
+    "_setDisplayContents:usingSimpleCommandDefaults:",
+    "_doAnimation",
+    "_segmentIndexForElementIndex:",
+    "tokenFieldCell:shouldUseWritablePasteboardTypes:",
+    "insertGlyph:atGlyphIndex:characterIndex:",
+    "scrollPrefetchTaskDelay",
+    "_paperShadow",
+    "_doOptimizedLayoutStartingAtGlyphIndex:forCharacterRange:inTextContainer:lineLimit:nextGlyphIndex:",
+    "newCellIndex",
+    "cellForRow:tableColumn:",
+    "setHighlightedItemIndex:",
+    "_checkCellCount",
+    "dsDataNode",
+    "performSelectorInBackground:withObject:",
+    "undo",
+    "_createSelectClauseInFetchWithContext:",
+    NULL,
+    "_sendsContentChangeNotifications",
+    "_updateCellsSize",
+    "isAccelerated",
+    "_setIsWhite:",
+    "schedulePriorityRange",
+    "cubeImage",
+    "childCount",
+    "_setCertAuthorityName:",
+    "availableLocaleIdentifiers",
+    "sharedAddressBook",
+    "_retainedBitmapRepresentation",
+    "_scrollToMatchContentView",
+    "setUnquotedStringStartCharacters:lowerCaseLetters:upperCaseLetters:digits:",
+    "getRectsExposedDuringLiveResize:count:",
+    "_replaceFontDescriptor:withDescriptor:inCollection:",
+    "_newConflictDetectionRecord",
+    NULL,
+    "textView:shouldChangeTypingAttributes:toAttributes:",
+    "_populateRowForOp:withObject:",
+    NULL,
+    "_web_stringByReplacingValidPercentEscapes_nowarn",
+    "_analyzeContentBindingInSyncWithBinding:",
+    NULL,
+    "setEmail:",
+    "_handleDocumentFileChanges:",
+    "_doLayoutWithFullContainerStartingAtGlyphIndex:nextGlyphIndex:",
+    "noImportableItemsSheetEnded",
+    "scheduleUpdate",
+    "setCIContext:",
+    "__oldnf_addThousandSeparators:withBuffer:",
+    "_userExtendSelectionWithRow:",
+    NULL,
+    "_clearAnyValidResponderOverride",
+    "_web_HTTPStyleLanguageCodeWithoutRegion",
+    "_allowAnimated_setFrameRotation:",
+    "nts_InitAddressBookWithDatabaseDirectory:",
+    "serializeToData",
+    "drawLabel:inRect:",
+    "createTextureBufferFromImageBuffer:target:sourceBounds:options:",
+    "scrollPrefetchTaskProgress",
+    "setIndicatorImage:inTableColumn:",
+    "tooltipExtensionView",
+    NULL,
+    "_issuePropPatchAtPath:updatingProps:inNameSpace:",
+    "setEntityMappings:",
+    "_person",
+    NULL,
+    "cellForComposition:",
+    NULL,
+    "_setNeedsRedrawBeforeFirstLiveResizeCache:",
+    "traitsOfFont:",
+    "retainedObjectIDsForRelationship:forObjectID:",
+    "setScalingFactorX:factorY:",
+    "cameraButton",
+    "replaceCharactersInRange:withRTF:",
+    "drawTextContainer:inRect:onView:pinToTop:",
+    "gridIndexesToClientIndexes:",
+    "objectMechanismsRequired",
+    NULL,
+    "currentButtonState",
+    "shouldCopyItemAtPath:toPath:",
+    "_setCurrentNode:",
+    "_userKeyEquivalentForTitle:",
+    "imageWillChange:",
+    "getStringValue",
+    "_replicatePath:atPath:operation:fileMap:handler:",
+    "isValidGlyphIndex:",
+    "initWithReceivePort:sendPort:",
+    "getPicture",
+    "advanceToTime:",
+    "setIdentity",
+    "_resetExecution",
+    "setContentBorderThickness:forEdge:",
+    "initRemoteWithOptions:",
+    "outlineView:willDisplayOutlineCell:forTableColumn:row:",
+    "_transferWindowOwnership",
+    "openDocumentWithContentsOfURL:display:error:",
+    "CA_decodeObjectForKey:",
+    "_stringForDatePickerElement:usingDateFormat:",
+    NULL,
+    "setFlipsIfNeeded:",
+    "_setHoveredCell:",
+    "generateTableName:",
+    "_web_suggestedFilenameWithMIMEType:",
+    "operationColor",
+    NULL,
+    "_validateCollections:",
+    "setPreferences:",
+    "bestMipmapForSize:",
+    "_constrainPoint:withEvent:",
+    NULL,
+    "sharedFontOptions",
+    "_subtreeDescriptionWithDepth:",
+    "attemptForHTTPCode:",
+    "addClip",
+    "freeGrabberIfNeeded",
+    "runUntilDate:",
+    "removeServiceProvider:",
+    "_resizeWindow:toFrame:display:",
+    "initWithPasteboard:",
+    "initRelockWithSession:URI:lockToken:duration:",
+    "initWithBytesNoCopy:length:",
+    "visitPredicateOperator:",
+    "drawBevel:inFrame:topCornerRounded:bottomCornerRounded:",
+    NULL,
+    "_clockAndCalendarReturnToHomeMonth:",
+    "accessibilityTextView",
+    "incObservationCount",
+    "abURLWithScheme:",
+    NULL,
+    "removeOldBackups:",
+    "setROISelector:",
+    "greenColor",
+    "_itemType",
+    "_encipherOnlyUsage",
+    "__oldnf_surroundValueInString:withLength:andBuffer:",
+    "_startWatchingWindowKeyness",
+    "setAsReferenceOf:",
+    "_drawCellAt:col:insideOnly:",
+    NULL,
+    "_toolbarAttributesChanged:",
+    "isDocumentEdited",
+    "setNumberOfColumns:",
+    "_finishSavingToURL:ofType:forSaveOperation:",
+    "setTabView:",
+    "_dispatchNextOperationInQueue",
+    "insertAttributedString:atIndex:",
+    "alternateMagnifying",
+    "imageFromContext:withComposition:fxCenter:qcRenderer:",
+    "freeAllCaches",
+    "tableView",
+    "tokenField:shouldAddObjects:atIndex:",
+    "localEditInAddressBook:",
+    NULL,
+    "imageAtFrameIndex:",
+    NULL,
+    "initWithValues:objectID:",
+    "toggleWritingOperationWithOutputFileURL:bufferDestination:scheduledTime:",
+    "_autorecalculateSizesIfNotSetExplicitly",
+    "setForeignKeys:",
+    "_bezelAndIndicatorAreaWidthForCellFrame:",
+    "_createCertExportFileForCAWithFormat:pathToExportFile:exportedData:",
+    "setDynamicVerticalScroller:",
+    "_setIndex:forPort:",
+    "iconForSpecifier:size:",
+    "recentPictures",
+    "addRangeOfInterest:",
+    "advanceToPeakPoint",
+    "getPropsRequestWithSession:URI:properties:",
+    "replaceElementsInRange:withElement:coalesceRuns:",
+    NULL,
+    NULL,
+    "recordUpdateForObject:",
+    "nameOfSlideshowItemAtIndex:",
+    "_insertionGapForItemViewer:forDraggingSource:",
+    "_crayonMaskImage",
+    "closingDown",
+    "initWithContainerClassID:key:nonmutatingMethods:mutatingMethods:proxyClass:",
+    "startLoading",
+    "_subviews",
+    "commitEditingWithDelegate:didCommitSelector:contextInfo:",
+    "_advanceTime",
+    "criticalValue",
+    NULL,
+    "application:openFile:",
+    "ramManagerDidUnbindMipmapWithUID:withSize:",
+    "accessibilityModalAttribute",
+    "phoneticFirstName",
+    "_deallocExtraData",
+    "_isNullExpression:",
+    "_shouldDrawContentsAtRow:column:withCellFrame:clipRect:",
+    "acceptInputForMode:beforeDate:",
+    "addRegion:",
+    "_primitiveSetNextKeyView:",
+    "rotated",
+    NULL,
+    NULL,
+    NULL,
+    "defaultVoice",
+    "initWithKey:ascending:",
+    "_setPKINITServerAuthUsage:",
+    "isFauxDisabledNode:",
+    "_mouseHit:row:col:",
+    "imageRepWithContentsOfFile:",
+    "loadPlugin",
+    "_hostString",
+    "isCumulative",
+    "_URLWithData:relativeToURL:",
+    "_removeReferencesToCarbonWindowRef",
+    NULL,
+    "_delayedSelectRow",
+    "isMultiline",
+    "selectedIndex",
+    "classForStore:",
+    "allPeople",
+    "validateToolbarItem:",
+    "_performRemoveFileAtPath:",
+    NULL,
+    "_appkitManagesLayer",
+    "databaseOperationForGlobalID:",
+    "_drawTickMarksWithFrame:inView:",
+    "ramCacheUsed",
+    "shouldChangePrintInfo:",
+    "blurHorizontalPass9ROI:destRect:",
+    "canBecomeKeyWindow",
+    "searchCustomSearchDataSources:",
+    "setContentsNoCopy:length:freeWhenDone:isUnicode:",
+    "localizedReferenceDocumentationForFilterName:",
+    "commentColor",
+    "targetKey",
+    NULL,
+    "_dockRestarted",
+    NULL,
+    "beginLoadInBackground",
+    "_updatePopUpWindowFrameFirstTimeInSession:",
+    "drawPopupAnnotationsWithBox:",
+    "splitViewDidResizeSubviews:",
+    "_reloadCellDataAtIndex:",
+    "executeAtTime:",
+    "_creteCachedImageLockIfNeeded",
+    "setScrollXEnabled:",
+    "fileAttributesAtPath:traverseLink:",
+    "mouseDraggedDelegate:",
+    "dump",
+    "_initWithObjectNoExceptions:",
+    "setupEditFieldKeyBindings",
+    NULL,
+    "_setSortDescriptors:",
+    NULL,
+    "_registerDefaultStoreClassesAndTypes",
+    NULL,
+    "_indexForDecrementMove:",
+    "entryType",
+    "addSubview:positioned:relativeTo:",
+    "initWithFlags:rights:environment:",
+    "access",
+    "startOrStopProfiling:",
+    "handlePreviewImageChanged",
+    "stopCapture",
+    "lockButtonClicked:",
+    "_heartBeatThread:",
+    "mutableString",
+    "isTranslated",
+    "initWithFormDictionary:",
+    "_postItemWillExpandNotification:",
+    "_coreAttributesFromRange:whichAttributes:",
+    NULL,
+    "makeCellAtRow:column:",
+    "clickedColumn",
+    "_updateItemsByCompoundTemplates",
+    "_markUsedByCell",
+    "sharedSoftwareImageManager",
+    "_titleRectForTabViewItem:",
+    "_searchForSystemImageNamed:",
+    "_filterObjects:",
+    "computeOutline",
+    "inlinePreview:didUpdateDisplayWithImage:",
+    "bindMipmapItemFromDisk:withNode:withUID:",
+    "ISS_stringByURLQuoting",
+    "prepareAndExecuteSQLStatement:",
+    "cell",
+    "_readHTMLIntoRange:fromPasteboard:",
+    "setIgnoresSSLCertificateErrors:",
+    "setAllContextsOutputTraced:",
+    "_prepareIndirectKeyValueCodingCallWithPartialControllerKey:controller:",
+    "_executeSQLString:",
+    "_needRedrawOnWindowChangedKeyState",
+    "getDataAtPath:",
+    "dataOfType:error:",
+    "appendBezierPathWithOvalInRect:",
+    "ISS_URLWithScheme:host:port:uri:",
+    "panelConvertFont:",
+    "setTransition:",
+    "_setRunAsSheet:",
+    "rasterizationChanged:",
+    "erase",
+    "setDrawsOutsideLineFragment:forGlyphAtIndex:",
+    "targetAndArgumentsAcceptableForPerformAction",
+    "setValue:forKeyFrame:controlType:inTimeLine:",
+    "centerSelectionInVisibleArea:",
+    "_fondID",
+    "setMaximumIntegerDigits:",
+    "flattenedImage:context:",
+    "_updateOptions",
+    "setDiskLabelValues:",
+    "lineBreakByHyphenatingBeforeIndex:withinRange:",
+    "minimizeButton",
+    "_downloadFinished",
+    "timeoutDateFromNow",
+    "rightExpression",
+    "createAccelContext",
+    "isRTL",
+    "allCards",
+    "forcedContentTypeUTI",
+    NULL,
+    "_textColorWithMode:",
+    "setCalendar:",
+    "_gsave",
+    "_shouldAlwaysShowControls",
+    "deviceRGBColorFromArray:",
+    NULL,
+    "localizedInfoDictionary",
+    NULL,
+    "resizeColumnAtIndex:toWidth:",
+    "advanceToProgress:",
+    "setOrientationTag:",
+    "translateTo::",
+    "_keyAgreementUsage",
+    "runPoofAtPoint:withSize:callbackInfo:",
+    "startSubelementIndex",
+    "mutableSubstringFromRange:",
+    "_setupRFC822Names:inCEGeneralNames:",
+    "_performNonAEAwareWorkaroundForSpec:",
+    "decryptWithDelegate:",
+    "_processChangedStoreConfigurationNotification:",
+    NULL,
+    "drawRect:fromDisplayLink:",
+    "_accessibilitySegmentAtIndex:",
+    "textContainerOrigin",
+    "_initWithContentSize:preferredEdge:",
+    "nickNameFieldPresent",
+    "stopAnimation",
+    "drawIndeterminateInteriorWithFrame:inView:",
+    "_isUnmarking",
+    "setFrequency:",
+    "temporaryAttribute:atCharacterIndex:effectiveRange:",
+    "_addingOrAnimatingNewColumn",
+    "_typeIdentifierForName:",
+    "stateUpdated",
+    "_setPropertiesForDelegate:",
+    "_graphUpdated:",
+    "setSidebarState:",
+    "setPrimitiveAddress:",
+    NULL,
+    NULL,
+    "setCanWrite:",
+    "sessionWithScheme:host:port:",
+    "createCGContext",
+    "_operationInfo",
+    "resetMatrices",
+    "accessibilityWindowNumber",
+    "_createNewSliceWithFrame:ruleEditorView:",
+    "maximumRecordedFileSize",
+    "notificationKey",
+    "numberOfDataSourceItems",
+    NULL,
+    "magnificationFilter",
+    "setRegistryClass:",
+    "_clearFindIndicator",
+    "hitTestWithImage:x:y:",
+    "filteredArrayUsingPredicate:",
+    "imageBrowser:willMoveItemAtIndex:to:scaleFactor:",
+    "fillMode",
+    "cancel",
+    "setEncoding:",
+    "accessibilitySelectedColumnsAttribute",
+    "frameImageAtTime:withRepresentations:error:",
+    "certExpirationDateIndex",
+    "systemLocale",
+    "setColorList:",
+    NULL,
+    "_scalesBackgroundVertically",
+    "certificatesDisclosed",
+    "initWithHue:saturation:brightness:alpha:",
+    "_lastNonHiddenColumn",
+    "addMipmapItemToCache:withUID:",
+    "updatePublicUserInfo:privateUserInfo:withRecords:userInfoKey:couldAffectSyncing:couldAffectSharing:privateTablesChanged:modificationDate:ignoreRecordsForKey:",
+    "imageState",
+    "_loadPreviewTimedOutForDocumentPreviewView:",
+    "drawSelectionAroundIconRect:",
+    "updateReorderingPosition",
+    "_certType",
+    "_sizeToFitColumnMenuAction:",
+    "mouseExited:withFrame:inView:",
+    "_unregisterForMovieIdle",
+    "_web_addErrorsWithCodesAndDescriptions:inDomain:",
+    "setBundle:",
+    "boundsRectForContentRect:inRect:textContainer:characterRange:",
+    NULL,
+    "suggestedFilename",
+    "previewPanelUserDidChangeFrame:",
+    "sharedSlideshow",
+    "fixGlyphInfoAttributeInRange:",
+    "numberOfColumns",
+    "addBackButton",
+    "email",
+    "toolbar",
+    "defaultWindingRule",
+    "autoUpdates",
+    "_hashMarkDictionaryForDocView:measurementUnitToBoundsConversionFactor:stepUpCycle:stepDownCycle:minimumHashSpacing:minimumLabelSpacing:",
+    "replaceItem:forExistingKey:",
+    "addRepresentation:",
+    "_relationshipNamesByType:",
+    "_userEmailAddress",
+    "setFrameRotation:",
+    "exportSlideshowItem:toApplication:",
+    "sizeCopyrightView",
+    "_pageScaling",
+    "setupContentView",
+    "infoWithType:size:",
+    "textView:willDisplayToolTip:forCharacterAtIndex:",
+    "colorizeByMappingGray:toColor:blackMapping:whiteMapping:",
+    "_selectRow:subrow:byExtendingSelection:members:",
+    "_dictionaryForKeyValuePairArray:pullExcludedKeysFromDictionary:",
+    "toolTipString",
+    NULL,
+    "tokenAtCursor",
+    "setFloatValue:knobProportion:",
+    "gotoEnd",
+    "searchState",
+    NULL,
+    "scrollRangeToVisible:",
+    "_setTrackingRect:inside:owner:userData:useTrackingNum:install:",
+    "_createItemFromItemIdentifier:",
+    "sendInvocation:internal:",
+    "localDrag",
+    "QTMovie",
+    NULL,
+    "setRawDataFileName:",
+    "notificationWithName:object:userInfo:",
+    "previewView:didChangeDisplayStateForDocumentURL:",
+    "autoresizesSubviews",
+    "parseORG",
+    "_bindNamespaceName:URI:",
+    "drawGroupsBackground",
+    "createAttributesListForApple:",
+    NULL,
+    "generatesDecimalNumbers",
+    "cancelLoadingImageDataForTag:",
+    "_fixNSMachPortLeak",
+    "_lineColor",
+    "_moveObjectInContainer:withKey:atIndex:toContainer:withKey:atIndex:replace:",
+    "PDFViewScrollOpenGutterToWidth:",
+    "initWithGraph:sourcePort:destinationPort:arguments:",
+    "openGLTextureOffset",
+    "setDisabledTextColor:",
+    "imageBrowser:groupAtIndex:",
+    "setCanStartSlideShow:",
+    "cacheDeletionStatement:",
+    "nodeNames",
+    "viewSize",
+    "outlineView:didDragTableColumn:",
+    "_findFirstNonSelectedIndexFrom:to:selectedIndexes:",
+    NULL,
+    "zoomPrefetchTaskProgress",
+    "setImageBrowser:",
+    "_nodesCountInGraph:",
+    "nts_ValueForProperty:row:record:",
+    "_setTrustValues",
+    NULL,
+    "setAllowsIdentitySelection:relayout:",
+    "isSimpleRectangularTextContainer",
+    "_setCorrelationTableName:",
+    NULL,
+    "_isParentGroupOfRecord:",
+    "needFinalDataForKey:",
+    "_allowToolbarToStealEvent:",
+    "_readRulerIntoRanges:fromPasteboard:",
+    "initWithOperand:andKeyPath:",
+    "_writeSelectionToArchiver:fromPoint:",
+    "raise:format:arguments:",
+    NULL,
+    NULL,
+    "layoutForStartingGlyphAtIndex:characterIndex:minPosition:maxPosition:lineFragmentRect:",
+    "maximumLengthOfBytesUsingEncoding:",
+    "updateIndexPtr",
+    "_fastHighlightGlyphRange:withinSelectedGlyphRange:",
+    "_scriptingDescriptorOfEnumeratorType:orReasonWhyNot:",
+    NULL,
+    "_backgroundFileLoadCompleted:",
+    "deviceGrayColorSpace",
+    NULL,
+    "setMetadata:forPersistentStoreWithURL:error:",
+    "contentView",
+    "_delayStartEditing:",
+    "_isRelationship",
+    "halfSizePictureEdges:scale:image:",
+    "setContentSize:",
+    "_createImageBufferFromProvider:withFormat:target:transformation:bounds:colorSpace:options:",
+    "personChanged:",
+    "initWithTextAlignment:location:options:",
+    "didChangeValueForKey:withSetMutation:usingObjects:",
+    "draggingUpdated:",
+    "setROIInfoForKernel:jsROIInfo:",
+    "newComponentByID:",
+    "configureForDisplayMode:andSizeMode:",
+    "_switchToSetting:error:",
+    "rectForLayoutAtPoint:inRect:textContainer:characterRange:",
+    "inspectorNibNameWithIdentifier:",
+    "validateTakeValue:forKeyPath:",
+    "initWithOutput:connection:backgroundQueue:",
+    "_didStart:",
+    "beginUndoGrouping",
+    "initializeParameterDataStructures",
+    "initWithCGImageSource:",
+    "editableStateAtIndex:",
+    "cellBackgroundColor",
+    "_addColumnWithoutChangingVisibleColumn",
+    NULL,
+    "removeFreedView:",
+    "willSetLineFragmentRect:forGlyphRange:usedRect:baselineOffset:",
+    "attributeColumnDefinitions",
+    "invalidate:",
+    "_doPositionDrawerAndSize:parentFrame:",
+    NULL,
+    "isNotEqualTo:",
+    NULL,
+    "shouldPrint",
+    "_nodeRefFromNode:",
+    "imageDidChange",
+    "halfSizePicture:pattern:",
+    "beginMouseOperation",
+    "setLength:",
+    "isDisplayPostingDisabled",
+    "deserializePListKeyIn:",
+    "_newToolTipWindow",
+    "toolTipsFontOfSize:",
+    "_refreshDetailContentInBackground:",
+    NULL,
+    "nts_SubscribedPeople",
+    "setImageScalingY:",
+    "initWithHelpIndex:",
+    "keyValueBindingForKey:typeMask:",
+    "localizedKeys",
+    "delayedShowcaseSelectedResult:",
+    NULL,
+    "secondOfMinute",
+    NULL,
+    "_keySize",
+    "archiverDidFinish:",
+    "style",
+    "_modelObservingTrackerClass",
+    "imageWithJPEGFile:",
+    "saveOptionsChanged:",
+    NULL,
+    "_hasWindowRefCreatedForCarbonControl",
+    "keyForProperty:entityName:entityKey:",
+    "hideShowLastImportGroup:",
+    "transactionID",
+    "filterArray",
+    "_arrayContent",
+    "sortedArrayHint",
+    "plugIn",
+    "__oldnf_containsCharFromSet:",
+    "expressionForEvaluatedObject",
+    "viewBoundsChanged:",
+    "scrollPageUp:",
+    "initWithProtocolFamily:socketType:protocol:address:",
+    "containerIsRangeContainerObject",
+    "permitWithRights:flags:environment:authorizedRights:",
+    "_setAntialiased:",
+    "canUndo",
+    "numberOfComponents",
+    "initWithDelegate:keyToSelectorMap:context:",
+    "_fillBackground:withAlternateColor:",
+    "showGraphEditorInspector:",
+    "_updateOutputDeviceUniqueID",
+    "imageUnfilteredFileTypes",
+    "initWithClient:document:",
+    NULL,
+    "setViewsNeedDisplay:",
+    "_scriptingIntegerDescriptor",
+    "_cellForRow:",
+    "_createTransformedCIImage:transformation:bounds:",
+    NULL,
+    "subentityID",
+    "_reflectDocumentViewBoundsChange",
+    "setAnimations:",
+    "_oldIBCompatDrawTitleWithFrame:inView:",
+    "_loadAllCompositions",
+    "_embossedDisabledForegroundTextColor",
+    "_shouldPostEventNotifications",
+    "_fontDescriptorsForFamily:inCollection:",
+    "textureName",
+    "archiver:didEncodeObject:",
+    "handleAnalyzeNextGRL:",
+    "setStructureValue:",
+    "_characterIndexForMoveRightFromSelectedRanges:",
+    "titleColor",
+    "nts_ClearInstanceCachesForGroup:",
+    "beginModalSessionForWindow:relativeToWindow:",
+    "clearTemporaryCaches",
+    "_setRepresentationListCache:",
+    "createConnectionFromPort:toPort:",
+    "metaDataCacheDirectory",
+    "hasThousandSeparators",
+    "_authLock",
+    "_setEntitysReferenceID:",
+    "preferredFileNameExtensionForType:",
+    "_cocoaErrorString:fromBundle:tableName:",
+    "_createColumn:empty:",
+    "_valueClass",
+    "refusesFirstResponder",
+    "_layoutOrderInsertionIndexForPoint:previousIndex:",
+    "addCropSelectionLayer:",
+    "_isPendingInsertion",
+    "outlineView:dataCellForTableColumn:item:",
+    NULL,
+    "checkPoint:",
+    "accessibilityPerformAction:",
+    "drawBackgroundForGlyphRange:atPoint:",
+    "abCompareBackupInfo:",
+    "_validateEditing:",
+    "editColumn:row:withEvent:select:",
+    "currencyDecimalSeparator",
+    "trackMouse:inNode:bounds:view:",
+    "setTextAttributesForPositiveValues:",
+    "autosavesConfigurationUsingIdentifier",
+    "booleanForKey:inTable:",
+    "previewPanelSelectNextItem:",
+    NULL,
+    "pointerType",
+    "displayStringsForParagraphStyle:",
+    "abandonPreviewView",
+    "getAllCollections",
+    "_setHasLayerBackedOpenGLContext:",
+    "_syncList",
+    NULL,
+    "numberWithBool:",
+    "setIdlingEnabled:",
+    "_observeKeyPathForBindingInfo:registerOrUnregister:",
+    "_tileAndRedisplayAll",
+    "periodicFlushInterval",
+    "setVisualDrawsMovieBoxBackgroundColor:",
+    "_addSubentity:",
+    "webArchiveData",
+    "coerceString:toColor:",
+    "objectWithID:",
+    "performSearch",
+    "ikRootLayer",
+    "_glyphDescription",
+    "_web_mimeTypeFromContentTypeHeader_nowarn",
+    "newCacheNodeForManagedObject:",
+    "_originalImageBoundingBoxSizeIncludingRotation",
+    "addEntriesFromList:",
+    "titleWidth",
+    "selectItemWithIdentifier:",
+    "encodeRect:",
+    "setAttachmentSize:forGlyphRange:",
+    "ruleEditor:layoutOrderForItem:inRow:",
+    NULL,
+    "setTextAttributesForZero:",
+    "_addConnectionsFromObject:toArray:",
+    "currencySymbol",
+    "setRequiredFileType:",
+    "_getSizeFromDock",
+    "allKeys",
+    "_thumbnailLayerAtIndex:",
+    "findRecordsInServer:withNode:withServer:withCounter:",
+    "_updateLayerTreeRenderer",
+    "compositeName",
+    "_connectionWasEstablished",
+    "_setSuppressingKVO:",
+    "isFlushWindowDisabled",
+    "setAfterEntityLookup:",
+    "remoteStoreNameForKeychainRef:",
+    "_checkForSimpleTrackingMode",
+    "imageFlow:cellWasDoubleClickedAtIndex:",
+    NULL,
+    "_placeholderAttributedString",
+    "titleWithSelection:",
+    NULL,
+    "bidiProcessingEnabled",
+    "setPrimitiveCreationDate:",
+    "pageViewHeight:",
+    "_prepareEventGrouping",
+    "_dragDataItemViewer",
+    "removePopupView:",
+    "_loadServicesMenu",
+    "initWithDatabaseAtPath:",
+    "clearCaches",
+    "setInputWhiteParams:",
+    "_processNotificationQueue",
+    "setDisplayedTitle:",
+    "nodeAcceptsFirstResponder:view:",
+    "videoMemorySize",
+    "updateConfigDataIfNeeded",
+    "unarchiveObjectWithFile:",
+    "sharedCallbackRegistry",
+    "certificationPathDisclosed",
+    "setShowsStateBy:",
+    "releaseVolatileImageRep",
+    "convertSizeToBase:",
+    "takeColorFrom:",
+    "evaluate",
+    "rectOfItemAtIndex:",
+    "directoryResultsSubrows",
+    "startClockwork",
+    "_initWithContainerClass:key:propertiesBeingInitialized:",
+    "_enableAutosavingAndColumnResizingNotifications",
+    "_ensureLocalizationDictionaryIsLoaded",
+    NULL,
+    "dictionaryRepresentationOfSmartGroupAtRow:resultsView:",
+    "nodeAttributesWithName:",
+    "canExportToApp:version:newInfo:",
+    "primitiveValueForKey:",
+    "_setIsExpanded:",
+    "_isForeignObjectExpression:givenContext:",
+    "removeFromSuperview",
+    "initWithLevelIndicatorStyle:",
+    "stringByAppendingString:",
+    "removeText:",
+    "setShadowColor:",
+    NULL,
+    "_layerBackedOpenGLContext",
+    "setValueInTemporaryCache:forProperty:",
+    "sum:",
+    "addAuthHeaderToMessage:",
+    "cancelPreviousPerformRequestsWithTarget:selector:object:",
+    "_textDimColor",
+    "_shouldDrawDragged",
+    NULL,
+    NULL,
+    "_setNeedsDisplayInColumn:includeHeader:",
+    "quickTimeMovieController",
+    "setAspectRatio:",
+    "settingsView:renameKey:toKey:",
+    NULL,
+    "isContextHelpModeActive",
+    "_convertPoint:toAncestor:",
+    "pointerToElement:directlyAccessibleElements:",
+    "_willAllowSpace:",
+    "setPatch:",
+    "pushChangeCommand:",
+    "daylightSavingTimeOffset",
+    NULL,
+    "visibleThumbnails",
+    "_setToolbarItem:",
+    "extraLineFragmentRect",
+    "_addEntities:toConfiguration:",
+    "setInteger:forKey:",
+    NULL,
+    "_openLinkFromMenu:",
+    "searchControllerDidScheduleSearch:",
+    "defaultTextColorWhenObjectValueIsUsed:",
+    "componentsJoinedByString:",
+    "request:readResponseBody:",
+    "validateFocusedIndex",
+    NULL,
+    "supportedUploadFormatsForContext:",
+    "parseAccessDescription:index:",
+    "parseTokenEqualTo:mask:",
+    "multiStatusRequestWithSession:method:path:responseClass:",
+    "_initWithImpl:",
+    "ikImageBackgroundLayer",
+    "dockTitleIsGuess",
+    "storeThumbnailDataInfo:withUID:withSize:",
+    "usingDefaultVoice",
+    "_tileIfNeeded",
+    "_appendLog:",
+    "compositionParameterView:shouldDisplayParameterWithKey:attributes:",
+    "windowDidResize:",
+    "configureAsServer",
+    "cacheHint",
+    "_dataWithoutConversionForType:",
+    "orderFront",
+    "popupFrameForAnnotation:gutterBounds:",
+    "responderView",
+    "object:withObservance:didChangeValueForKeyOrKeys:forwardingValues:",
+    "maxWidthOfLocalizedDefaultGroupStrings",
+    "rowAtPoint:",
+    "initWithGroup:members:addressBook:direction:",
+    "_allowsTearOffs",
+    "_compareMultiLabelScalarWithRecordValue:",
+    NULL,
+    "setVertical:",
+    "_delegateRespondsTo_shouldTypeSelectForEvent",
+    "_updateFileNamesForChildren",
+    ".cxx_destruct",
+    "defaultFormatterBehavior",
+    "localizedDescriptionForType:",
+    "tableView:isGroupRow:",
+    "_maybeScrollMenu",
+    "writeShadow:",
+    "addPeopleFromPasteboard:toGroup:",
+    "annotationsDidChange:",
+    "_processHeaders:",
+    "initWithCATransform3D:",
+    "setKeyPath:",
+    "detachColorList:",
+    "_charIndexToBreakLineByWordWrappingAtIndex:lineFragmentWidth:hyphenate:",
+    "cropSize",
+    "setHighlightMode:",
+    NULL,
+    "setSelectionByRect:",
+    NULL,
+    "_overlayRequestPostHandler:",
+    "createPixelBufferFromTextureBuffer:bounds:options:",
+    "stringForKey:",
+    "outlineView:shouldSelectItem:",
+    "initForToolbar:withWidth:",
+    "_handCursor",
+    NULL,
+    "addTypes:",
+    "exposeBinding:",
+    "moveUserSelectionWithEvent:",
+    "enterProximity",
+    "viewDidEndLiveResize",
+    "_windowFileButtonSpacingWidth:",
+    "hotspotsVisible",
+    NULL,
+    "contentAlpha",
+    "setAutoresizes:",
+    NULL,
+    NULL,
+    NULL,
+    "self",
+    "_startRendering:",
+    "dataReferenceWithDataRef:type:",
+    "initWithPageIndex:atPoint:fileURL:",
+    "cellsCount",
+    "disposeGlyphStack",
+    "defaultSubcontainerAttributeKey",
+    "postQueryHasBeenCanceledNotification",
+    "_isMiniaturizable",
+    "labelColor",
+    "maximumSize",
+    "_setFrame:",
+    "objectBeingTested",
+    "initWithOptions:",
+    "beginEditing",
+    "maximumNumberOfColumns",
+    "backgroundLayer",
+    "_setFirstColumnTitle:",
+    "outlineView:willDisplayCell:forTableColumn:item:",
+    "_changeAddressFormat:",
+    "setPatternPhase:",
+    "createCGImageWithRenderingIntent:shouldInterpolate:",
+    "layoutToFitInViewerFrameHeight:",
+    "setRefusesToBeShown:",
+    "setIsRealPreview:",
+    "setImageWithoutInvalidate:",
+    "validateAction:",
+    "_drawTableExteriorFocusRingIfNecessaryInClipRect:",
+    "sendBeforeDate:components:from:reserved:",
+    "_downloadPath:toPath:",
+    "unbind",
+    "turnOffEditMode",
+    "_colorComponentsForIndex:redComponent:greenComponent:blueComponent:",
+    "setProcessName:",
+    "_keyRowOrSelectedRowOfMatrix:inColumn:",
+    "_removeTrackingRectForToolTip:stopTimerIfNecessary:",
+    NULL,
+    "sublayerTransform",
+    "_21vCardRepresentationAsData",
+    "TIFFRepresentationUsingCompression:factor:",
+    "_setToolTipRectsDirty:",
+    "setAutoInstallBlendMode:",
+    NULL,
+    "disabledControlTextColor",
+    "initWithValue:sqlType:attributeDescription:",
+    "regionWithCGSRegion:",
+    "removeObserver:fromObjectsAtIndexes:forKeyPath:",
+    "setCIImage:",
+    "_finishHitTracking:",
+    "contentValueWithEditedMode:contentIndex:",
+    "_mipmapCommonInit",
+    "updateSelectionProcess:",
+    "accessibilityFocusRingBoundsForBounds:",
+    "setData:",
+    "makeQueries:",
+    "advancePastEOLSingle",
+    NULL,
+    "initWithSession:method:path:",
+    "nts_InitDefaultContactManager",
+    "filterPasteboardWithData:ofType:",
+    "createOutputPortWithArguments:forKey:",
+    "editedRow",
+    "closePath",
+    NULL,
+    "setNumberOfTickMarks:",
+    "clippedItems",
+    "_setScriptErrorFromKVCException:",
+    "popupViewExited:",
+    NULL,
+    "_shouldSelectTabViewItem:",
+    "_setSegmentedCellStyle:",
+    "_colorPickerWithIdentifier:",
+    "_accessibilityUnhiddenTableColumns",
+    "setGradientBorderWidth:",
+    NULL,
+    "adjustZoomSliderValue",
+    NULL,
+    "initWithContentsOfURL:ofType:",
+    "_imageNameForPerson",
+    "handleHICocoaViewEvent:callRef:",
+    "_getCharactersAsStringInRange:",
+    "_isActivated",
+    "_resources",
+    "_recursiveGatherAllKeyViewCandidatesInArray:",
+    "setEditButton:",
+    "hasCharacteristic:",
+    "localizedString:",
+    "setActiveColor:",
+    "_errorNumber",
+    "_newConflictRecordForObject:andOriginalRow:",
+    "propertyListFromStringsFileFormat",
+    "_setExtendedKUECodeSigningDevelopment:",
+    "_markWidth",
+    "_setEnableFlippedImageFix:",
+    NULL,
+    "setImageHasChanged:",
+    "placeholderForMarker:",
+    "browser:draggingImageForRowsWithIndexes:inColumn:withEvent:offset:",
+    "_accessibilityTitleElement",
+    "_openUntitled",
+    "_entitiesForConfiguration",
+    "displayToolTip:",
+    "_setFrameUsingName:domain:",
+    "setColor:forTimeLine:",
+    "removeToolbarItem:",
+    NULL,
+    "setAutoDistinct:",
+    "setScaledImageSize:",
+    "_setViewNeedsDisplayInRect:",
+    "countOfChildNodes",
+    NULL,
+    "_menuChanged",
+    "hidesOnDeactivate",
+    "imageDidChange:",
+    "cacheSize",
+    "menuDidClose:",
+    "_updateCache",
+    "_compileKernels:",
+    "_pkinitClientAuthUsage",
+    "_quotaAttributesRequestPostHandler:",
+    "_observePathOfEntry:",
+    "loaded",
+    "decodeInvocation",
+    "_old_initWithCoder_NSTableView:",
+    "setGraph:node:element:scope:",
+    "_willPresentRevertingError:",
+    NULL,
+    "lastImportGroup",
+    "documentForWindow:",
+    "unlockWithCondition:",
+    "runSyncToolWithArguments:wait:",
+    NULL,
+    "_web_characterSetFromContentTypeHeader_nowarn",
+    "prefetchRelationshipKeyPaths",
+    "doSelectAll:",
+    NULL,
+    "_scaleImage:forSize:",
+    NULL,
+    "setColor:forIndex:",
+    NULL,
+    "writePDFInsideRect:toPasteboard:",
+    "validatesImmediately",
+    NULL,
+    "deletedMembers:",
+    "encodeByrefObject:",
+    "setCommandDescription:",
+    "_stateForPorts:",
+    "_drawContentsAtRow:column:clipRect:",
+    "_fastestEncodingInCFStringEncoding",
+    "grow:",
+    "initWithFormat:",
+    "initWithCoder:",
+    "_containerTextViewFrameChanged:",
+    "annotation",
+    "_initialize:::",
+    "adjustScrollView",
+    "_setHidden:",
+    "menuBarFontOfSize:",
+    "bitmapInsideRect:",
+    "_uniquer",
+    "_maxXTitlebarButtonsWidth",
+    "runModalForSavePanel:",
+    "isAutomaticLinkDetectionEnabled",
+    "_parsePredefinedAttributes1",
+    "goUpDirectory",
+    "lockDate",
+    "identityComposition",
+    "ascending",
+    "setAllowsEmptySelection:",
+    NULL,
+    "sqlTypeForPropertyAtEndOfKeyPathExpression:",
+    "flushInterval",
+    "notShownAttributeForGlyphAtIndex:",
+    "_resultOfDividerDragToPosition:withParams:",
+    "initWithPNGFile:options:",
+    "abBackupGroupsCount",
+    "displayedColumns",
+    "_writeURLInRange:toPasteboard:",
+    "_removeTrackingRects",
+    "getNodeAsContainerNodeForBrowsing:",
+    "URLHandleUsingCache:",
+    "graphWillStartForSession:",
+    NULL,
+    "removeItemAtIndex:",
+    "importFilesToIPhoto:",
+    "_checkDirectories",
+    "absoluteY",
+    "_wantsKeyboardLoop",
+    "needsSizing",
+    "bitmapFormat",
+    "setIconURL:",
+    "_setupRunLoopTimer",
+    "fragment",
+    "quickLookThumbnailOptions",
+    "qcPickerDidValidate:",
+    "cancelPendingCertLookups",
+    "setContent:",
+    NULL,
+    "childContext:didForgetObjectsWithObjectIDs:",
+    "_DIBRepresentation",
+    "_resizeCache:cachedSeparately:bps:numColors:hasAlpha:",
+    "_nodeAcceptsFirstResponder:",
+    NULL,
+    "_saveDocumentWithDelegate:didSaveSelector:contextInfo:",
+    "initShortCut",
+    "setEvaluationErrorNumber:",
+    "_currentBorderEdge",
+    "checkMipmapVersion",
+    "quickLookSlideshowMode",
+    "_propertySearchMapping",
+    "_doAnimationStep",
+    "fillableRectForBounds:",
+    "checkZoomBoundaries",
+    "abVCardDataRepresenation",
+    "setOrigin:",
+    "representationOfCoveredCharacters",
+    "_calendarFirstDayOfDisplayedMonthDateComponents",
+    "keyPathIfAffectedByValueForMemberOfKeys:",
+    "_defaultDocIcon",
+    NULL,
+    "_selectAllContent:inDetailController:",
+    "_printPanel:didEndAndReturn:contextInfo:",
+    "selectedRowIndexes",
+    NULL,
+    "_swapToolbarItemViewerInDirection:relativeToView:",
+    "accessibilityToolbarButtonAttribute",
+    "menuNeedsUpdate:",
+    "nts_Reconnect",
+    "isMenuIndicatorShownForSegment:",
+    "_markerAreaRect",
+    "initWithObjects:count:",
+    "_enterElement:tag:display:embedded:",
+    "apply:to:",
+    "_setMouseActivationInProgress:",
+    "_delegateRespondsToWillDisplayCell",
+    "setToValue:",
+    "slideImage:from:to:",
+    "dateWithString:calendarFormat:locale:",
+    "_proxyForUIElement:",
+    "imageBrowserShouldValidateEditingOnFocusChange:",
+    "targetAndArgumentsAcceptableAtIndexPath:",
+    "_isBinaryAttribute:length:",
+    "collapseItem:",
+    "_delegateRespondsToWriteRows",
+    "_deferredBuildAndRunGraph",
+    "constraintWithAttribute:relativeTo:attribute:",
+    "accessibilitySearchButtonAttribute",
+    "_fixupSortDescriptorPlaceholdersIfNecessary",
+    NULL,
+    "_external:",
+    "setUserImage:",
+    "secondarySelectedControlColor",
+    "_windowDepth",
+    "internalNameForPropertyName:version:",
+    "compressionChanged:",
+    "centerTabMarkerWithRulerView:location:",
+    "_validateAndCommitTokens",
+    "slideshowSwitchToSinglePage:",
+    "hostMatchingFilter:imageBPC:imageRenderingIntent:",
+    "read",
+    "_noteNote3:",
+    "enableAll:",
+    "lockResourceAtPath:withDuration:andETag:",
+    "resolverClass",
+    "_new_implicitlyObservedKeys",
+    "removeSelectionLayers",
+    "showContextHelpForObject:locationHint:",
+    "_isHUDWindow",
+    "processSubInfo:forKey:",
+    "dataWithContentsOfFile:options:error:",
+    "setMinDate:",
+    "initWithBestLocationRep:",
+    "increaseLengthBy:",
+    "hitTestWithRect:",
+    "_atsFontID",
+    NULL,
+    "docxFormatData",
+    "_localizedColorListCopyrightString",
+    "trackWithEvent:",
+    "sortedArrayUsingSelector:hint:",
+    "activateContextHelpMode:",
+    "selectItem:",
+    "setMinWidth:",
+    "_initWithContainerClass:keyPath:firstDotIndex:propertiesBeingInitialized:",
+    "updateGrammar:",
+    "fileManager:willProcessPath:",
+    "setNoFeedback:",
+    "_mouseDownNonListmode:",
+    "getBezelGroup:points:",
+    NULL,
+    "_hideToolbar:animate:",
+    "_columnResizeChangeFrameOfColumn:toFrame:constrainWidth:resizeInfo:",
+    "_setUpAppKitCoercions",
+    "makeShown:",
+    "unsignedIntValue",
+    "_setTargetProcess:",
+    "limitAmountOfMemoryUsed",
+    "browserDoubleClick:",
+    "_updateAttributesFromAudioChannelMapFromPropertyListener",
+    "sendBeforeDate:",
+    "setSelectedCompositionIndex:direction:",
+    "_makePatch",
+    "_wakeup",
+    "replaceImage:imageState:",
+    "menusDictionary:",
+    "floatValueOfProperty:",
+    NULL,
+    "_reorderColumn:withEvent:",
+    "records",
+    "setParameterList:",
+    "_enableFlushWindowWithoutPerformingFlush",
+    "scrollCellToVisible:",
+    "_updateIndexAndDropOperationWithDrop:",
+    "_extendedCharRangeForInvalidation:editedCharRange:",
+    NULL,
+    "imageBrowser:didMoveItemAtIndex:to:scaleFactor:",
+    "setAdvance:forIndex:",
+    "defaultFetchRequest",
+    "resetInspectorViews",
+    "_attributeValueClass",
+    "initWithContext:format:target:pixelsWide:pixelsHigh:options:",
+    "pageCount",
+    "_setSlotIfDefault:",
+    "unassociatePopup:",
+    "findInView:forward:",
+    "minimumWidth",
+    "formUnionWithCharacterSet:",
+    "writeStyleSheetTable",
+    "_linkShaderOnContext:",
+    "setAlpha:",
+    NULL,
+    "newWithName:url:filterData:actions:domains:comments:readOnly:owner:",
+    "isEmptyHTMLElement:",
+    "_startTransitionWithDocumentAtIndex:usingImage:atFrame:",
+    "_zoomFactor",
+    "_logColumnWidths:",
+    "defaultCropIsZoomToFit",
+    "isUsingMailRecents",
+    "_processPendingInsertions:withDeletions:withUpdates:",
+    "_flushCachedCarbonPrintersByName",
+    "rawDictionary",
+    NULL,
+    "_rulerAccViewFixedLineHeightAction:",
+    "nts_ContactsMatchingNormalizedEmailAddress:inSubscribedContent:context:",
+    "releaseAllPools",
+    "topMargin",
+    "_retainedMipmapImage",
+    "urlToWriteIndexToStorage",
+    "_setNeedsDisplayInPrimarySortColumns",
+    "startScrollPrefetchTask",
+    NULL,
+    "processRecords:",
+    "supportsCropping",
+    "_getCacheWindow:andRect:forRep:",
+    "imageWithOptions:",
+    "_rawSetSelectedIndex:",
+    "drawImage:inRect:fromRect:alpha:fog:premultiplied:gradient:interpolate:shader:",
+    "_configureMessageView",
+    "initWithHostName:serverName:textProc:errorProc:timeout:secure:encapsulated:",
+    "scheduledFindOnPage:",
+    "rangeForUserTextChange",
+    "quadrilateralPoints",
+    NULL,
+    "initWithTypeCode:",
+    NULL,
+    NULL,
+    "_eventRecordDelta:",
+    NULL,
+    "_setComparisonPredicate:",
+    "editButton",
+    "_logState",
+    "_setBundleIdentifier:",
+    "textContent",
+    "setStartRect:endRect:startWhite:endWhite:startAlpha:endAlpha:duration:",
+    "previewPanel:transitionImageForURL:frame:",
+    "useDisabledEffectForState:",
+    "boolForType:defaultValue:",
+    "initListMembersWithSession:URI:showHidden:",
+    "_progress",
+    "sharedToolTipManager",
+    "setDisplayMode:",
+    "preferredBackingLocation",
+    "nodeFromManagedObject:objectIDMap:",
+    "week",
+    "startAlphaEffect:",
+    "height",
+    "processIdentifier",
+    "_setRequest:",
+    "query",
+    "initWithOpenGLContext:pixelFormat:options:",
+    "_writeDocumentData",
+    "_QTDataReferenceClass",
+    "_shouldRepresentFilename",
+    "registerTranslator:selector:toTranslateFromClass:",
+    "URLByAppendingComponent:",
+    "setLayoutAlgorithm:",
+    "_standardCommonMenuFormRepresentationClicked:",
+    "_audioNodeFormatDescriptionDidChange",
+    "initWithSearchElement:andName:hilight:addressBook:",
+    "filterWithName:keysAndValues:",
+    "_propagateDirtyRectsToOpaqueAncestors",
+    "completionsForPartialWordRange:inString:language:inSpellDocumentWithTag:",
+    "requestModes",
+    "setUsesFeedbackWindow:",
+    "setAttributesInTextStorage:",
+    "removeAttributeForName:",
+    "_sendDelegateCanSelectColumn:",
+    NULL,
+    "_compareMultiNoLabelScalarWithRecordValue:",
+    "displayState",
+    NULL,
+    "invalidateLayoutOfLayer:",
+    "_privateChildNodes",
+    "_pkCount",
+    "_finalize_QCCompositionPickerGridCellLayer",
+    "_horizontalResizeCursor",
+    "_entityClass",
+    "restoreCardWindowStateWithModel:",
+    "numberOfItemsChanged",
+    "setMaximum:",
+    "lastEmailDates",
+    "setSharedSurfaceMode:",
+    "__containsRecord:",
+    NULL,
+    "initWithContentsOfURL:ofType:error:",
+    "startTrackingAt:inView:",
+    "allowsGroupSelection",
+    NULL,
+    "sharedSearchManager",
+    "didReceiveAuthenticationChallenge:",
+    "_drawerVerticalOpenOffset",
+    "expandItem:expandChildren:",
+    NULL,
+    "render:",
+    "_spellingSelectionRangeForProposedRange:",
+    "layerOfType:",
+    "updateSwatch",
+    "wakeup",
+    "_appActivationChanged:",
+    "setResizeIncrements:",
+    "overlayBounds",
+    NULL,
+    "_scrollingAnimationCallback",
+    "_mediaBrowserIcon",
+    "character:hasNumericProperty:",
+    "textAttributesForNotANumber",
+    "doCommandBySelector:commandDictionary:",
+    "newSelectionForMouseMoved:",
+    "initWithObjectToken:movie:",
+    "_portTextAttributesForNode:",
+    NULL,
+    "isInputPortVisible:",
+    NULL,
+    "initWithPK64:",
+    "_initFromGlobalWindow:inRect:",
+    "setColorSpaceName:",
+    "_doOrderWindow:relativeTo:findKey:",
+    "maxContentSize",
+    NULL,
+    NULL,
+    "undoIt",
+    "conflictingRecords",
+    "decrementRefCountForObjectID:",
+    "__oldnf_setLocalizationFromDefaults",
+    "hudFadeTimerElapsed:",
+    "UUID",
+    "_setLevel",
+    "samplesPerPass",
+    "_prepareFunctionExpression:",
+    "setPreference:forKey:",
+    "_subtractColor:",
+    "sendInstruction:",
+    "showsHiddenFiles",
+    "dictionary",
+    "windowDidUpdate:",
+    "_currentSetting",
+    "glyphName",
+    "initWithName:appleEventCode:enumeratorDescriptions:isHidden:",
+    "prefetchingRelationshipKeyPathsForImplClass:inAddressBook:",
+    "isAppleUseCoreUI",
+    "defaultAnimationForKeyPath:",
+    "_releaseBindingAdaptor",
+    "updatePreviewSize",
+    "_typeSelectEndCurrentSearch",
+    "invalidateGlyphsOnLayoutInvalidationForGlyphRange:",
+    "progressMarks",
+    NULL,
+    "tokenForegroundColor",
+    "_switchImage:andUpdateColor:",
+    "_setGlyphsPerLineEstimate:offsetPerLineEstimate:",
+    "__instantiateNode:",
+    "_getDisplayDelay:inQuickMode:forView:",
+    "_load",
+    "_fileWrapperForURL:",
+    "setAttributeValueClassName:",
+    "_launch:fromBundle:throughPort:",
+    "setStart:len:",
+    "optionClicked:",
+    "nativePixelFormat",
+    "_setMessageAndInformativeText",
+    NULL,
+    "volumesNode",
+    "_processSwitchesEnabled",
+    "_setLazyDestinationEntityName:",
+    "highlightMode",
+    NULL,
+    "rangeAtIndex:",
+    "computeFigureRectangle:",
+    "flagsChanged:",
+    NULL,
+    "_drawThemeBezelWithFrame:inView:",
+    "setImageSize:",
+    "_updateProfile",
+    "willCreateSchema",
+    "_viewWillStartLiveResize_handleRowHeaderSurfaces",
+    "setDefaultMenu:",
+    "initWithUnsignedInt:sqlType:",
+    "setTitleBaseWritingDirection:",
+    "userDefaultsChanged",
+    "rotateByDegrees:",
+    "doesNotRecognize:",
+    "_dividerFrames",
+    "initWithDevice:",
+    NULL,
+    "_validateSingleValue:forKeyPath:error:",
+    "initWithOriginalClass:",
+    "_collapsedOrigin",
+    "releaseDelegate",
+    NULL,
+    "_isGroupRow:",
+    "generateSQLStatementForFetchRequest:ignoreInheritance:countOnly:",
+    "_orderFrontHelpWindow",
+    "removeClient:selector:",
+    "appendString:withFont:andAttribute:",
+    "nameFieldLabel",
+    "initWithTarget:selectorName:arguments:",
+    "_dictionaryByTranslatingAERecord:toType:inSuite:",
+    "isInvalidationCapableObject:withSelector:",
+    "_reformListAtIndex:",
+    "_base64StringFromData:",
+    "_invalidateTitleCellSize",
+    "searchLimit",
+    "_minXBorderRect",
+    "removeVolatileDomainForName:",
+    "_setInverseRelationship:",
+    "_toolbarIsShown",
+    "image:didLoadRepresentation:withStatus:",
+    "isPausedRendering",
+    "togglePlay:",
+    "mediaType",
+    "layoutStatusbar",
+    "_noticeTextColorPeerBinder:",
+    "initWithFileManager:",
+    "realElement",
+    "_noteToolbarLayoutChanged",
+    "addFilter:toCollection:",
+    "setBaseWritingDirection:range:",
+    "outlineView:heightOfRowByItem:",
+    "destinationPort",
+    "removeObjectsAtArrangedObjectIndexPaths:",
+    "_displayFromCarbonIgnoringOpacity",
+    "_scriptStringWithTabCount:",
+    "_setCurrentEvent:",
+    "isRenameGroupUndoable",
+    "_configurePort",
+    "getImageForDrag",
+    "_getInputExtent",
+    "translateBy:",
+    "_rightMouseUpOrDown:",
+    "setFitToScreen:",
+    "_unregisterRuleDelegateForNotifications",
+    "dictionaryWithContentsOfURL:",
+    "windowChangedScreen:",
+    "_processDBInfoNode:",
+    "_isPaletteView",
+    "_evaluateSourceExpressionForMapping:entityPolicy:",
+    "requiredFileType",
+    NULL,
+    "_specifiesUnorderedAddition",
+    "flipImageHorizontal:",
+    NULL,
+    NULL,
+    "_nodeFromLibXML2Node:",
+    "buildLocalizedStringToKeysTable",
+    "rightView",
+    "shapeX",
+    "updateCellsLayoutAtIndexes:",
+    "_titleCellSizeForTitle:styleMask:",
+    "_init",
+    "_updateSubthumbnails",
+    "attributedStringByWeaklyAddingAttributes:",
+    "writeHeader",
+    "fileLocker:actionForApparentlyAbandonedLock:onAttempt:",
+    "modelAndProxyKeysObserved",
+    "slot",
+    "apply:",
+    "zoomFactor",
+    "setSelectedMembers:",
+    "navTransform",
+    "endGrouping",
+    "valueInTemporaryCacheForProperty:",
+    "numberFromString:",
+    "saveFontCollection:",
+    "setSFElement:",
+    "drawParagraphIcon:inContext:",
+    "filterClassDescription",
+    "_iconImage",
+    NULL,
+    "showsPreviews",
+    "addHeaderValue:forKey:",
+    "saveMorphedGlyphs:",
+    "windowTitleForDocumentDisplayName:",
+    NULL,
+    "outlineView:child:ofItem:",
+    "actionProperty",
+    NULL,
+    "pasteboardWithUniqueName",
+    NULL,
+    "_selectToolbarItemViewerAfterView:",
+    "free",
+    "inputContextForFirstTextView:",
+    NULL,
+    "callStackReturnAddresses",
+    "_completePathWithPrefix:intoString:matchesIntoArray:",
+    "_calculateAllTitles:",
+    "_addWhitespace",
+    "shadedImage:heightField:shading:scale:opacity:hasAlpha:transparency:",
+    "_labels",
+    "localizedName:locale:",
+    NULL,
+    "_traverseToSupermenu",
+    "setTitleNoCopy:",
+    "displayedTitle",
+    "_constructDefaultMessage:",
+    "nts_AllRecordsForClass:",
+    "_editor:didChangeEditingState:bindingAdaptor:",
+    "drawPlayerControl",
+    "_writeParagraphData",
+    "imageAdjustView",
+    NULL,
+    "setKey:",
+    "_drawProgressArea",
+    "writeRoomForInt:",
+    "mediaKeys",
+    "removeTrackingArea:",
+    "tailIndent",
+    "_colorizedImage:color:",
+    "_initContent:styleMask:backing:defer:counterpart:",
+    "clearBuffer",
+    "setMaxDate:",
+    "_setTransactionFinished:",
+    "_setNonRepudiationUsage:",
+    "initWithSavedQueryNode:",
+    "checkForTrailingDigits:",
+    "_executeFetch:didCommitSuccessfully:actionSender:",
+    "registerUndoWithTarget:selector:object:",
+    "getGid",
+    "_hasHorizontalScrollBar",
+    "isDrawingToScreen",
+    NULL,
+    "takeValuesFromDictionary:",
+    "_cancelAnimationTimer",
+    "_setEmailAddressOfCA:",
+    "sharedAppleEventManager",
+    "service",
+    NULL,
+    "_deselectDownstream:",
+    "_maxYResizeRect",
+    "_setEventMask:",
+    "addInput:error:",
+    "initWithCarbonWindowRef:takingOwnership:",
+    NULL,
+    "propertyTableAtIndex:",
+    "_shouldHeaderShowSeparatorForColumn:",
+    "docFormatData",
+    "activateForDocumentAtIndex:usingTransitionImage:atFrame:",
+    "nts_Members",
+    "initWithBounds:",
+    NULL,
+    "_sheetDidEnd:returnCode:contextInfo:",
+    "findClass:",
+    "lineFragmentRectForProposedRect:sweepDirection:movementDirection:remainingRect:",
+    "addDefaultAppearanceDictionaryRef:",
+    NULL,
+    "_syncToChangedToolbar:toolbarModeChanged:",
+    "allowsOpenGLAcceleration",
+    "becomeMultiThreaded:",
+    "_scrollUp:",
+    NULL,
+    "setExternalPrecision:",
+    "verticalCornerRadius",
+    "mappingModelForSourceModel:destinationModel:error:",
+    "poseAsClass:",
+    "_characterIndexForMoveForwardFromCharacterIndex:",
+    "nts_PropertyTypesForRecordOfClass:",
+    NULL,
+    "iDiskAddress",
+    "setAllowMultipleSubrowSelection:",
+    "alternateName",
+    "setAnnotationType:",
+    "initWithTitle:URL:andPath:",
+    "_switchToPlatformInput:",
+    "removeQFilterCellViews:",
+    "_alignedTitleRectWithRect:",
+    "nameAtIndex:filtered:",
+    "zPosition",
+    "_initialBackgroundStyleCompatibilityGuess",
+    "_initWithBacking:",
+    "_startLiveResizeAsTopLevel",
+    "keyEquivalentWidth",
+    "_cacheFileName",
+    "pictureTakerViewBox",
+    NULL,
+    "controlsFixedForKeyFrame:inTimeLine:",
+    "_registerFormatter:forErrorKey:parameters:",
+    "tokenField:representedObjectForEditingString:",
+    "renewGState",
+    "_synchronizeTitlesAndColumnsViewVisibleRect",
+    "openFile:",
+    "_convertDataToString:",
+    NULL,
+    "popUpMenu:atLocation:width:forView:withSelectedItem:withFont:",
+    "applicationWillHide:",
+    "_drawNavigationBarBackgroundWithFrame:inView:",
+    "_enablePosting",
+    "_setResponse:",
+    "enterFullScreenMode:withOptions:",
+    "getFirstUnlaidCharacterIndex:glyphIndex:",
+    "setAddressNormalized:",
+    NULL,
+    NULL,
+    "allModifierPredicates",
+    "accessibilitySetValueAttribute:",
+    "requiredThickness",
+    "_closeForkSync:",
+    "titleForDocumentURL:canUseCustomDisplayName:",
+    "dmCreateRequestWithSession:data:props:URI:",
+    "scanLocation",
+    "endLineWithGlyphRange:",
+    "availableVoices",
+    "windowDidOrderOnScreen:",
+    "copyScriptingValue:forKey:withProperties:",
+    "partHit:",
+    NULL,
+    "mergeStyleInto:",
+    "_createOptimizedDefaultValue:forInputKey:cellSize:",
+    "contextWithOptions:",
+    "setViewScale:",
+    "_findDragTargetFrom:",
+    "replaceObjectsInRange:withObjectsFromArray:",
+    "_fromRecord:getContainerInfo:",
+    "linkPath:toPath:handler:",
+    "triggerSearch",
+    "checkSpellingOfString:startingAt:language:wrap:inSpellDocumentWithTag:wordCount:reconnectOnError:",
+    "getRow",
+    "setSRRecognizer:",
+    "_IMViewWillDisplayImage:",
+    "_updateSelectedItem:forKeyDown:",
+    "_characterIndexForMoveBackwardFromCharacterIndex:",
+    "_typesIncludingConversionsFromTypes:",
+    "renderString:forRect:font:color:alignment:rotation:breaks:context:",
+    "_rulerAccessoryViewAreaRect",
+    "_removeRunningOperationEqualTo:",
+    NULL,
+    "subitems",
+    "getCustomAdvance:forIndex:",
+    "alignmentMode",
+    "_setDrawBackground:",
+    "_generateSQLForKeyPathExpression:allowToMany:inContext:",
+    "_typeNameFromElement:isOptional:",
+    "nts_RemoveFromAddressBook:",
+    "parsesLSItemContentTypes",
+    "clearInsertedObjects",
+    "canCloseDocument",
+    "stringByRemovingPercentEscapes",
+    "setPolicyDelegate:",
+    "setNameNormalized:",
+    "didAddCredentials:toRequest:context:",
+    "portWillDeleteFromNode",
+    "_proxyProtectionSpaceForProxyURL:",
+    "_setSignatureUsage:",
+    "replaceCharactersInRange:withAttributedString:",
+    "compositionInputs",
+    "timeIntervalSinceReferenceDate",
+    NULL,
+    "setMaxColumns:",
+    "_validFrameForResizeFrame:fromResizeEdge:",
+    "_moveContentsAt:toIndex:",
+    "carbonHICommandIDFromActionSelector:",
+    "isPrivate",
+    "_findCurrentEditor",
+    "_updateVolumeByStoredVolume",
+    "lock:",
+    "_validatePath",
+    "_appendTypeNamesSuiteDeclarationToAETEData:",
+    NULL,
+    "_updateSettings",
+    "_setHasToolTip:",
+    "_closeDocumentsStartingWith:shouldClose:closeAllContext:",
+    "tokenTextView:readSelectionFromPasteboard:type:",
+    "updateHeartBeatState",
+    "_unionOfArraysForKeyPath:",
+    "_minForKeyPath:",
+    "_canUseCompressionOptionsWithDescription:",
+    "_detachSheetWindow",
+    "stateValue",
+    "_runningOperation",
+    "setVarietyCharSet:",
+    NULL,
+    "defaultWritingDirectionForLanguage:",
+    "filterNotification:type:info:",
+    "keyForConnection:",
+    "setVideoPreviewConnection:",
+    "consumeImageData:forTag:",
+    "_multiClipDrawingHelper",
+    "loadDidFinish",
+    "_transactionAborted",
+    "initWithCharacterRange:parent:",
+    "_subtextStorageFromRange:",
+    "_postStoresChangedNotificationsForStores:changeKey:options:",
+    "attachedSheet",
+    "dateByAddingComponents:toDate:options:",
+    "webScriptNameForKey:",
+    "_supportsGetValueWithNameForKey:perhapsByOverridingClass:",
+    "colorFromPoint:",
+    "accessibilityIsFocusedWindowAttributeSettable",
+    NULL,
+    NULL,
+    "pointer",
+    NULL,
+    "loadImageKitFrameworkIfNeeded",
+    "nts_AddressBook",
+    "_convertInstanceIfNeeded:",
+    "_invalidateInsertionPoint",
+    "insertValue:withLabel:atIndex:",
+    "controlTextDidCh:",
+    "_changeNamespace:fromPrefix:toPrefix:",
+    "setMinimized:",
+    "prepareForSave",
+    "_performActionOnAllNodes:context:",
+    "setIndex:count:",
+    "unregisterImageRepClass:",
+    "_updateSheetEffectParent:",
+    "_findItemViewerAtPoint:",
+    "setHotspotsVisible:",
+    "_animatingScrollTargetOrigin",
+    "getCString:maxLength:",
+    "_updateSubmenuKnownStale:",
+    "roundingMode",
+    "nts_SetDistributionIdentifier:forProperty:person:inGroup:allowFetching:",
+    "initWithMovieView:selector:operation:",
+    "bitsPerPixel",
+    "setAutoresizesAllColumnsToFit:",
+    "_hasActiveControls",
+    "isTrue",
+    "_canOpenInlinePreview",
+    NULL,
+    NULL,
+    "_imageForSelection",
+    "textColorWhenObjectValueIsUsed:",
+    "unregisterObjectWithServicePath:",
+    "drawSelectedItemsInGenieWindow:withBoundingBox:",
+    "_indexOfWindow:",
+    NULL,
+    "displayValuesForRow:",
+    "grayDeviceColor",
+    "initWithPickerMask:colorPanel:",
+    "_offsetControlPointOfType:withOffset:forKeyFrame:inTimeLine:",
+    "setTickMarkPosition:",
+    "textureID",
+    "_labelOnlyShowsAsPopupMenu",
+    "controlType",
+    "deviceID",
+    NULL,
+    "_toolbar",
+    "setSama:",
+    "layoutCharactersInRange:forLayoutManager:maximumNumberOfLineFragments:",
+    "setSublayers:",
+    "applyMultiValue:withProperty:toRecord:managedObject:",
+    "hotspotCountForNode:",
+    NULL,
+    "numStacks",
+    "accessibilityIsIndexAttributeSettable",
+    "lookUpConnectionWithReceivePort:sendPort:",
+    "coercedValue:",
+    "isSingleDTDNode",
+    "_refreshStreams",
+    "birthdayYear",
+    "readColors",
+    NULL,
+    "_syncScopeLayout",
+    "_createCollectionJoinsForFetchInContext:",
+    "performSelector:withObject:",
+    NULL,
+    "orderFrontCharacterPalette:",
+    "setCurrentTime:",
+    "learnWord:language:",
+    NULL,
+    "selectableItemIdentifiers",
+    "_clearVisitedColumnContentWidths",
+    "coerceValue:forKey:",
+    "textView:writeCell:atIndex:toPasteboard:type:",
+    "_popUpButton",
+    "_markerTypeButton",
+    "performWithActionName:",
+    "processorCount",
+    "SCTCategoryColumnColor",
+    "databaseChanged:",
+    NULL,
+    "iconView:selectionIndexesForProposedSelection:",
+    "addTrackingRect:owner:userData:assumeInside:",
+    "variant",
+    "wantsDoubleBuffering",
+    "fontAttributesInRange:",
+    "handleAppTermination:",
+    "cropRect",
+    "setMirroring:",
+    "_duplicateTimeLines",
+    "_startFileWritingForConnection:fileControlToken:runningOperation:",
+    "_autosaveColumnsIfNecessary",
+    "initWithSmartGroup:name:searchElement:hilights:addressBook:",
+    "_finalize_QCImageManager",
+    "drawPlaceHolder",
+    "filesystemItemLinkOperation:shouldProceedAfterError:linkingItemAtPath:toPath:",
+    "installShortcutView",
+    "accessibilityIsWindowAttributeSettable",
+    "recordValuesForInsertedObject:",
+    "replaceAllInView:selectionOnly:",
+    "setShowIdentityGroups:",
+    "replyToOpenOrPrint:",
+    "currentFrameImage",
+    "shouldAllowUserColumnResizing",
+    "decomposableCharacterSet",
+    "setRequestBodyWithString:encoding:",
+    "_appendTextBytes:length:encoding:attributes:",
+    "isObscured",
+    "clearDirectoryResults",
+    "finishLaunching",
+    "accessibleLabelsAndValues",
+    "freeSpace",
+    "compileSourceOfType:",
+    "insertSingleQuoteIgnoringSubstitution:",
+    "cachedImageRefForNSImage:",
+    "initWithMachMessage:",
+    NULL,
+    "drawContextMenuHighlightForRow:",
+    "_discardEditing",
+    "freeOriginalImageCache",
+    "setNeedToExchangeItems:",
+    "_singleMutableArrayValueForKey:",
+    "deviceInputWithDevice:",
+    "_setFirstMoveableItemIndex:",
+    "formatDidChange:",
+    "_handleSpecialAlternateKeyEquivalent:",
+    "cellAtPoint:row:column:loaded:",
+    "_adjustTimer:",
+    "_fixTargetsForMenu:",
+    "setShadowsCells:",
+    "_setDragCompletionTargets:",
+    "swapWithMark:",
+    "_setSSLServerAuthUsage:",
+    "_addPathSegment:point:",
+    "_startTooltips",
+    "stringByResolvingSymlinksInPath",
+    NULL,
+    "pathForKeychain:",
+    "inputClientBecomeActive:",
+    "_subthumbnailLayers",
+    "_web_extractFourCharCode",
+    "isLastImportGroupVisible",
+    "overlayLight:onto:center:size:adjustHue:saturation:luminance:",
+    NULL,
+    "frameOfColumn:",
+    "cellMaximumSizeForCurrentBounds",
+    "initWithDomain:type:name:",
+    "_leftGroupRect",
+    "isMIAM",
+    "initWithContentSize:preferredEdge:",
+    "selectionFrame",
+    "_setKeychainRef:",
+    "configureForCalculatesAllSizes:",
+    "setShowsFirstResponder:",
+    "accessibilityIncrementButtonAttribute",
+    "_broadcastHardwareCaps",
+    "_syncToolbarPosition",
+    "startRollOverTracking:",
+    "moveWordForward:",
+    "_pathForResource:ofType:inDirectory:forRegion:",
+    "enumCodeValue",
+    "proxyPortForOriginalPort:",
+    "initializeContextForFetchRequest:ignoreInheritance:",
+    "_commonInitNavMatrix",
+    "_handleTestEvent:withReplyEvent:",
+    NULL,
+    "verifiedDirRef",
+    "discloseClicked:",
+    "drawImage:withFrame:inView:",
+    "__copyGLToCurrentFocusedView",
+    "loadFaces:",
+    "_drawsWithTintWhenHidden",
+    "initWithInternalManager:",
+    "textShouldBeginEditing:",
+    "getCurrentSelectionFrame",
+    "loadBundle",
+    "_allowAnimated_setAlphaValue:",
+    NULL,
+    "deviceConnectionWillChange",
+    "removePort:forMode:",
+    "_resizeHeight:",
+    "textContainerChangedGeometry:",
+    "absoluteX",
+    "_minYmaxXResizeRect",
+    "volumeDidChange:",
+    "exportVCard:",
+    "doActionForStatusBar:",
+    "writeToURL:ofType:error:",
+    "tableContentChanged:",
+    "department",
+    "_netInfoImageData",
+    "subentities",
+    "restoreWindowOnDockDeath",
+    "lineCapStyle",
+    "setTextColor:whenObjectValueIsUsed:",
+    "initWithDomainName:",
+    NULL,
+    "_optimizedRectFill:gray:",
+    "initByReferencingURL:",
+    "_fullLayout",
+    "declareChannels:",
+    "nts_DistributionIdentifierForProperty:person:inGroup:",
+    "setMonth:",
+    "setKeyboardFocusRingNeedsDisplayInRect:",
+    "slideshowSwitchToActualSize:",
+    "trackMouseCoordinates",
+    "_parseArguments",
+    "_redisplayTableContentWithRowIndexes:columnIndexes:",
+    "bindingRunsAlerts:",
+    "_prepareAlertError:responder:responderCandidate:window:recoveryAttempter:",
+    "_collection:setHidden:save:",
+    "setSelectedMembersFromModel:",
+    "advanceToActiveLocalTime:",
+    "fileWrapperFromRange:documentAttributes:error:",
+    "doLoadItemAtIndex:",
+    "scrollRectToVisible:",
+    "displayNameForKeychainAtPath:keychainRef:",
+    "_distanceInDragDirectionBeforeDragAttempt",
+    "_titleSizeWithSize:",
+    "setSpeechChannelWithVoiceIdentifier:",
+    "scanDecimal:",
+    "_coreUIDrawOptionsWithView:",
+    "slideshowPlay:",
+    NULL,
+    "animationDelay",
+    "deleteOutputPortForKey:",
+    "filePosixPermissions",
+    "initWithNSImage:options:",
+    "createCVOpenGLBufferForManager:withOptions:",
+    "_isSheetOnModalWindow",
+    "_goDown:",
+    "prepareGState",
+    "_setAllPanelsNonactivating:",
+    "_accessibilityToolbarButtonElement",
+    "_logFailure",
+    "_setSpecialPurposeType:",
+    "_setIdentifier:",
+    "_runGarbageCollectionForAge",
+    "setCriticalValue:",
+    "sharedDBCache",
+    NULL,
+    "invalidateAccessibilityTable",
+    "_moreCompleteVariantOfTypeDescription:",
+    "setReadOnly:",
+    "rendererName",
+    "setCacheUsed:",
+    "setAutoforwardsScrollWheelEvents:",
+    "plusButton",
+    "lightGrayColor",
+    NULL,
+    "_scrollToVisibleItemAtIndex:",
+    "_newOperatorWithType:modifier:options:",
+    "nts__isLastNameFirst",
+    "_endLiveResizeAsTopLevel",
+    "_performDiskCacheSync",
+    NULL,
+    "appendBezierPathWithRect:",
+    "_forceSendAction:notification:firstResponder:",
+    "_initVariables",
+    "imageBrowser:itemAtIndex:",
+    "inlinePreview:didShowPreview:",
+    "initWithToolbarItemViewer:",
+    "removeDirectoryAndContentsAtURL:andReturnResultCode:",
+    "writeStrokeWidth:",
+    "view:customToolTip:fadeOutAllowedForToolTipWithDisplayInfo:",
+    "_helperDeallocatedForView:layoutManager:",
+    "_selectInTabView:itemAtIndex:",
+    "_toggleAMPM",
+    "addAttribute:value:range:",
+    "setSharingType:",
+    NULL,
+    "isFileURL",
+    "allowEmptySel:",
+    "updateMembersSelection:",
+    "_initializeResumeInformation:",
+    "_primitiveGlyphRangeForCharacterRange:",
+    "setSecondaryGroupingSize:",
+    "setBadgeLabel:",
+    "_digitsForAxis:gridStep:",
+    "_retrieveNodeForObject:",
+    "_selectRowIndexes:inColumn:",
+    "setIsInInterfaceBuilderApp:",
+    "createInputWithPortClass:forKey:attributes:",
+    "setResultsReturnedInDictionary:",
+    NULL,
+    NULL,
+    NULL,
+    "_updateSpline",
+    NULL,
+    "_doICUSubstringMatchForString:andPattern:patternLength:ofType:",
+    "handleReconfiguredWindow",
+    "_doUserParagraphStyleLineHeightMultiple:min:max:lineSpacing:paragraphSpacingBefore:after:isFinal:",
+    "drawArrowFrom:to:open:inContext:",
+    "setScaling:",
+    "createPrimaryKeyTableForModel:knownEmpty:",
+    "_applicableTrackingModeForSegment:",
+    "initWithItems:",
+    "_adjustDynamicDepthLimit",
+    "_valueForKeyPath:ofObjectAtIndex:",
+    "_endTabWidth",
+    "objectDidEndEditing:",
+    "coalesceInTextView:affectedRange:replacementRange:",
+    "lineWidthThreshold",
+    "fileIsAppendOnly",
+    "accessibilityStringForRangeAttributeForParameter:",
+    "setInfo:forKey:",
+    "rectArrayForCharacterRange:withinSelectedCharacterRange:inTextContainer:rectCount:forCursorPosition:",
+    "_computeTargetGridGeometry",
+    "mainThread_FOUNDATION",
+    "trackingAreasDidUpdate:",
+    "_orderOutInProgress",
+    NULL,
+    "accessibilityRulerMarkerTypeDescription",
+    "setHasTimebase:",
+    "convertFont:",
+    "hasVideo",
+    "__savePosition:context:",
+    "initWithTextBlock:charIndex:text:layoutManager:containerWidth:collapseBorders:",
+    "coloredLoggingDefault",
+    "performAndRenderAnimations",
+    "_markerLevelForRange:",
+    "_ensureHoveredImaged",
+    "_setExplicitlyCannotAdd:remove:",
+    "hasSound",
+    "_rulerAccViewUpdatePullDown:",
+    "_processDocument:",
+    "searchController:queryShouldSaveWithName:forAllApps:",
+    "nextTokenPeakUnicode:length:",
+    "entryState:",
+    "manageMetadataForRecords:action:",
+    "valueOfProperty:",
+    "reloadColumn:",
+    "layoutManagers",
+    "_document:pageLayoutDidReturn:contextInfo:",
+    NULL,
+    "domainDidUnbindAll:",
+    "_obtainOpenChannel",
+    "_clockAndCalendarReturnToHomeMonthButtonCell",
+    "abEscapeStringForUnichar:and:advance:",
+    "_drawEndCapInRect:",
+    "glyphAtIndex:",
+    "_nominalSizeNeedForTabItemLabel:",
+    "rightArrowPathInRect:",
+    "initWithContainerClassDescription:containerSpecifier:key:startSpecifier:endSpecifier:",
+    "appendBezierPathWithArcWithCenter:radius:startAngle:endAngle:clockwise:",
+    "bindFromDiskMipmapItem:withUID:",
+    "estimatedItemCount",
+    "setGroupingSize:",
+    NULL,
+    "xmlAttributes",
+    "_usesCorrectContentSize",
+    "_delegateTypeSelectStringForIndex:",
+    "_compressionOptionsPropertyList",
+    "_doubleClickAction:",
+    "initWithPixelBuffer:bounds:replacingFormat:",
+    "_setSortable:showSortIndicator:ascending:priority:highlightForSort:",
+    "setBackgroundLayer:",
+    "_blockAndWaitIfNecessaryWithRequestIndex:",
+    "removeInputUnitsForConnection:fromGraph:ofCaptureSession:",
+    "_useFSRefsEvenOnPathBasedFileSystems",
+    "isCA:",
+    "_addToolTipRect:displayDelegate:displayInfo:",
+    NULL,
+    "setAnchorPoint:",
+    "_shouldInvalidateShadow",
+    "removeAnimationForKey:",
+    "_setWindowFrameForPopUpAttachingToRect:onScreen:preferredEdge:popUpSelectedItem:",
+    "ISS_URLWithUsername:",
+    "_trustButton",
+    "_endChanging",
+    "debugDefault",
+    "initWithRow:column:tableView:",
+    NULL,
+    "_updateObservingInOutlineView:byDroppingRows:andAddingRows:",
+    "classForPortCoder",
+    "frameHighlightColor",
+    "setupWithOptions:createFilter:",
+    "_initWithCFURLProtectionSpace:",
+    "tableViewSelectionIsChanging:",
+    "valueInWordsAtIndex:",
+    "setMiterLimit:",
+    "_compareNode:withNode:usingColumnIdentifier:ascending:",
+    "_validateDisplayValue",
+    "nts_OpenContactManagerWithMode:cacheSchema:",
+    "includeNotesInVCards",
+    "formattingDictionary",
+    "setWasPaused:",
+    "_pixelRectInPoints:",
+    "scrollUp",
+    NULL,
+    "shouldProcessNamespaces",
+    "setPrimitiveOrganization:",
+    "numberStyle",
+    "freeBitsAndReleaseDataIfNecessary",
+    "layoutIfNeeded",
+    "controlTint",
+    "indexesToAdd",
+    "setStandardOutput:",
+    "nts_AddSubgroup:toGroup:",
+    "_performKeyEquivalentConditionally:",
+    "irisClosed:",
+    "imageNameForStatus:",
+    "visualRootNode",
+    "setGridColor:",
+    "_testGlyphTree",
+    "setDropRow:dropOperation:",
+    "trackMouse:adding:",
+    "fileNameExtension:isValidForType:",
+    "setAsMipmapOfImage:aspectRatio:antialiased:quality:",
+    "_setKeyEquivalentVirtualKeyCode:",
+    "toggleExpanded:",
+    "filterAdded:filterChain:",
+    "initWithUser:password:url:",
+    "_defaultGlyphForChar:",
+    "selectedSubrowObjectsAtIndex:",
+    "emissionRange",
+    "openAppleMenuItem:",
+    "abEntityKnowsKey:inAddressBook:",
+    "windowNumber",
+    "certTitleIndex",
+    "setDefaults",
+    NULL,
+    "setFxButtonsAreaInPanel:collapsed:",
+    "setEmptyView:",
+    NULL,
+    "_appendWhereClauseForConstantCollection:",
+    NULL,
+    "setup:",
+    "removeConfirmSheetDidEnd:returnCode:contextInfo:",
+    "_CFURLResponse",
+    "documentRect",
+    "maxTimeLinesCount",
+    "imageBrowser:cellWasRightClickedAtIndex:withEvent:",
+    "createNamedNodeFromNode:reader:",
+    "_setShouldEnforcePixelAlignment:",
+    NULL,
+    "pictureTaker",
+    "setHUD:",
+    "whitePointArray",
+    "pickerInfos",
+    "_createAddRowButton",
+    "position",
+    "_topBarHeight",
+    "makeNextSegmentKey",
+    "__shiftRight:",
+    "scrollToNormalizedValue:",
+    NULL,
+    "containsObject:inRange:",
+    NULL,
+    "_navView",
+    "_freeBitmaps",
+    NULL,
+    "currentSession",
+    "changeDestinationToRect:",
+    "hasItemsToDisplayInPopUp",
+    "_freeNodes",
+    "_calculateTitleForURL:requestIndex:",
+    "_newPlaceholderItemWithItemIdentifier:",
+    "_initWithParagraphStyle:",
+    "nearestCellOfPosition:",
+    "syncToView:",
+    NULL,
+    "_closeSheet:andMoveParent:",
+    "glyphIndexToBreakLineByHyphenatingWordAtIndex:",
+    "invokeDefaultMethodWithArguments:",
+    "removeObjectsAtIndexes:",
+    "highlightCell:atRow:column:",
+    "indexPathByAddingIndex:",
+    "parseEntrustVersInfo:",
+    "setMultiValue:forProperty:",
+    "automaticallyNotifiesObserversForKey:",
+    "fontDescriptorsInCollection:",
+    "getRulebookData:makeSharable:littleEndian:",
+    "mergeChangesFromContextDidSaveNotification:",
+    "_flushAEDesc",
+    "blueReconstruction:green:phase:",
+    "toolbarWillAddItem:",
+    "initWithUnsignedLongLong:",
+    "setDefaultFormatterBehavior:",
+    "setAllowsTickMarkValuesOnly:",
+    "_setMe",
+    "setPaletteLabel:",
+    "registerNodeWithClass:identifier:",
+    "_descriptorByTranslatingNumber:ofType:inSuite:",
+    "setDefaultWindingRule:",
+    "initWithCollection:",
+    "setFocusValue:forAccessibleChildAtIndex:",
+    "setSegmentStyle:",
+    "setRotation:",
+    "titleHeight",
+    "_invalidateScaledBackground",
+    "drawPortView:",
+    NULL,
+    "parseOidWithDictionary:",
+    "abortFreeTemporaryCache",
+    "_setWritesCancelled:",
+    "cStringLength",
+    "_continueModalOperationToTheEnd:",
+    "_handleWillPopUpNotification",
+    "imageWithOrientation:",
+    "nts_PathForUIDTaggedImage",
+    "nts_RemoveRecord:",
+    NULL,
+    NULL,
+    "setEventClass:",
+    "_setNextToolbarSizeAndDisplayMode:",
+    "setDisplayLinkRef:",
+    "initWithFrame:filter:",
+    "paletteFontOfSize:",
+    "isDistributionList",
+    NULL,
+    "_setFrameUsingName:domain:force:",
+    "_virtualNodeOfType:",
+    "stashSize",
+    "actionWithActionDictionary:forDocument:",
+    "_setFrameFromString:force:",
+    "canInitWithURL:",
+    "timeSliderCurrentTime:",
+    "visiblePagesChanged:",
+    "authorizationViewDidDeauthorize:",
+    "_nonKeyEditingFrameColor",
+    "setDocumentContentKind:",
+    "_list",
+    "setRawDataFormat:",
+    "noteHeightOfRowsWithIndexesChanged:",
+    "viewFrameChanged:",
+    "initWithUIElementValue:",
+    "dataRefData",
+    "_realWindowNumber",
+    "initWithDocumentButton:",
+    "entityID",
+    "filtersInDomains:Categories:Objects:",
+    "getObjects:andKeys:",
+    "keylessStructures",
+    "templateView",
+    "_certAuthoritykeyAlgorithm",
+    "addressBookSource",
+    "isFieldVisible:",
+    "vrInstance",
+    "autoValidationDisabled",
+    "_setChangedFlags:",
+    NULL,
+    "_startRunningNonBlocking",
+    "_keyEquivalentsAreActive",
+    "setPostsFrameChangedNotifications:",
+    "directoriesGroup",
+    "tokenFieldCell:editingStringForRepresentedObject:",
+    "_chooseFamily:",
+    NULL,
+    "unmountAndEjectDeviceAtPath:",
+    "fieldEditableControl",
+    "_setHasSurfaceBackedOpenGLContext:",
+    NULL,
+    "binaryOperatorForSelector",
+    "deleteToEndOfLine:",
+    "treatsFilePackagesAsDirectories",
+    "localAddressBookSourceWithAddressBook:",
+    "zero",
+    "initWithEntity:inverseToMany:",
+    "disableCursorRects",
+    "portForName:onHost:",
+    "pathsForResourcesOfType:inDirectory:",
+    "transformStruct",
+    "areaOfInterestForMouse:",
+    "_insertChildOrSibling:",
+    "_colorByTranslatingRGBColorDescriptor:toType:inSuite:",
+    "_generateSQLForWildSubStringForGlob:wildStart:wildEnd:",
+    "floatParameterValue:forResolution:",
+    "addQuaddingToDictionaryRef:",
+    "GIFRepresentation",
+    "selectedComposition",
+    "numberOfChildren",
+    "initWithTCPPort:",
+    NULL,
+    "_setDistanceForVerticalArrowKeyMovement:",
+    "_insertObject:inSubNodesAtIndex:",
+    NULL,
+    "startAngle",
+    "removeFileAtPath:handler:",
+    "_initWithoutAEDesc",
+    "setAllowsColumnResizing:",
+    "setOutputImageKey:",
+    "_popIfTopHandling:",
+    "_unobstructedVisibleHeaderRectOfColumn:",
+    "_unitsForClientLocation:",
+    "_layerDidBecomeVisible:",
+    "arrayWithRange:",
+    "_hasToolbar",
+    "setTextAttributesForPositiveInfinity:",
+    "_shouldAnimateColumnScrolling",
+    "_rememberAndResignFirstResponder",
+    "_newScroll:",
+    "canGoToLastPage",
+    NULL,
+    "performClickWithFrame:inView:",
+    "_createRowForCriteriaSlice:",
+    "setRightMargin:",
+    "_delegateValidation:object:uiHandled:",
+    "setUndoManager:",
+    "replaceSubview:with:",
+    "_computeImageFrame",
+    "nextDaylightSavingTimeTransitionAfterDate:",
+    NULL,
+    "isLike:",
+    NULL,
+    NULL,
+    "tableView:shouldSelectRow:",
+    "absoluteString",
+    "ctx",
+    "databaseOperator",
+    "insertLineSeparator:",
+    "exclusives",
+    "deactivateServer:",
+    "beginIgnoreChanges",
+    "_setMenuItemBelongsToContextualMenu:",
+    "dstDraggingExitedAtPoint:draggingInfo:",
+    "postpone",
+    "attachedMenuView",
+    "_installed",
+    "orderForProperty:comparison:",
+    "doSetImageWithURL:",
+    "runCustomizationPalette:",
+    "isNSNumber__",
+    "_startingWithDocument:continueSavingAndClosingAll:contextInfo:",
+    "alternateSelectedControlTextColor",
+    "drawRow:clipRect:",
+    "isRotatedFromBase",
+    "getAllCategories",
+    "_batchClose",
+    NULL,
+    "setMarkedText:selectedRange:replacementRange:",
+    "openURL:",
+    "indexSet",
+    "greenVotedReconstructionROI:destRect:",
+    "_setFileNameExtensionWasHiddenInLastRunSavePanel:",
+    "checkSpaceForParts",
+    "_contentRectExcludingToolbar",
+    NULL,
+    "quartzFilterWithOutputIntents:",
+    "predicateWithLeftExpression:rightExpression:modifier:type:options:",
+    "QT_URLByRemovingFragment",
+    "_showToolbarWithAnimation:",
+    NULL,
+    "shouldSuppressNotificationFromObject:keyPath:",
+    "addResponseBodyReader:",
+    "nextTokenPeak:",
+    "showPreferencesPanel",
+    "_addObject:objectIDMap:",
+    "initWithPath:flags:createMode:",
+    "_didLoadMetadata",
+    "fetchIntermediateForKeypathExpression:",
+    "_dotMacAccountNameFromSystem",
+    "_drawRollOver:",
+    "_accessibilityIsSpaceOrSeparatorItem",
+    "_defaultItems",
+    "objectsForXQuery:constants:error:",
+    "reportFrameRate",
+    "_indicatorOffset",
+    "shouldRenderOnBackgroundThread",
+    "keyForObject:",
+    "_layoutGlyphsInLayoutManager:startingAtGlyphIndex:maxNumberOfLineFragments:currentTextContainer:proposedRect:nextGlyphIndex:",
+    "_menuScrollingOffset",
+    "_zScreen",
+    "registerTranslator:selector:toTranslateFromDescriptorType:",
+    "validateValue:forKey:",
+    "initWithName:boundObject:",
+    "playerFrame",
+    "_pointRectInPixels:",
+    "cleanUpAfterDragOperation",
+    "drawMarkersInRect:",
+    "_rightmostAutoresizingColumn",
+    "startAnimateZoomToScaleFactor:",
+    "calculateOutlineLayer:forResolutionData:",
+    "setColumns:",
+    "getIDRefStringForValue:ofRelationship:stringKeys:objectIDMapping:objectForError:",
+    "setPositiveInfinitySymbol:",
+    "_paragraphClassforParagraphStyle:range:isEmpty:isCompletelyEmpty:headerString:alignmentString:directionString:",
+    NULL,
+    "initWithCoach:contentRect:contentImage:",
+    "setHeaderView:",
+    "loadView",
+    NULL,
+    "_setGenerateCombinedVCards:",
+    "decimalTabMarkerWithRulerView:location:",
+    "imageROI:forRect:userInfo:",
+    "flushTextRenderer",
+    "_nextDaylightSavingTimeTransitionAfterAbsoluteTime:",
+    "mipmapCacheDidSave:",
+    "layoutChanged:",
+    "decimalNumberWithString:locale:",
+    "_addCredential:forProtectionSpace:",
+    "clearCachedImageData",
+    "createString",
+    "_isCancelledAfterHandlingUserEvents",
+    "textView:shouldChangeTextInRanges:replacementStrings:",
+    "_accessibilityBoundsOfChild:",
+    "_highlightRow:clipRect:",
+    NULL,
+    "isFeatureEnabled:",
+    "playsAllFrames",
+    "mnemonic",
+    "chapterList",
+    "documentUnlocked:",
+    "isSingleTableEntity",
+    "_win32ChangeKeyAndMain",
+    "_ownsWindowGrowBox",
+    "_isRunningDocModal",
+    "scaleRegionOf:destRect:userInfo:",
+    "autohidesScrollers",
+    "_spanClassForAttributes:inParagraphClass:spanClass:flags:",
+    "valueType",
+    "windowDidBecomeKey:",
+    "willBeRemovedFromView",
+    "currentLocale",
+    "colorWithDeviceRed:green:blue:alpha:",
+    "setZPosition:",
+    "nameCount",
+    "_textOffset",
+    "prepareDeleteStatementWithCorrelation:",
+    "initWithContainerClassDescription:containerSpecifier:key:index:",
+    "_initWithObserver:property:options:context:",
+    "_activeFileListViewForResizing",
+    "updateTheaterButtonWithActive:",
+    "scrollLineDown:",
+    "setupImageLayer",
+    "_userSetCurrentItemsToItemIdentifiers:",
+    "_commitEditingWithSuccessInvocation:failureInvocation:",
+    "_updateAccumulator:",
+    "_accessRef",
+    "hasSuffix:",
+    "setViewSize:",
+    "_openFile:withApplication:asService:andWait:andDeactivate:workaroundNonAEAwareApp:",
+    "_shouldAttemptIdleTimeDisposeOfLiveResizeCacheWithFrame:",
+    "_textColorForSegment:",
+    "_syncSwatchSizeToSavedNumVisibleRows",
+    NULL,
+    "gizmoHitTest:",
+    "adjustFrameOriginX:",
+    "transformBy:",
+    "resultData",
+    "shouldUseOriginalImageToCacheNiceImageWithSize:",
+    "_scriptClassTerminologyForName:",
+    "sharingPreviewPanel",
+    "_minYResizeRect",
+    "_partAtPoint:inFrame:",
+    "_genericMutableSetValueForKey:withIndex:flags:",
+    "_writeSummaryData:",
+    "responseHeaders",
+    "replaceLabelAtIndex:withLabel:",
+    "createGrids",
+    "setAuthenticationType:",
+    "scrollScheduleStep",
+    "lineToX:andY:",
+    "_dstDraggingExitedAtPoint:draggingInfo:stillInViewBounds:",
+    "selectDirectoryResultRow:subrow:byExtendingSelection:",
+    "CVOpenGLTextureCache",
+    "initWithCertificate:trust:parse:",
+    NULL,
+    "writeMetadataToFile:error:",
+    "prepareEndsWith:",
+    "setPrimitiveEmail:",
+    NULL,
+    "currentSearchIndex",
+    "removeFontDescriptors:fromCollection:",
+    "_trackMouse:inNode:bounds:",
+    "filterWithFilter:connectionID:",
+    "captureOutput:didOutputVideoFrame:withSampleBuffer:fromConnection:",
+    "changeColor:",
+    "nts_SetValueInTemporaryCache:forProperty:",
+    "resumeExecution",
+    "defaultPixelFormat",
+    "clearInput",
+    "initWithType:",
+    "_createCert:privKey:keychain:",
+    "_allValues",
+    "textEncodingName",
+    "stopSpeaking",
+    "_recursivelyAddItemsInMenu:toTable:",
+    NULL,
+    "pickGroupAtPoint:",
+    "setCocoaVersion:",
+    "initWithRequest:allowRedirections:",
+    "sharedSpellChecker",
+    "_storeConfigurationChanged:",
+    NULL,
+    "nts_RemoveSubgroup:fromGroup:",
+    NULL,
+    "_saveVisibleFrame",
+    "imageHasChanged",
+    "handleKeyboardEvent:callRef:",
+    "displayViewForPluginView:",
+    "setLocations:startingGlyphIndexes:count:forGlyphRange:",
+    "numberWithUnsignedChar:",
+    "databaseChangedExternally:",
+    "_setNeedsDisplayForItemIdentifierSelection:",
+    "_colorSpaceForColorArray:",
+    "initWithMachPort:",
+    "_web_isCaseInsensitiveEqualToString:",
+    "hideContainerForItem:",
+    "pixelFormatM_Ih",
+    "options",
+    "_setHasShadow:",
+    "_aquaColorVariantChanged",
+    "alternativeTypeDescriptions",
+    NULL,
+    "knobLayerFlags",
+    "invalidateAttributesInRange:",
+    NULL,
+    "_dispatchRequestInfo",
+    "_generateSQLForConstantValue:inContext:",
+    NULL,
+    "_referenceBindingValueAtIndex:",
+    NULL,
+    "_writeColorsToLibrary",
+    NULL,
+    "setDefaultValue:forInputKey:",
+    "_headerWithName:",
+    "unschedule:mode:",
+    "isDescendantOf:",
+    "control:textShouldBeginEditing:",
+    "setAutoscroll:",
+    "__ivar_setTrackingCell:",
+    NULL,
+    "deserializeServers:",
+    "connectedPort",
+    "_removeWindow:",
+    "ibSetSampleURL",
+    NULL,
+    "formatDescriptionWithFigFormatDescription:",
+    "_portForPoint:inNode:bounds:",
+    "targetTrackForInsertFromTrack:",
+    "activeDirectoryPassword",
+    "nodeManager",
+    "_setInputIKImage:",
+    "viewForUIConfiguration:excludedKeys:",
+    "enumeratorOfInputImage",
+    "_applySelectionIndexes:toItems:",
+    "setPixelAspectRatio:",
+    "birthDate",
+    NULL,
+    "setInitialValue:",
+    "propertyDefinitions",
+    "editedMask",
+    NULL,
+    "pushNibPath:",
+    "setOriginalImagePath:",
+    NULL,
+    "tabViewItemAtPoint:",
+    "_discardDocumentPreview:",
+    "removePatch:",
+    "_deallocHardCore:",
+    "insertionKey",
+    "rectForIconInCellFrame:",
+    "initWithPropertyNameArray:",
+    "isItemExpanded:",
+    "convertFont:toApproximateTraits:",
+    "parent",
+    "addColumns:",
+    "initWithObserver:keyPath:context:",
+    "preferredRate",
+    "_defaultButtonPaused",
+    "addChildObject:",
+    "_generateToManySQLStringInContext:",
+    "_subsetDescription",
+    "_setContentToContentFromIndexSet:",
+    "_performActionWithCommitEditing",
+    "returnToHomeMonthButtonCellForDatePickerCell:",
+    "nts_InfoWithAddressBook:",
+    "generationCount",
+    "resume",
+    "performanceCounters",
+    "setDecimalSeparator:",
+    "miterLimit",
+    "decodeClassName:asClassName:",
+    "_changeIDsForManagedObjects:",
+    "internalClearSelection",
+    "registerFilterName:constructor:classAttributes:",
+    "webPlugInCallJava:isStatic:returnType:method:arguments:callingURL:exceptionDescription:",
+    "dragMovie",
+    "infoWithType:size:location:",
+    "unsetOnOpenGLContext:unit:",
+    "decObservationCount",
+    "endSubelementIdentifier",
+    "_hasSelectedPatches",
+    "_tileContinuousScrollingBrowser",
+    "_markHasLoadedData:",
+    "usePrimarySourceListStyle",
+    "windowChangedKeyState",
+    "_selectKeyCellAtRow:column:",
+    "_setDidEndSelector:",
+    "directoryServicesServer",
+    "inputConnectionForOutputConnection:",
+    "cellAtPoint:row:column:",
+    "initWithURL:quartzFilter:",
+    "accessibilitySetFrontmostAttribute:",
+    "_selectLastSubfield",
+    "_registerObservingForAllModelObjects",
+    "_growRegistrationCollectionTo:",
+    "windowWillClose:",
+    "makeUID",
+    "alwaysVisibleWhenStopped",
+    "checkCount:",
+    "relationshipKeyPathsForPrefetching",
+    "_sizeFromSubitemsMinSize:maxSize:",
+    "renameList:",
+    "isExpanded",
+    "_allowsActiveInputContext",
+    "redoMenuTitleForUndoActionName:",
+    "_unbind:notifyDelegate:",
+    "_isGapStyleDropTargetForRow:operation:mask:",
+    "setEventHandler:andSelector:forEventClass:andEventID:",
+    "_applyAllValuesFromValueBuffer",
+    "takeStoredValue:forKey:",
+    "recompileSourceOfType:",
+    "_appendWhereClauseForExpressionCollection:",
+    "calcThumbnailSize",
+    "setDescriptor:forKeyword:",
+    "attachmentCell",
+    "_forceRemoveItemFromIndex:",
+    "typeFromFileExtension:",
+    "setDisplaysLinkToolTips:",
+    "performActionForItemAtIndex:",
+    "_cellIsEditableAtColumn:row:",
+    "yAccel",
+    "setBezeled:",
+    "_userSelectTextOfNextCellInSameColumn",
+    "_freeNode:",
+    "_setThumbnailView:",
+    "currentVersionURL",
+    "addDocumentWithURLToIPhoto:commit:",
+    "pixelFormatBGRX8",
+    "getAttributesAndValuesForPlugin:",
+    "_addWindow:",
+    "notifierMap",
+    "imageNamed:fromBundle:",
+    "texturePixelsHigh",
+    "_destroyRealWindow:",
+    "clearDrawable",
+    "groupingLevel",
+    "draggingExited:",
+    "stringWithContentsOfURL:",
+    "_defaultItemIdentifiers",
+    "IKIPArrayByApplyingSelector:",
+    "exportItem:toApplication:",
+    "indexIntoTemplate",
+    "_scheduleHideControlsPanel",
+    "unvalidatedSpecifier",
+    "setOpenGLTextureOffset:",
+    NULL,
+    "queryStringForItems:values:",
+    "shouldShowControlWithID:",
+    "initWithName:appleEventCode:objcClassName:",
+    "_setHasHorizontalScroller:",
+    "isAutodisplay",
+    NULL,
+    "performIntegrityCheck",
+    "nextPrimaryKey64",
+    "_menuRepresentationHasBeenSet",
+    "setScrollMode:",
+    "getDownloadedResource",
+    "mouseDownAction",
+    "leading",
+    "exchange::",
+    "start",
+    "invokeUndefinedMethodFromWebScript:withArguments:",
+    "_isPendingUpdate",
+    "_addUniqueNameOrNames:toNames:",
+    "fieldName",
+    "characterSetWithName:",
+    "updateGroupsSelection:",
+    "_chunkAndCheckGrammarInString:language:usingSpellServer:details:",
+    "initWithTarget:selector:object:",
+    "_accessibilityToolbarItemViewerHelperClass",
+    "membersChanged:",
+    "containsObjectIdenticalTo:",
+    "viewDidUpdateTrackingAreas:",
+    "contact",
+    "mergePolicy",
+    NULL,
+    "allowsNullArgumentWithBinding:",
+    "_setNeedsDisplayInColumn:row:",
+    "localizedNameOfStringEncoding:",
+    "_processRequest:",
+    "_old_encodeWithCoder_NSComboBoxCell:",
+    "setDuration:",
+    "kbVersionString",
+    "setDestinationURL:",
+    "openFile:operation:",
+    "propertyListForType:",
+    "_enclosingClipViewDidChange:",
+    "moveWordLeftAndModifySelection:",
+    "_storeClassForStoreType:",
+    "scheduleProgress",
+    "hasRamLeftToContinueSchedule",
+    "currentTextView",
+    "pixelFormatsWithCompatibilities:pixelColorModel:pixelAlpha:pixelType:",
+    "_getIsExpansionToolTip:",
+    "acceptLastEnteredText",
+    "_equalyResizeColumnsByDelta:resizeInfo:",
+    "newGeneratorWithStatement:",
+    "textViewForBeginningOfSelection",
+    "applicationDelegateHandlesKey::",
+    "reloadGroups",
+    "_removeSubNodesAtIndexes:",
+    "_predicateForSpecificEntity:",
+    NULL,
+    "tooltipStringForPoint:inNode:bounds:tooltipBounds:",
+    "beginSheetModalForWindow:modalDelegate:didEndSelector:contextInfo:",
+    "IKSizeOfTextForWidth:textView:",
+    "initWithCGLayer:",
+    "groupList:includeSpecial:all:subscriptions:readOnly:smart:",
+    "delayedShowcase:",
+    "_shouldTryCoreUIDrawing",
+    "_minYminXResizeRect",
+    NULL,
+    "nts_ShareCount",
+    NULL,
+    "_statusCodeSuccessful",
+    NULL,
+    "imageCropView:didReceiveDraggedImage:",
+    "CA_isDirectoryAtPath:",
+    "_unregisterDynamicToolTipManagerInstance:",
+    "fileListMode",
+    "_eventDelegate",
+    "drawDisclosureGroupTail:inRect:",
+    "_resizeTextViewForTextContainer:",
+    "showStatus",
+    "currentEditor",
+    "changeVector:",
+    "_imageFrame:",
+    "accessibilityAXAttributedStringForCharacterRange:parent:",
+    "selectionShouldChangeInOutlineView:",
+    NULL,
+    "isNetworkUp",
+    "exitFullScreenModeWithOptions:",
+    "_position",
+    "setTimeValue:",
+    "_removeOutputConnectionsForInputConnection:",
+    "cacheFragHandler",
+    "_isLayerBacked",
+    "pathCellClicked:",
+    "setTransform:",
+    "launchedTaskWithLaunchPath:arguments:",
+    NULL,
+    "isToManyKey:",
+    "bundleForClass",
+    "getRotationAngle",
+    "rectForKey:inTable:",
+    "thumbnail",
+    "panelController",
+    "dictionaryRepresentationOfRecordOfClass:tableName:atRow:resultsView:",
+    "removeValueAndLabelAtIndex:",
+    "setHeartBeatCycle:",
+    "QTKitErrorNotification:",
+    NULL,
+    "setExternalReferenceCount:",
+    "standardEffectsForImageState:backgroundStyle:startingFromBaseArt:",
+    "_unregisterDragTypes",
+    "setFileListOrderedByFileProperty:",
+    "validRequestorForSendType:returnType:",
+    NULL,
+    "setDropItem:dropChildIndex:",
+    "propertyType",
+    "scrollBarVisible",
+    "sharingProgressForGroup:showUpdateSharingIndicator:",
+    "_updateNodeList:byAddingNode:",
+    "_autoSelectCallback",
+    "_reloadDataForNode:",
+    "_showBorder",
+    "_validateValuesAreOfDestinationEntity:source:",
+    NULL,
+    "windowWillReturnFieldEditor:toObject:",
+    "setUsePixels:",
+    NULL,
+    "_openRegularCollections",
+    "unselectAllItems",
+    "visitor",
+    "markUniqueIdsAsPlanned:",
+    "removeObject:objectIDMap:",
+    "listDescriptor",
+    "decodeDoubleForKey:",
+    "holesFlavor",
+    "setMagnificationFilter:",
+    "accessibilitySetMinimizedAttribute:",
+    "compositeToPoint:operation:fraction:",
+    "addMultiValues:toProperty:",
+    "_bestRepresentation:device:bestWidth:checkFlag:",
+    "_allocateAuxData",
+    "newObject",
+    "changeBaseWritingDirectionToLTR:",
+    "_realPlaceHolderAttributedString",
+    "keyEquivalentAttributedString",
+    "setChangedValues:",
+    "openHost:user:password:",
+    "unbindLayer:",
+    "isKey:inTable:",
+    "initWithKind:name:stringValue:URI:",
+    "_dataWithConversionForType:",
+    "objectsAtIndexes:",
+    "abortCurrentTask",
+    "valueWithName:inPropertyWithKey:",
+    "strokeOval:color:context:",
+    "closestPixelFormat:outDifference:",
+    "abStringAtRange:inEncoding:",
+    "resizeRightCursor",
+    "rectForPart:",
+    "drawSeparatorItemWithFrame:inView:",
+    "_findWindowUsingRealWindowNumber:",
+    "setDocumentCursor:",
+    "_canAnimateScrolls",
+    "_dismissModeless:",
+    "splitViewWillResizeSubviews:",
+    "registerNodesWithManager:",
+    "dsDataList",
+    "setSelectedDirectoryResults:",
+    "initWithGRL:invocation:withDelay:",
+    "fileExistsAtPath:",
+    "glyphIndexForPoint:inTextContainer:",
+    "inputExtentAtIndexes:",
+    "setBinding:",
+    "_setDrawsWithTintWhenHidden:",
+    "switchLayoutTo:withAnimation:",
+    "countdownView",
+    "registerTasks",
+    "abVCardKoshify",
+    "setMarker:",
+    "outlineView:isGroupItem:",
+    "initWithJPEGFile:options:",
+    "setNameFieldLabel:",
+    "handleSaveScriptCommand:",
+    "textProc",
+    "acceptDroppedFile:",
+    "keyCell",
+    "dataWithBytes:length:",
+    "initWithTranslator:selector:",
+    "setLocalDrag:",
+    NULL,
+    "nts_Disconnect",
+    "_stringWithSavedFrame",
+    "_fromScreenCommonCode:",
+    "setNumSlices:",
+    "createOutputWithPortClass:forKey:attributes:arguments:order:",
+    "iconView:keyDownEvent:",
+    "tableView:writeRowsWithIndexes:toPasteboard:",
+    "_readColorIntoRange:fromPasteboard:",
+    "captureOutput:didStartRecordingToOutputFileAtURL:forConnections:",
+    "setROISelectorForKernel:jsROIFunction:",
+    "_initializeWithContentsOfDictionary:",
+    NULL,
+    "shouldProceedAfterError:",
+    "comboBoxCell:objectValueForItemAtIndex:",
+    "_titleCellSize",
+    "_desiredLayerSizeMeritsTiledBackingLayer:",
+    "setRemoteURL:",
+    "isRectangular",
+    "transform",
+    "collatorElementWithName:",
+    "_menusWithName:",
+    "usesLazyFetching",
+    "addFlagsToDictionaryRef:",
+    "connectObject:withKey:toObject:withKey:userInfo:",
+    "_initWithName:fromCMProfileRef:",
+    "newStatementWithEntity:",
+    "engineRef",
+    "_handleSelectionInZoomMode:",
+    NULL,
+    "initWithTitle:",
+    "_handleCursorUpdate:",
+    "decodeArrayOfObjCType:count:at:",
+    "setTextColor:range:",
+    NULL,
+    "fontSize",
+    "CA_pathComponents:",
+    "_mainStatusChanged",
+    "representationOfImageRepsInArray:usingType:properties:",
+    "_setValueWithoutNotification:",
+    "_setupMidnightTimer",
+    "instantiateWithObjectInstantiator:",
+    "mapTableWithKeyOptions:valueOptions:",
+    "mapTableWithWeakToWeakObjects",
+    "URLHandle:resourceDidFailLoadingWithReason:",
+    "selectionRangeForProposedRange:granularity:",
+    "rootNode",
+    NULL,
+    "initWithDir:dsDataNode:",
+    "versionHash",
+    "runPoof",
+    NULL,
+    "provider",
+    "setProgress:",
+    "_registeredClasses",
+    "setViewAnimations:",
+    "_setZoomFactorX:factorY:centerPoint:",
+    "prefixForName:",
+    "setEmpty:",
+    "affectedStores",
+    NULL,
+    "insertObject:",
+    "_setupObserving",
+    NULL,
+    "_propagateCocoaDirtyRectsForView:toCarbonView:",
+    "configValueForKey:defaultValue:",
+    NULL,
+    NULL,
+    "initInternalViews",
+    NULL,
+    "ISS_initWithScheme:host:port:uri:",
+    "_indexForProperty:",
+    "substituteGlyphsInRange:withGlyphs:",
+    "createPixelBufferWithFormat:pixelsWide:pixelsHigh:options:",
+    "accessibilityIsSelectedRangeSettable",
+    "_willPresentSavingError:forOperation:url:",
+    "setCompositingFilter:",
+    "_doScroller:",
+    NULL,
+    NULL,
+    "_useAutoreleasePoolInTrackMouse",
+    "_createStoreFetchRequestForFetchRequest:",
+    "_javaLastError",
+    "handleKeyUp:inNode:view:",
+    "setIsReference:",
+    "canonicalHTTPURLForURL:",
+    "initWithItem:",
+    "documentFragmentForDocument:",
+    "_copyRenderingContextWithGlyphOrigin:",
+    "crayonToRightOfCrayon:",
+    "_drawRectAsLayerTree:",
+    "varianceInitROI:destRect:userInfo:",
+    "toolbarLabelFontSizeForToolbarSize:",
+    "_fullName",
+    "initWithOperatorType:modifier:variant:",
+    "allowedValueBindingMask",
+    "advancePastEOL",
+    "scheduleSyncPageIndex:",
+    "descriptorForKeyword:",
+    "_shouldUseSecondaryHighlightColor",
+    "descriptionWithCalendarFormat:timeZone:locale:",
+    "_reallyDoOrderWindow:relativeTo:findKey:forCounter:force:isModal:",
+    "insertValue:inPropertyWithKey:",
+    "_postBoundsChangeNotification",
+    "_addCells:",
+    "_moveTexturesFromContext:toContext:",
+    "checkBufferSize",
+    "hitTest:fromLayer:",
+    "isUndoing",
+    "_nibName",
+    NULL,
+    "writeBOSNumString:length:ofType:scale:",
+    "CAML_supportedClass",
+    "isSheet",
+    NULL,
+    NULL,
+    "displayNameForKey:value:",
+    "contentsGravity",
+    NULL,
+    "removeRecord:",
+    NULL,
+    NULL,
+    "standardEffectsForImageWithCocoaName:state:backgroundStyle:",
+    "_notifyEdited:range:changeInLength:invalidatedRange:",
+    "_queryServerForLockToken:",
+    "removeItemAtPath:error:",
+    "_operatorForType:",
+    "_web_rangeOfURLHost",
+    "_keyEquivalentMapIsDirty",
+    "_doCleanupOnFailure:",
+    "_initWithView:printInfo:",
+    "_initWithStream:data:topDict:",
+    "writeToFileWithAutomaticFormat:",
+    "setOptionsAttributes:string:",
+    "_sendDoubleActionToCellAt:",
+    NULL,
+    "_createAssociationsByDestination:fromSource:forEntityMapping:",
+    "addNode:",
+    "deleteInputForKey:",
+    "deleteRow:",
+    "_internalNextTypeSelectMatchFromIndex:toIndex:forString:",
+    "handlePictureTakenNotification:",
+    "_sendDelegateDidClickColumn:",
+    "_predicateForCustomProperty:comparison:value:label:",
+    "objectDidTriggerAction:",
+    "thicknessRequiredInRuler",
+    "aeteResource:",
+    "_removeObjectForAttributeKey:",
+    "entityForObject:",
+    "folderPath",
+    "disableDelegateMessages",
+    "_setMinPickerContentSize:",
+    "canPaste",
+    NULL,
+    "_browserAction:",
+    "_updateMetalBackgroundStyle",
+    "_detatchNextAndPreviousForAllSubviews",
+    "zoomMaxCallback:",
+    "customViewForPanel:withSize:withTypes:popupExtension:saveType:saveCreator:optionFlags:",
+    "destinationEntityVersionHash",
+    "_setBindingAdaptor:",
+    "customDraggedImage:",
+    NULL,
+    "_cacheRepresentation:toSizeInPixels:stayFocused:",
+    "_currentFamilyName",
+    "shadowFrom:red1:green1:blue1:alpha1:red2:green2:blue2:alpha2:opacity:",
+    NULL,
+    "_cycleDrawersBackwards:",
+    "setUpFieldEditorAttributes:",
+    "_userSelectSingleColumn:",
+    "fitToScreen",
+    "destinationAlias",
+    "docFormatFromRange:documentAttributes:",
+    "orderOut:",
+    "_updatePredicateFromRows",
+    "session:storeAuthChallenge:forURL:",
+    "_createNaughtDelegate",
+    "initWithDir:value:",
+    "transferMode",
+    "_importThreadContinued:",
+    "popTopView",
+    "addStringToRecentReplaceStrings:",
+    "doAddAnnotaion:",
+    "URL:resourceDidFailLoadingWithError:",
+    "nicestRenderingProgress",
+    "interiorBackgroundStyleForSegment:",
+    "_deviceLineToPoint:",
+    "_hasTiledBackingLayer",
+    "_init::::",
+    "insertionIndexForMember:inSortedMembers:",
+    "removeExpandedNodesStartingWithIndex:",
+    "accessibilityMenuBarAttribute",
+    "pdfPageCharIndexToCGPageRefIndex:",
+    "_convertRect:toPos:andLen:",
+    "_expressionWithSubstitutionVariables:",
+    "_setTarget:",
+    "propertyValuesWithKey:addressBook:",
+    "keyToIndex:",
+    NULL,
+    NULL,
+    NULL,
+    "_drawTitleBar:",
+    "_old_writeColorsToGlobalPreferences",
+    "viewWithFrame:forView:characterIndex:layoutManager:",
+    "applyFunctionOnSubpatches:context:recursive:",
+    "_resizeViewToFit:",
+    "setOutputFormat:",
+    NULL,
+    NULL,
+    "generateSelectIntermediateInContext:",
+    "setDestinationOptions:",
+    "vertPass9ROI:destRect:",
+    "_cellOrControlForObject:",
+    "updateButtonState",
+    "_setCurrentListLevel:",
+    "scrollRectToVisible:inScrollView:animate:",
+    "deleteSelection",
+    "decodeLongForKey:",
+    "removeRowsAtIndexes:includeSubrows:",
+    "edge",
+    "_volumeIsLocalForRefNum:",
+    "createTransformedImage:",
+    "migrateStoreAtURL:toURL:storeType:options:withManager:error:",
+    "browser:selectCellWithString:inColumn:",
+    "_segmentedControlDidChangeHighlightDuringTracking:",
+    "setReservedThicknessForMarkers:",
+    "entityMigrationPolicyClassName",
+    "_setPreviousNibBindingConnector:",
+    "addressBookCoreDataDatabaseFile",
+    "_clipIndicatorIsShowing",
+    "_rowsChangedByLastExecute",
+    "_handleDisabledNodeClicked:",
+    "_dismissModalForTerminate",
+    "_needsHighlightedTextHint",
+    "cachedImagePathForEmail:",
+    "_containerViewOfColumns",
+    NULL,
+    "setCocoaSubVersion:",
+    "layoutManager:shouldUseTemporaryAttributes:forDrawingToScreen:atCharacterIndex:effectiveRange:",
+    "setEnabled:",
+    "sortingLastName",
+    "preferredFilename",
+    "_lastDragDestinationOperation",
+    "_checkInList:listStart:markerRange:emptyItem:atEnd:inBlock:blockStart:",
+    "qualityHint",
+    "decimalNumberHandlerWithRoundingMode:scale:raiseOnExactness:raiseOnOverflow:raiseOnUnderflow:raiseOnDivideByZero:",
+    "itemRolledOut",
+    "didLoadNib",
+    "matchIndexForPerson:withPieces:",
+    "sizeHeightToFit",
+    "RTFFromRange:documentAttributes:",
+    "_userInsertItemWithItemIdentifier:atIndex:",
+    "_createDefaultOrUnflattenPrintSettingsIfNecessary",
+    "_collapseButtonOrigin",
+    "containerSpecifier",
+    "writeSelectionToPasteboard:type:",
+    "accessibilityIsHiddenAttributeSettable",
+    "setTextContainer:forGlyphRange:",
+    "first",
+    "setUsesAlternatingRowBackgroundColors:",
+    "addTimeInterval:",
+    "supportsTransformation",
+    "_adjustedFrameForSaving:",
+    "countKeyPath",
+    "decimalNumberWithString:",
+    "orderedIndex",
+    "setControlTint:",
+    "croppedImageFromOriginalImage:cropInfo:cropSize:outputSize:bgColor:",
+    "setFinished:",
+    "_accessibilityGrowBoxRect",
+    "setACEs:",
+    "closeShowcasedMenu:",
+    "vramBindedRange",
+    "current",
+    "_availableContentRectForCellFrame:isFlipped:",
+    "unlearnWord:",
+    "_sizeMatrixOfColumnToFit:",
+    "retainedDataForObjectID:withContext:",
+    "cachedResponseIsValid:",
+    "updateRecentPicture:setCropInfo:smallIcon:",
+    "vectorWithX:Y:Z:W:",
+    "mipmapCache:didLoadMipmap:withUID:",
+    "facingPageForPage:",
+    NULL,
+    NULL,
+    "_drawRepresentation:",
+    NULL,
+    "enumerationDescriptionFromName:implDeclaration:presoDeclaration:",
+    NULL,
+    "objectForDatabaseKey:",
+    "_initWithScriptIDNoCopy:",
+    "_moveFullscreenViewToView:",
+    "_primitiveDeleteGlyphsInRange:",
+    "didChangeExpandedNodes",
+    "characterIndexForPoint:",
+    "createDictionaryRef",
+    NULL,
+    "textView:draggedCell:inRect:event:",
+    "_windowDidOrderOnScreen:",
+    "restartTasks",
+    NULL,
+    "contentCountWithEditedMode:",
+    "setAutoPositionMask:",
+    "initForKeys:",
+    "_rangeForUserBaseWritingDirectionChange",
+    "scalable",
+    "lockForWriting",
+    "abDidRevertFromBackupCompleteResetContextAndUnlock:",
+    "showsLockButton",
+    "_movieIdle",
+    "alwaysShowNode:inDirectory:selectIfEnabled:",
+    "sharedInspector",
+    "_createBitmapImageRepFromCGRepresentation",
+    "_endLiveResize",
+    "resizeUpCursor",
+    "registerRow:forObjectID:",
+    NULL,
+    "emptyAttributeDictionary",
+    "hasTitleBar",
+    "setProperty:forKey:",
+    "_endInsertionOptimizationWithDragSource:force:",
+    "cameraNotConnectedText",
+    "enableDelegateMessages",
+    NULL,
+    "_createOutputPortForTimeLineIndex:",
+    "_titleWidth",
+    "_informationForFont:glyphTable:positionTable:",
+    "fixupDirInfo:",
+    "startPeriodicEventsAfterDelay:withPeriod:",
+    "initWithContentsOfURL:options:",
+    "selectionWillChange",
+    NULL,
+    "cancelQuery",
+    "controlsDidLayoutWithWidth:oldWidth:",
+    "retainArguments",
+    "_getAuxData",
+    "setSourceDimensions:",
+    "_browser:keyEvent:inColumn:",
+    "elementWithName:URI:",
+    "lockIsNotValid:",
+    "createCharacterSets",
+    "customDraggedImageLocation:",
+    "_processMetadataForDocument:",
+    "htmlStringForAttachment:atIndex:",
+    "DSQueryComponents",
+    "_copyCertificateFromPublicKeyHash",
+    "_setDrawsAsNavigationBar:",
+    "_frameForLayer:inBounds:",
+    "_typeDescriptionForAppleEventCode:",
+    "_fsRefValue",
+    NULL,
+    "directory",
+    "performDragOperation:",
+    "setPreferredBackingLocation:",
+    NULL,
+    "_addWindowsMenu:enabled:",
+    "ruleEditor:parentCriterion:compareCriterion:withLocalizedDisplayValue:toCriterion:withLocalizedDisplayValue:",
+    "red",
+    "enable:",
+    "otherMouseDraggedDelegate:",
+    "drawInContext:drawSelection:",
+    NULL,
+    "_growWindowReshapeContentAndToolbarView:animate:",
+    NULL,
+    "_isResizable",
+    "_inlinePreviewDidChangePlaying:",
+    NULL,
+    "colorWithRed:green:blue:alpha:",
+    "accessibilitySelectedRange",
+    "getCString:maxLength:range:remainingRange:",
+    "CA_JSClassName",
+    "autosavingFileType",
+    "setCellsHaveSubtitle:",
+    "_dynamicColorsChanged:",
+    "_setTitle:",
+    "controller",
+    "newFetchedPKsForSourceID:andRelationship:",
+    "_addMarkersToList:range:",
+    "setContentsGravity:",
+    "currentPreviewView",
+    NULL,
+    "_edge",
+    "_adjustedSizeFromSize:withMinSize:maxSize:ratio:deltaPosition:",
+    "_resetRefCount:",
+    "shouldArchiveValueForKey:",
+    "_audioChannelRange",
+    "addRecord:",
+    "convertRect:fromLayer:",
+    "dataReferenceAtIndex:",
+    "rangeOfGraphicalSegmentAtIndex:",
+    NULL,
+    "initWithManagedObjectModel:configurationName:",
+    "minimizeWindow:",
+    "adjustToPDFView:subIndex:",
+    NULL,
+    "ISS__ay_performSelector:inThread:",
+    "createCommonNotificationUserInfoDictionary",
+    NULL,
+    "connectionMediaTypes",
+    "retainCaches",
+    "cellWithTag:",
+    "synthesizerIsRetained",
+    "minimumDecimalNumber",
+    "initWithRepresentedObject:treeController:",
+    "_clearSelectedCell",
+    NULL,
+    "formatterBehavior",
+    "_displayedDocumentPreview",
+    "_isGenericProfile",
+    "_moveSource:toDestination:",
+    "loadDidSucceed",
+    "_prepareForReloadChildrenForNode:",
+    "isInputTopLine",
+    "wrapROI:forRect:",
+    "willBecomeVisibleNotification:",
+    "_web_compareDay:",
+    "setCanCycle:",
+    "_specifiesMultipleIndexedObjectsPerContainer",
+    "_cfPasteboard",
+    NULL,
+    "findProxyAuthenticationForRequest:",
+    "_autosaveRecentSearchList",
+    "matchesHostNameFromLockDictionary:",
+    "setPathStyle:",
+    "minimalFormInContext:ofPredicates:",
+    "_applyValueTransformerToValue:forBindingInfo:reverse:",
+    "_prepareHelpWindow:locationHint:",
+    "_autoExpandFlashOnce",
+    "setLoopMode:",
+    "parseABDATE",
+    "removeSharedTexturesWithOwner:",
+    "dispatchPropertyChanged:",
+    "initWithNS:andTag:",
+    NULL,
+    "_userMoveItemFromIndex:toIndex:",
+    NULL,
+    "accessibilityElementWithParent:",
+    "initWithMemoryCapacity:diskCapacity:diskPath:",
+    NULL,
+    "sharedWindow",
+    "loadServersFromDefaultsFile",
+    "_configureAutoVacuum",
+    "targetForAction:to:from:",
+    "_isRunningModal",
+    "filterView",
+    NULL,
+    "lockForReadingWithExceptionHandler:",
+    "setCompositingOperation:",
+    "removeMetadataForKey:",
+    "_batchCollapseItemsWithItemEntries:collapseChildren:clearExpandState:",
+    "_helpButton",
+    "nonNullValueForKey:inDictionary:",
+    "_setOriginalFileInfoFromFileAttributes:",
+    "removeItemWithTitle:",
+    "drawViewInRect:",
+    "_setFocusing:",
+    "_setButtonType:adjustingImage:",
+    "_cancelAllOperations",
+    "_importPeople:",
+    "isTypeNotExclusive:",
+    "_tryToCreateCGImageRepFromNonCGFile:",
+    "shouldEnableControl:withID:",
+    "userName",
+    "getPrintOperationForPrintInfo:autoRotate:",
+    "isAlias",
+    "_sizeToFitTextFields",
+    "initWithType:size:",
+    "clearSelectionPath",
+    "_managedProxy",
+    "_matchesCharacter:",
+    NULL,
+    "cache",
+    "descriptionForInstanceMethod:",
+    "_itemAtLabelIndex:",
+    "referenceInstance",
+    "selectSearchResult:",
+    "_closeFlags:openFlags:inString:",
+    "_menuOwnerCanUseMenuWhenModal",
+    "ikImageLayer",
+    "removeCharactersInRange:",
+    "clearDirectoriesSelection",
+    "_setBulletCharacter:",
+    "defaultConnection",
+    "pageFromPageDictionary:",
+    "menuHasKeyEquivalent:forEvent:target:action:",
+    "switchImage:",
+    "_minXTitlebarButtonsWidth",
+    "setPrimaryIdentifier:",
+    "setWidth:ofColumn:",
+    "initWithTimeInterval:sinceDate:",
+    "imageForControlTint:",
+    "_blockSafeRangesForRange:",
+    "_entityForName:",
+    "needsToRemainInViewHierarchy",
+    "addTextTrack:atTimeRanges:withAttributes:error:",
+    "_realmForURL:",
+    "_setFinalSlideLocation:",
+    "_importFile:",
+    "_clipViewAncestorDidScroll:",
+    "_mergeTree:",
+    "_setHighlightedItem:",
+    "initWithTexture:size:isDest:",
+    "leftArrowPathInRect:",
+    "prepareForSave:",
+    NULL,
+    "_multipleMutableArrayValueForKeyPath:atIndexPath:",
+    "accessibilityIsProxyAttributeSettable",
+    NULL,
+    "addRepresentations:",
+    "setCurrentEntity:",
+    "_beginListeningForPowerStatusChanges",
+    "setSizesPreviewToFit:",
+    "__oldnf_getObjectValue:forString:errorDescription:",
+    "_setView:enabled:",
+    "_perThreadHandlingStack:",
+    "_readRecentDocumentDefaultsIfNecessaryForKey:",
+    "getAttribute:range:allowBinary:",
+    NULL,
+    "originalImageSize",
+    "registeredStoreTypes",
+    "incrementButtonWithParent:",
+    "_deleteConfirmSheetDidEnd:returnCode:contextInfo:",
+    "_availableSettings",
+    "addTimerToModes",
+    "undoer",
+    "_requestAnyEditableState",
+    "_didHideDisplayableView:",
+    NULL,
+    "_propertyDescriptionForAppleEventCode:checkSubclasses:",
+    NULL,
+    NULL,
+    "setObject:",
+    "_computeExecutablePath",
+    "_removeSystemUIModeHandler",
+    "resetAllPorts",
+    "contentFill",
+    "shapeFillMode",
+    "isWindowInFocusStack:",
+    "interval",
+    "selectionInProgress",
+    "setIndex:ofKey:",
+    "loadSuitesFromBundle:",
+    NULL,
+    "resetCounter",
+    "_readFontIntoRanges:fromPasteboard:",
+    "_categories",
+    "_old_configureAndDrawImageWithRect:cellFrame:",
+    "removeProperty:",
+    "sizesPreviewToFit",
+    "handleWindowEvent:callRef:",
+    "trackWithQuickTimeTrack:error:",
+    "initWithUpper:attribute:",
+    "_drawDropHighlightOffScreenIndicatorPointingLeftAtOffset:",
+    "_drawRemainderArea",
+    "_defaultLineHightForUILayout",
+    NULL,
+    "_baselineDelta",
+    "setWindowController:",
+    NULL,
+    "certStatus",
+    "send",
+    "freeFormLayoutMode",
+    NULL,
+    "captureOutput:willStartRecordingToOutputFileAtURL:forConnections:",
+    "_loadUsingLibXML2",
+    "updateCurrentBrowsingNodePathWithCurrentDirectoryNode:",
+    "flags",
+    "_setStructure:",
+    "_urlStringWithScheme:",
+    "addNameValueToDictionaryRef:",
+    "columnCount",
+    "_updateTasksCellsCopy",
+    "nts_HasChangedProperties",
+    "_edges",
+    "initWithFrame:ruleEditorView:",
+    "_isFixedPitch",
+    NULL,
+    "_registerBuiltInFormatters",
+    "_engravedOffsetTextColor",
+    "_invalidatePagination",
+    "_assignObject:toPersistentStore:forConfiguration:",
+    "adjustTableColumns",
+    "respondsToSelector:",
+    "nts_InitWithDictionaryRepresentation:addressBook:",
+    "findEncodingFromCharsetTag",
+    NULL,
+    "_suggestedControllerKeyForController:binding:",
+    "roundSubRect:",
+    "_createAndSendOffsetToPointEvent:",
+    "_webKitBundle",
+    "_setHorizontallyCentered:",
+    "_clearDirtyRectsForLockedTree",
+    "_cycleWindowsReversed:",
+    "_abCompareWithinIntervalFromTodayYearless:",
+    "loadAndRestoreCurrentBrowsingNodePath:selectedNodes:",
+    "segmentProxyFor:parent:",
+    "_unregisterMenuItemForKeyEquivalentUniquing:",
+    "resourceSpecifier",
+    "setRulersVisible:",
+    "_initPanelCommon",
+    "initWithAuthenticationChallenge:sender:",
+    "allowsMultipleSelection",
+    "setWithObject:",
+    "lineJoinStyle",
+    "_integerValueFromObject:",
+    "_bindingAdaptor",
+    "_parseLibXML2Node:",
+    "_shouldShowFocus",
+    "encodePoint:forKey:",
+    "displaysAsBook",
+    "setHighlightedTableColumn:",
+    "findNodeNames",
+    "createCGImage:fromRect:format:",
+    "fetchPropertyValuesWithKey:uniqueId:addressBook:",
+    "newIndexOfOldIndex:",
+    "indexSheet:didClickOnDocumentAtIndex:",
+    NULL,
+    "fetchNoteOutOfRecordWithEmptyTemplate:",
+    "imageFromCGImage:imageProperties:imageState:options:",
+    "mouseTracker:shouldContinueTrackingWithEvent:",
+    "_revertToOldRowSelection:fromRow:toRow:",
+    "addDistributionListEntryToGroup:forMember:distributionListProperty:multiValue:",
+    "__portUpdated:",
+    "resolveMarkerToPlaceholder:binding:",
+    "_updateDocument:withMetadata:",
+    "appleEvent",
+    NULL,
+    "setFileMode:",
+    NULL,
+    "_rangeOfSuffixFittingWidth:withFont:",
+    NULL,
+    "previewView:shouldDisplayView:",
+    "_childrenCount",
+    "_allContexts",
+    "savePreviewHeightInDefaults:",
+    "compositionWithIdentifier:",
+    "setVariableRows:",
+    "_nextTypeSelectMatchFromRow:toRow:forString:",
+    "stopSpinning",
+    "getCharacters:range:",
+    "allowsMixedState",
+    NULL,
+    "speakString:",
+    "shouldIgnoreAction:",
+    "_indexClosestToIndex:equalAllowed:following:",
+    "setDeletesObjectsOnRemove:",
+    "initWithCGSRegionObj:",
+    "_old_initWithCoder_NSTableHeaderView:",
+    "decodeIntoBuffer:size:useZeroBytesForCRC:",
+    "street",
+    "changeDocumentBackgroundColor:",
+    "subIndex",
+    "registerForServices",
+    "enableCursorRects",
+    "initWithCapacity:optionFlags:",
+    "imageBoundingRect",
+    "isEqualToIndexSet:",
+    "setPrintScalingMode:forPrintOperation:",
+    "_waitCursor",
+    "_removeFrameUsingName:domain:",
+    "accessibilitySharedTextUIElementsAttribute",
+    "ancestorSharedWithView:",
+    "allUniqueIdsWithModificationDates",
+    "buttonImagesForButtonState:",
+    "_setupFullscreen",
+    "sharedActor",
+    "preparePublicChangeNotification:privateChangeNotification:couldAffectSyncing:couldAffectSharing:privateTablesChanged:modificationDate:",
+    "pointerArrayWithWeakObjects",
+    "launchABDIfNeeded",
+    "loosenKerning:",
+    "setObservationInfo:",
+    "_isDocWindow",
+    "_createPopUpButtonWithItems:selectedItemIndex:",
+    "_setFocusRingNeedsDisplayIfNecessary",
+    "accessibilityVisibleCharacterRangeAttribute",
+    "canBeConvertedToEncoding:",
+    "_addBinding:toController:withKeyPath:valueTransformerName:options:",
+    "_knowsPagesFirst:last:",
+    "_formatCocoaErrorString:parameters:applicableFormatters:count:",
+    "_uniqueInputPortKey",
+    NULL,
+    "_contentType",
+    "initWithClient:",
+    "isWord:inDictionaries:caseSensitive:",
+    "operatorWithType:modifier:options:",
+    "negativePrefix",
+    "setShouldHideMeCard:",
+    NULL,
+    "removeItem:",
+    "nodeClassDescriptionClass",
+    "noDifference",
+    NULL,
+    "inputImageWrapper",
+    "_protectionSpaceWithKeychainItem:isDefault:",
+    "sortDescriptorPrototype",
+    "inputImage",
+    "serverType",
+    "cleanupNotifications",
+    "_stopError",
+    "_setScaleFactor:",
+    "layoutFlags",
+    "_diskCacheClear",
+    "preload",
+    "_postValueSelectionChangedNotification:",
+    "_setHighlighted:",
+    "pixelAspectRatio",
+    NULL,
+    "bundleForClass:",
+    "_insertionIndexForPerson:",
+    "_registerForDraggedTypes:later:",
+    "setInputElement:",
+    "policies",
+    "_performClick:ignoreMenus:",
+    "_highlightCell:atRow:column:andDraw:",
+    "_computeFirstCompletelyVisibleColumn",
+    "updateFromPrintInfo",
+    "_deleteNode:byEntityName:",
+    "_selectPreviousItem",
+    "openSidebar:",
+    "addHighlightingModeToDictionaryRef:",
+    "textView:shouldSetSpellingState:range:",
+    "addCellWithSettings:data:intent:",
+    "setRolloverCaption:",
+    "_familyNamesForCollection:",
+    "_web_fileExistsAtPath_nowarn:isDirectory:traverseLink:",
+    "windowSharingType",
+    "validateMipmap:withQuality:",
+    NULL,
+    "nibInstantiateWithOwner:topLevelObjects:",
+    "_setActivationState:",
+    "indexOfItemWithRepresentedObject:",
+    "expect:",
+    NULL,
+    "_carbonWindowClass",
+    "_asScriptTerminologyNameArray",
+    "directoryResultsSelectionChanged:",
+    "setPeriodicFlushThreadState:",
+    "acceptConnectionInBackgroundAndNotifyForModes:",
+    "initWithFetchRequest:",
+    "ISS_URLWithDirtyString:",
+    "initWithControlArray:",
+    "_restoreZoomState",
+    "_setLocationTemporary:",
+    "buttonToolTip",
+    "_glyphGenerator",
+    "fixNotesRulersInRange:",
+    "layoutToFitInMinimumIconSize",
+    "registerExternalData:forSourceObjectID:key:options:andTimestamp:",
+    "_blockAndGetChildrenOfNavNode:",
+    "moveRightAndModifySelection:",
+    "_updateUI:",
+    NULL,
+    "spin",
+    "_rangeOfDaysForMonth:year:",
+    "setupRootLayer",
+    "saveButton",
+    "_restoreMovieEditState:",
+    "_autosaveForRegularQuit",
+    "setDisplayBox:",
+    "connectionsForMediaType:",
+    "removeIndexLabelAtIndex:",
+    "headerColor",
+    "_targetBinding",
+    "decimalNumberByRoundingAccordingToBehavior:",
+    "addIndexInRenderList:",
+    "orderOutPopUpWindow:",
+    "initDeleteWithSession:path:",
+    "_datasourceImageRepresentation",
+    "directImportMode",
+    "_removeInternalRedFromTextAttributesOfNegativeValues",
+    "_enableOrDisableTrackingArea:",
+    "_rollbackTransaction:",
+    "suspendCurrentAppleEvent",
+    "setVideoDataSource:",
+    "localizedStringForComparison:withProperty:",
+    "toolmodeWillChangeFrom:to:",
+    "performClose:",
+    "tableViewSelectionDidChange:",
+    NULL,
+    "initWithRunStorage:",
+    "memberOfInputWhiteParams:",
+    "setColumnsToFetch:",
+    "oldSystemColorWithCoder:",
+    "blendWindow:withNewContentView:duration:delegate:",
+    "selectedRanges",
+    "glyphIndexToBreakLineByWordWrappingAtIndex:",
+    "initWithCommandDescription:",
+    "_initWithLoadingConnection:request:response:delegate:proxy:",
+    "startTextTimer",
+    "_diskCacheExecuteWrite:",
+    "_isEnabledTableView",
+    "_createBackgroundFullscreenWindowWithFrame:",
+    "_tileTitlebarAndRedisplay:",
+    "_reallyProcessNotifications:",
+    "_shapeWithCGSRegion:",
+    "outlineView:willCollapseItem:",
+    "setRenderer:",
+    NULL,
+    "positionOfGlyph:withRelation:toBaseGlyph:totalAdvancement:metricsExist:",
+    "rulerViewClass",
+    "_removePropertyListeners",
+    "_postingDisabled",
+    "removeTabViewItem:",
+    NULL,
+    "setUsesFontPanel:",
+    "_loadSuiteDescription:",
+    "targetIconSize",
+    "portForName:host:nameServerPortNumber:",
+    NULL,
+    "_handleFTSEntry:",
+    "indexHelpResults:resultGRLs:",
+    "_volumeSupportsLongFilenamesAtPath:",
+    "_simpleOverflowMenuItemClicked:",
+    "keyTimes",
+    "skipDescendents",
+    "itemRemoved:",
+    "imageBuffer",
+    "_preparedSavePanelForOperation:",
+    "_shouldStealSharedPreviewViewForURL:",
+    "nts_TypeOfProperty:forTable:",
+    NULL,
+    "setDiacriticInsensitiveOption:",
+    "setImagingModeForcedToGWorld:",
+    "setMargin:",
+    "activeConversationWillChange:fromOldConversation:",
+    "canSelectHiddenExtension",
+    "sharedChooseIdentityPanel",
+    "_resizeWeight",
+    "backgroundGray",
+    "selectAllInView:selectionOnly:fontFamily:font:characterStyle:paragraphStyle:",
+    "wantsToBeColor",
+    "textMatchingFieldFrame",
+    "_writeLinkStringInRange:toPasteboard:",
+    "_configureAsSeparatorItem",
+    "setShouldCascadeWindows:",
+    "_getPosition:",
+    "optLock",
+    "highlightWithLevel:",
+    "_layoutHoleDescription",
+    "_doOpenDrawer",
+    "rotateWindow:withNewContentView:direction:duration:delegate:",
+    "redo:",
+    "attributeValueClassName",
+    "hasTrimBox",
+    "shadowOffset",
+    "_configurePageSize",
+    "countOfTitle",
+    "application:receivedEvent:dequeuedEvent:",
+    "listensInForegroundOnly",
+    "_stopWorkThread",
+    "_isLoadingSDEFFiles",
+    "_ctTypesetter",
+    "_setLiveResizeImageCacheingEnabled:",
+    "_printDatasourceWarning",
+    "setInverted:",
+    "_needsModeConfiguration",
+    NULL,
+    "_numberByTranslatingNumericDescriptor:toType:inSuite:",
+    NULL,
+    "fileButton",
+    "_setTempHidden:",
+    "abUIDWithTableName:",
+    "visibleItems",
+    "setTransient:",
+    "accessibilityRoleDescriptionAttribute",
+    "fieldEditor:forObject:",
+    "execute:time:arguments:",
+    "_localizedKeyForKey:",
+    "applicationShouldHandleReopen:hasVisibleWindows:",
+    "copyKeyList",
+    "_ensureContentArrayIsMutable",
+    "setImportedCards:",
+    "allowsUserConfiguration",
+    "setBaseURL:",
+    "_bitmapFormat",
+    "analyzeCurrentGRLReconfiguredWindow",
+    "_autovalidatesItems",
+    "countOfSubNodes",
+    "_makeLeftCellKey",
+    "sizeOfTitlebarButtons:",
+    "segmentStyle",
+    "ignoresMouseEvents",
+    "_setWindowRef:",
+    "_newUnchangedLockedObjects",
+    "_groupRect",
+    "isModal",
+    "initWithReferenceToData:name:MIMEType:",
+    "_generateSQLLikeStringInContext:",
+    "_drawRect:",
+    "_windowWillOrderOnScreen:",
+    "_drawRealTitleWithFrame:inView:",
+    "setVisualBackgroundColor:",
+    "keyWindowFrameShadowColor",
+    "_destroyTimer",
+    "backgroundRed:green:blue:alpha:",
+    "_state",
+    "packageEventRef:",
+    "tokenTextView:shouldUseDraggingPasteboardTypes:",
+    "_controllerEditor:didCommit:contextInfo:",
+    "_setTrackingAreasDirty:",
+    "isBooleanValueBindingForObject:",
+    NULL,
+    "setFirstLineHeadIndent:",
+    "_addMouseMovedListener:",
+    "pointingDeviceSerialNumber",
+    "__unionRect:context:",
+    "searchController",
+    "stringWithContentsOfURL:usedEncoding:error:",
+    "nts_DisplayName",
+    NULL,
+    "_setCurrentDirectoryNode:",
+    "_isGraph:",
+    "roundedRect:withRadius:",
+    "_interviewHorizontalPadding",
+    "showIdentityBadges",
+    "setDimensions:",
+    "saveChanges:",
+    NULL,
+    "showWindows",
+    "fullJustifyLineAtGlyphIndex:",
+    NULL,
+    "resetFirstLastName:",
+    "sourcePatch",
+    "halt",
+    "_updateDrawer:withVisibilityState:",
+    NULL,
+    "_throwIfNotEditable",
+    NULL,
+    "_isUpdated",
+    "setErrorAction:",
+    "drawBackgroundInRect:",
+    "_cellForPoint:",
+    NULL,
+    "_drawDone:success:",
+    "_continueModalOperationPastPrintPanel",
+    NULL,
+    "convertPixelUnitTo3DUnit:",
+    "setMediaBrowserNode:",
+    "updateOptions:",
+    "resourcePath",
+    "setDrawsBackground:",
+    "setFormatterBehavior:",
+    "_startLoadingImage:",
+    "endDate",
+    "removeDecriptorAtIndex:",
+    "textAttributesForPositiveInfinity",
+    "_pasteboardDictionaryForRecords:",
+    "numberOfParameters",
+    "xmlInfoForAttribute:",
+    "generateIntermediatesForFetchInContext:countOnly:",
+    "setMinute:",
+    "editingHasBegun:",
+    "initWithAnnotationDictionary:forPage:",
+    "setFilestreamPosition:",
+    "_messageField",
+    "_noteToolbarDisplayModeChangedAndPostSyncSEL",
+    "setAutomaticallyMakePreviewFirstResponder:",
+    "nts__fullNameIncludingAuxiliaryElements:",
+    "representationUsingType:properties:",
+    NULL,
+    "booleanValue",
+    "markPersonAsViewed:secondTry:",
+    "_dictionaryForSerialNumber:remove:clear:",
+    "_saveUserKeyUsageExtPanelValues",
+    "_dynamicToolTipsEnabled",
+    "copyRuler:",
+    "inputs",
+    "appendOrderByClauseToSQL",
+    "apply:to:options1:options2:",
+    "defaultHandler",
+    "_familyName",
+    "resizeUpDownCursor",
+    "addOrNestTable",
+    "groupsSelectionChanged:",
+    "accessibilityIsChildrenAttributeSettable",
+    NULL,
+    NULL,
+    "charRefToUnicode:",
+    "doubleClickInString:atIndex:useBook:",
+    "_hasKeyboardFocusInTabItem:",
+    "isPartialStringValidationEnabled",
+    NULL,
+    "_retainedPrimaryKeyNumberForObjectID:",
+    "character:hasProperty:",
+    "imageFrameForCellFrame:",
+    "_editCustomLabels:",
+    "_keyPathExpressionForString:",
+    "_mutableStringClass",
+    NULL,
+    "automaticallyPreparesContent",
+    NULL,
+    "memberSelectionChangedInPeabody:",
+    "descriptionWithLocale:",
+    "portClass",
+    "setSelectionInfo:",
+    "addObserver:selector:name:object:suspensionBehavior:",
+    "isEqualToAttributedString:",
+    NULL,
+    "_setWindow:",
+    "IKTemporaryStoredIntValue",
+    "sharedRegistry",
+    NULL,
+    "unhideWithoutActivation",
+    "_nonIgnoredDetailsForGrammarString:details:inSpellDocumentWithTag:",
+    "commandDescriptionWithAppleEventClass:andAppleEventCode:",
+    "_dropsIndentWhenImmediatelyBelow",
+    "scriptingIsGreaterThan:",
+    "selectItemsInRange:",
+    "cookieWithCFHTTPCookie:",
+    NULL,
+    "validationWarnings",
+    "continueTrackingWithEvent:",
+    "_aquaScrollerBehaviorChanged:",
+    "elementWithRole:parent:",
+    "setOutputCount:",
+    "_addMapping:forConfigurationWithName:",
+    "removePortsFromRunLoop:",
+    "_removeWindowRef",
+    "numberOfGlyphs",
+    "setSerializedValue:forKey:",
+    "_drawHeaderOfColumn:",
+    "nextValidKeyView",
+    "_typeSelectUndoLastSearch",
+    "_focusRelinquished",
+    "_predicateFromRowItem:",
+    "localizedSummaryItems",
+    "calculate:::",
+    "initWithList:",
+    "findString:inBook:",
+    "deleteCorrelation:",
+    NULL,
+    "popUpMenu:atLocation:width:forView:withSelectedItem:withFont:withFlags:withOptions:",
+    NULL,
+    "_canShowGoto",
+    "_hasNonNominalDescriptor",
+    "_cursorRectForColumn:",
+    "_destroyVisualContexts",
+    "_isAnimatingDefaultCell",
+    "removeAllAppearanceStreams",
+    "initWithNewPerson:selectedGroup:addressBook:",
+    "setAllowsMultipleSelection:",
+    "baseClass",
+    "setClippedItems:",
+    "_releaseCIContext",
+    "initWithData:range:",
+    "disableUpdates",
+    "_setErrorWithEvaluatedObjectSpecifier:",
+    NULL,
+    "_setResultRequired:",
+    "objectSpecifier",
+    "_currentBranchImage",
+    "hasViewControls",
+    "_impl",
+    "_createTransformedImage:definition:",
+    "_activeConnections",
+    "displayedMemberMatching:inPeople:",
+    "_copyRenderLayer:flags:",
+    "selectRowIndexes:byExtendingSelection:",
+    "_maxXTitlebarResizeRect",
+    "_userCanSelectRow:withNewSelectedIndexes:",
+    "pixelFormatRGBf",
+    "_isFirstResponder",
+    "_web_backgroundRemoveFileAtPath:",
+    "_messageColor",
+    NULL,
+    "nodesForXPath:error:",
+    "_addBindVarForConstVal2:inContext:",
+    "expandedNodesForObservedNode:",
+    "methodArgSize:",
+    "_drawImageInRect:",
+    "selectionColor",
+    "_releaseDNSNamesArray",
+    NULL,
+    NULL,
+    "_replyToLaunch",
+    "_loadUIIfNecessary",
+    "initWithPersistentStore:",
+    "imageInfoView",
+    "_canDragRowForClickOnCell:column:row:atPoint:",
+    "_parserContext",
+    "convertBaseToScreen:",
+    "_searchProperty",
+    "removeListener:",
+    "setWindowFrameAutosaveName:",
+    NULL,
+    "isLockedForThreadedOperation",
+    "_startTearingOffWithScreenPoint:",
+    "setAllowsReordering:",
+    "_attributes",
+    "initFromDocument:",
+    "_computeDataFromData:",
+    NULL,
+    "setAutosavesConfigurationUsingIdentifier:",
+    "tabState",
+    "supportsSortingByFileProperties",
+    "removeObjectsInRange:",
+    "hashTableWithOptions:",
+    "_argumentDescriptionsByName",
+    "printFile:ok:",
+    "endProgress",
+    NULL,
+    "setTimeInterval:",
+    "setFrame:",
+    "mappingModelFromBundles:forSourceModel:destinationModel:",
+    "setMultiplier:",
+    "setStateValue:",
+    "handleNotificationOfChildOperation:notification:",
+    "currentMark",
+    "release",
+    "_updateButtonVisibilities",
+    "setEnabledFileTypes:",
+    "isTracking",
+    "_setServerModificationDateString:",
+    "_actionHasBegun:atIndex:",
+    "_hostTime",
+    "imageWithoutAlpha",
+    "_createDefaultOrUnflattenPageFormatIfNecessary",
+    "_showDragError:forFilename:",
+    "resizeRectForBounds:",
+    "_findFirstOne::",
+    "isInputImage",
+    NULL,
+    NULL,
+    "_scaledVideoSizeUsingCleanAperture:",
+    "imageByApplyingState:backgroundStyle:effects:",
+    "startWindowModal",
+    "_setStyleForMetal:",
+    "_keyPathIfAffectedByValueForMemberOfKeys:",
+    "deleteInputPortForKey:",
+    "_maxYminXResizeRect",
+    "_writeForkData:isDataFork:",
+    "setMaxLineHeight:",
+    "sharedView",
+    "filterWithName:",
+    "_setMainMenu:",
+    "initWithImage:keysAndValues:",
+    "isModified",
+    "compositionPickerViewDidStartAnimating:",
+    "_readMultipleTextSelectionRangesForString:fromPasteboard:",
+    "setNumberOfPoints:",
+    NULL,
+    "fixesAttributesLazily",
+    "isFinding",
+    "addOutputUnitsForConnection:toGraph:ofCaptureSession:error:",
+    "childContext",
+    NULL,
+    "prepareForNewPassphrase",
+    "textAttributesForNegativeValues",
+    "updateCacheNode:fromManagedObject:",
+    "_invokeSelector:withArguments:forBinding:",
+    "_isFauxFilePackageNode:",
+    "drawAppearance:withBox:inContext:",
+    "ubertrustPopupSelected:",
+    "_setWindowContextForCurrentThread:",
+    NULL,
+    "makeBTUnavailable:",
+    "initGetInfosWithSession:path:",
+    "shouldEditOnSingleClick:inRow:tableColumn:",
+    "_dispatchCallBack:flags:error:",
+    "preferredFilenameExtensionForType:",
+    "consumeJobEntry:",
+    "documentCursor",
+    "reallyRemoveObject:",
+    "cameraIcon",
+    "isEmptyPerson",
+    "acceptsGlyphInfo",
+    "_beginLoadingImageDataForClient:",
+    "_updateSizesForFrame:",
+    "_setCodeSigningUsage:",
+    "_classDescriptionForName:",
+    "didReorderOrResizeNotification:",
+    "updateOKButton",
+    "createCacheInfoIfNeededForMipmapItem:withUID:",
+    "_createRecentRecord:forPerson:favorite:",
+    "setVerticalMotionCanBeginDrag:",
+    "activeDirectoryUser",
+    NULL,
+    "sizeMode",
+    "isMiniaturized",
+    "setIncludesSubentities:",
+    "menuItemIndex",
+    "_updateObject:observedController:observedKeyPath:context:",
+    "stringRemovingWrappingQuotes",
+    "_newValueForColumn:atIndex:inStatement:",
+    "_returnFirstResponderToWindowFromKeyboardHotKeyEvent",
+    NULL,
+    "getAnnotations",
+    "signatureWithObjCTypes:",
+    "initWithSize:depth:separate:alpha:",
+    "_delegateRespondsTo_typeSelectStringForIndex",
+    "unhide",
+    "failureReason",
+    "initWithSize:",
+    "_bindMipmapItemInRam:ramNode:forCaching:fromDiskOnly:",
+    "portForName:host:",
+    "cellsToRenderIndexes",
+    "setDefaultFixedFontSize:",
+    NULL,
+    "_defaultSortDescriptorPrototypeKey",
+    NULL,
+    "mouseDragged:inView:",
+    "zoomRate",
+    "purgeKeyFrameCaches",
+    "sharedLDAPManagerInstance",
+    "dereferencedEntity:",
+    "setSelected:ifInRect:",
+    "_writePersistentTableColumns",
+    "_coreUILinearValue:",
+    NULL,
+    "waitUntilThreadDone",
+    "SCTUserInterfaceItemIdentifier",
+    "readLocalizedSearchData",
+    NULL,
+    "addToScrap",
+    "_openUnderlineMenu:",
+    "tableView:mouseDownInHeaderOfTableColumn:",
+    "initWithName:code:reason:userInfo:",
+    "abortScrollPrefetchTask",
+    NULL,
+    NULL,
+    "_applyMarkerSettingsFromParagraphStyle:",
+    NULL,
+    "_setNavView:",
+    "calculateBestDateType:andBestValue:forTimeInterval:",
+    "willChangeValueForKey:",
+    "performSelector:onThread:withObject:waitUntilDone:modes:",
+    "_rectOfDraggedColumn",
+    NULL,
+    NULL,
+    "moveItemAtPath:toPath:error:",
+    "arrayWithObjects:",
+    "horizontalBoxAddROI:destRect:userInfo:",
+    "maximum",
+    "updateColorProfile:",
+    "addIMValue:toPerson:",
+    NULL,
+    NULL,
+    NULL,
+    "_hasMainAppearance",
+    "setSelectedAttributes:isMultiple:",
+    "_compatibleWithRulebookVersion:",
+    "setClassAttributes:",
+    "resumeWithSuspensionID:",
+    "initWithArray:copyItems:",
+    "focusedPropertyPath",
+    "setAllowsAnimatedImages:",
+    "clear",
+    NULL,
+    "trailingOffset",
+    NULL,
+    "writeToFile:withAttributes:error:",
+    "_getConfigDictionaryAtURL:",
+    "transformUsingAffineTransform:",
+    "newColorName:",
+    NULL,
+    "_autoPositionMask",
+    "animationManager:processStep:",
+    NULL,
+    "_setBaselineMode:",
+    "_numberOfRowsDidChangeInComboBoxTableView:",
+    "disabledTextColor",
+    "allowsAnyHTTPSCertificateForHost:",
+    "createElement:",
+    "setTabs:",
+    NULL,
+    NULL,
+    "orderFrontStandardAboutPanelWithOptions:",
+    "_predefinedAttributes2ForIndex:depth:",
+    "imageFrameStyle",
+    "alphaChanged:",
+    NULL,
+    "initWithName:directory:",
+    "_handleNameFieldContentsChanged:",
+    "_setAuthenticator:",
+    "baseKeyFrameIndexAtTime:searchBackward:",
+    "miniaturizedSize",
+    "accessibilityRulerMarkerType",
+    "_doSecondPassForMapping:error:",
+    "insertPage:atIndex:",
+    "insertText:replacementRange:",
+    "sharedSurfaceID",
+    NULL,
+    "_retrieveNodeForObjectID:",
+    "insertSegmentOfTrack:timeRange:atTime:",
+    "_callOnMainThread:withArgs:",
+    "isSavedQuery",
+    "indexLessThanIndex:",
+    "_activeCount",
+    NULL,
+    "drawConnection:fromPoint:toPoint:",
+    "delayedPictureTaking:",
+    "calculateKnobRects",
+    "videoFrameProviderForPictureTaker:",
+    "_clearMarkedWidth",
+    "insertParagraphSeparator:",
+    NULL,
+    "joins",
+    "drawWindowBackgroundRect:",
+    "_subviewsExcludingHiddenViews",
+    "openLocalOnlyWithLocalPath:",
+    "_willPresentOpenForPrintingError:forURL:",
+    "initWithSource:",
+    "createArrays",
+    "arrayOfKeys",
+    "requestWithURL:method:",
+    "_ensureNoTransactionOpen",
+    "allPixelFormats",
+    "enableRelease:",
+    "cameraLabel",
+    "setScale:",
+    "_stopDraggingUpdates",
+    NULL,
+    "_validateChangesForSave:",
+    "movieBackgroundColorChanged:",
+    "renderIntoContext:withUserData:",
+    "setEmailNormalized:",
+    "onAnimatedImageTimer",
+    "setPositiveFormat:",
+    "_dateValue",
+    "_scaledDividerThickness",
+    "_referenceBinderForTableColumn:",
+    "_endDrawForDragging",
+    "_setCurrImageName:",
+    "endSheet:returnCode:",
+    "tableColumn:willDisplayCell:row:",
+    "processWhitespace:",
+    "writeToFile:",
+    "relativeCurveToPoint:controlPoint1:controlPoint2:",
+    "mappedIntoVRAM",
+    "_newSubstringWithRange:zone:",
+    NULL,
+    "fileManager:shouldProceedAfterError:linkingItemAtPath:toPath:",
+    "isRedoing",
+    "Y",
+    "sound",
+    "frameForPopUpWithOldFrame:cellFrame:controlView:",
+    "_ql_layoutSublayers",
+    "blurVerticalPass5ROI:destRect:",
+    "deselectColumn:",
+    "setObject:forKey:atIndex:",
+    "_shouldAllowAutoCollapseItemsDuringDragsDefault",
+    "exportItem:fileArray:cleanUpArray:info:",
+    "greenRange",
+    "_collapseAllAutoExpandedItems",
+    "setBackgroundStyle:",
+    "initWithFontAttributes:",
+    NULL,
+    "_selectObjectsAtIndexesNoCopy:avoidsEmptySelection:sendObserverNotifications:forceUpdate:",
+    "setPreferredFilename:",
+    "systemID",
+    "genericGrayColorSpace",
+    "_registerRequiredAEHandlers",
+    "_setHasKeyFocus:",
+    "_drawDropHighlightOnRow:",
+    "toolbar:itemForItemIdentifier:willInsertIntoToolbar:",
+    "fileURL",
+    "dictionaryForKey:",
+    "startImportCells",
+    "_crackRect:",
+    "slideshowNext:",
+    "configureForAllowsMultipleSelection:",
+    "_makeCollectionRequestPostHandler:",
+    "imageUTType",
+    "nts_People",
+    "setAutoenablesItems:",
+    "maxCellTextAreaSize",
+    "drawTitleOfColumn:inRect:",
+    "remoteObjects",
+    "displayName",
+    "colorWithColorSpace:components:count:",
+    "resetSystemTimeZone",
+    "setCacheData:",
+    "_setEditableTrust:",
+    "_adjustGridRowMargin",
+    "sendDidFail:",
+    "_isRenderingBorder",
+    "URLProtocol:cachedResponseIsValid:",
+    "addJoinForDirectToManyToMany:",
+    "initWithContext:",
+    "visualDrawsMovieBoxBackgroundColor",
+    "setWrapsAround:",
+    "chooseCustomImage:",
+    "main",
+    "_abCompare:ascending:options:",
+    "editor",
+    "exportKey:fromObject:withName:",
+    "_getLocalPoint:",
+    "_serialNumber",
+    "setLayoutManager:",
+    "fileMode",
+    "_colorForNode:",
+    "oldBoundsForBox:",
+    "_cacheRepresentation:stayFocused:",
+    NULL,
+    "failedToGetPassword",
+    "setIsVisible:",
+    NULL,
+    "_setModelsReferenceID:",
+    "_libxml2TreeRepresentation",
+    "highlightSelectionInClipRect:",
+    "registerInternalLayers",
+    "adjustToImageProperties:",
+    "setParentCrayonRow:",
+    NULL,
+    NULL,
+    "initWithExpression:allowToMany:inScope:",
+    "loadFiltersFromDirectory:filterArray:",
+    "extendedAttributesAtPath:error:",
+    "updatePersonPicture",
+    "_apply:context:",
+    "canGrow",
+    "accessibilityIsSubroleAttributeSettable",
+    "_filterAllResourcesIfNeeded",
+    "_getNextResizeEvent",
+    "stopTrackingWithEvent:",
+    "tiltX",
+    "XPath",
+    "controlShadowColor",
+    "__contentUpdated:",
+    "_fileOperation:source:destination:files:",
+    "gotoPosterTime",
+    "initiateDrag:",
+    "provideImageData:bytesPerRow:origin::size::userInfo:",
+    "nullDescriptor",
+    "faultHandlerClass",
+    "_backgroundColor",
+    "_validateSizes:",
+    "attributeForName:",
+    "_endListeningForDeviceStatusChanges",
+    "fontPanelDidChooseSize:",
+    "gridStep",
+    "sharedDocumentPreviewLoader",
+    "_isEnabled",
+    "takeFindStringFromView:",
+    "writeSelectionToPasteboard:types:",
+    "fontPanelDidChooseCollection:",
+    NULL,
+    "stopCurrentTask",
+    "defaultLanguage",
+    "_redisplayAfterExpansionChangeFromRow:withOriginalRowCount:",
+    "physicalSize",
+    "setContentViewMargins:",
+    "_rectOfItemAtIndex:",
+    "editMode",
+    "shouldShowPreview",
+    "loadResourceDataNotifyingClient:usingCache:",
+    "_updateUsageForTextContainer:addingUsedRect:",
+    "initWithDataFile:lockMode:cardClass:snoop:",
+    "insertEntry:atIndex:",
+    "binding",
+    "setTextureID:",
+    "_reconfigureSubviews",
+    NULL,
+    "_setFetchIndex:",
+    "registerForDrags",
+    "multiStatusRequestWithSession:method:path:",
+    "template",
+    "_shouldRestartMovementTracking",
+    NULL,
+    "ownerDocument",
+    "stringWithCString:length:",
+    "emptyRecentPictureWithIcon:",
+    "accessibilityCurrentEditorForCell:",
+    "showPreferencesPanelForOwner:",
+    "_requestTextColor:",
+    "portForName:",
+    "whitespaceCharacterSet",
+    "synchSelectedRows",
+    "_jobDispositionInPrintSession:printSettings:",
+    "endUpdate",
+    "imageWithURL:",
+    "_forceReplaceItemAtIndex:withItem:",
+    "frameRectForContentRect:",
+    "setNextResponder:",
+    NULL,
+    "renderResolutionData:toBitmap:width:height:bytesPerRow:",
+    "_coreUIIsFlippedWithView:",
+    NULL,
+    "inputContextWithClient:",
+    "forceSet",
+    "applySkinClip",
+    "browser:createRowsForColumn:inMatrix:",
+    "mainMenu",
+    NULL,
+    "executeFetchRequest:withContext:",
+    "_akWindowDidResignKey:",
+    "outlineView:validateDrop:proposedItem:proposedChildIndex:",
+    "_setObject:forBothSidesOfRelationshipWithKey:",
+    "startObservingModelObjectTree:",
+    "_computeFirstMostlyVisibleColumn",
+    "_callbackHandler",
+    "pixelFormatCMYK8",
+    "_visibleTableColumnIndexes",
+    "hasUnappliedChanges",
+    "numberOfItemsInImageBrowser:",
+    "removeExtraBackupsForMinimumTimeInterval:maximumTimeInterval:andUpdateList:",
+    "setCorrelationToken:",
+    "viewCIContext",
+    NULL,
+    "_selectNextItem",
+    "_makingFirstResponderForMouseDown",
+    "setSeparator:",
+    "_collections",
+    "_addContentsToDictionary:depth:",
+    "insertText:",
+    "compileAndReturnError:",
+    "_usernameForRealm:URL:",
+    "isEqual:compareIdentifiers:",
+    "_invokeActionByKeyForCurrentlySelectedItem",
+    "_pushTableState",
+    "errors",
+    "setSelectionFrom:to:anchor:highlight:",
+    "setPersistentStoreCoordinator:sourceURL:configuration:metadata:options:",
+    "addRegularFileWithContents:preferredFilename:",
+    "_donePoofing",
+    "mdlog:action:",
+    "scanUpToString:intoString:",
+    "_showHideInputWindow:",
+    "_provideTotalScaleFactorForPrintOperation:",
+    "calendarDisplayedMonthDateComponents",
+    "selectInAddressBook:",
+    "initWithSendPort:receivePort:components:",
+    "excludesPendingChanges",
+    "imageFromURL:imageState:options:",
+    "buildFilterCache",
+    "setQuickTimeMovie:error:",
+    "_clockAndCalendarAdvanceMonth:",
+    "firstChild",
+    NULL,
+    "setFieldsIncludedAreCleared:",
+    "customGroupBox",
+    "_delegate:handlesKey:",
+    "_eventIsOn:eventKind:",
+    "_realCompositeName",
+    "isReflexive",
+    "_scrollColumnsRightBy:",
+    "imageSubtitle",
+    "ikMouseUp:",
+    "migrateSpotlightMetadataFiles:",
+    "morphologyAddROI:destRect:userInfo:",
+    "createThumbnailFromCGImageRef:",
+    "setPrimitiveName:",
+    "_reflectPredicate:",
+    "isEnabledForSegment:",
+    "_reflectDocumentViewFrameChange",
+    "_createQLThumbnailOptions",
+    "nts_RecursiveContainsGroup:",
+    "renderInContext:",
+    "copyImageRepresentationWithFrame:",
+    "testZoomPerformances",
+    "getPassword",
+    "setFilterArray:",
+    "drawBackgroundWithFrame:inView:characterRange:layoutManager:",
+    "_shouldSetHighlightToFlag:",
+    "borderColor",
+    "_keywordsFromString:",
+    "zoomButton",
+    "hidePanel",
+    "convertRectToBase:",
+    "_setCursorRect:index:",
+    "createElementNS::",
+    "_copyCoreUIDialDrawOptionsWithView:",
+    "_exitLibXML2ElementNode:tag:startIndex:",
+    "boundsRectForTextBlock:atIndex:effectiveRange:",
+    "selectedNodesIncludingDirectories",
+    "_verticalDistanceForLineScroll",
+    "_setMaxPK:",
+    NULL,
+    "normalizeWhitespace:",
+    NULL,
+    "sendAction",
+    "setFontSize:",
+    "defaultPlaceholderForBinding:onObjectClass:",
+    "_commonHandleRootOrCurrentDirectoryChanged",
+    "_autosaveSubviewLayoutIfNecessary",
+    NULL,
+    "_zoomToFitSelection",
+    "setSelectedCompositionIndexInsideGrid:",
+    "_selectNextCellKeyStartingAtRow:column:",
+    "formatSummary",
+    "_clientsCreatingIfNecessary:",
+    "_windowExposed:",
+    "imageBrowser:cellWasDoubleClickedAtIndex:",
+    "setRepresentedFilename:",
+    "primaryIdentifierForEntities:",
+    "_initWithContainerClass:keyPath:propertiesBeingInitialized:",
+    "createSnapshotImageOfType:",
+    "_createRef",
+    "dbCache",
+    "putData:toPath:withByteRange:andHeaders:",
+    "URLs",
+    "_endMyEditingAndRemainFirstResponder",
+    "yank:",
+    "preferencesWindowShouldClose",
+    "_diskCacheTruncate:",
+    "revertDocumentToSaved:",
+    "_initRuleEditorShared",
+    "printFormat:arguments:",
+    "_setRegisteredForChildNotifications:",
+    "_encodingCantBeStoredInEightBitCFString",
+    "_discardPreload",
+    "setAcceptsColorDrops:",
+    "stopLoading",
+    "_ensureSelectedImage",
+    "_validateDocumentColor:",
+    "sizeCreditsView",
+    "addResource:withSize:cost:md5List:count:",
+    "_updateInlinePreview",
+    "_lazyLoadQueryDictionariesFromSavedQuery",
+    "_rangeContainerClassDescription",
+    "_generateSQLSubstringWildStart:wildEnd:inContext:",
+    "_parseServicesAvailable:",
+    "effectForWindow:",
+    "getDataAtPath:ifModifiedSince:",
+    "addCertificate:toKeychain:domain:settings:",
+    "_moveAndResizeEditedCellWithOldFrame:",
+    "defaultMiterLimit",
+    "localizedNameForTIFFCompressionType:",
+    NULL,
+    "sourceListImageForState:",
+    "XMLStringSequenceStarted:choiceStarted:appendingToString:",
+    "bottomCornerRounded",
+    "stopShowcase:",
+    "recognizedEvents:",
+    "ignoresAntialiasThreshold",
+    "dataBaseChanged:",
+    "_trackAndModifySelectionWithEvent:onColumn:stopOnReorderGesture:",
+    "_containerRelativeTitleFrameOfColumn:",
+    "_selectedCellsInColumn:",
+    NULL,
+    "writableTypes",
+    NULL,
+    "_newRegisteredSuiteDescriptionForName:",
+    "_initWithCGLPixelFormatObj:",
+    "_canDeselect",
+    "segmentWithIndex:parent:",
+    "_attachmentSizesRun",
+    "_handleCurrentBrowsingNodePathChanged",
+    "_recursivelyPropagateCocoaDirtyRectsForView:toCarbonView:",
+    "_invalidateCachedRect",
+    "removeAllAnimations",
+    "setUid:withDatabase:",
+    "generateThumbnail:",
+    "keyDown:",
+    "IOType",
+    "tableView:heightOfRow:",
+    "_lastJobPageNumber",
+    "__Keynote_NOOP",
+    "_initWithName:fromPath:forDeviceType:lazy:",
+    "glyphWithName:",
+    "_panel",
+    "selectedMembers",
+    "_reactToMatchingInsertions:deletions:refreshed:",
+    "addColorAllowed",
+    "setToolTipForView:rect:displayDelegate:displayInfo:",
+    "setIsZoomed:",
+    "_document:didSave:forScriptCommand:",
+    "_firstEnabledPart",
+    "setCurrentBrowsingNodePath:",
+    "_tpHand",
+    "rectPreservedDuringLiveResize",
+    NULL,
+    "addTextContainer:",
+    "indexOfObjectIdenticalTo:",
+    "margin",
+    "_oldBoundsDuringLiveResize",
+    "_readRulerIntoRange:fromPasteboard:",
+    "hasWritablePropertyForKey:",
+    "importFilter:",
+    "_close:",
+    "defaultFlatness",
+    NULL,
+    "needToExchangeItems",
+    "_compareItemViewOrderFor:and:",
+    NULL,
+    "commandName",
+    "_updateHeaderCellControlView",
+    "initWithIndexes:",
+    "isCIFilterCompatible:",
+    "replaceOccurrencesOfString:withString:options:range:",
+    NULL,
+    "textLists",
+    "widthForLayer:edge:",
+    "baseAffineTransform",
+    "initWithRequest:delegate:",
+    "initWithObjCType:count:at:",
+    "subpathsOfDirectoryAtPath:error:",
+    NULL,
+    "handleMigrationError:inManager:",
+    "autoresizes",
+    "_unhideSheet",
+    "_detachFieldEditorFromWindow:",
+    "_keyboardNavigateToTabByDelta:",
+    NULL,
+    "frameShadowColor",
+    "_displayTemporaryToolTipForView:withString:",
+    "_entityForExternalName:inConfigurationNamed:",
+    NULL,
+    "_indexOfPopupItemForLanguage:",
+    NULL,
+    "setPostsBoundsChangedNotifications:",
+    "colorNameComponent",
+    NULL,
+    "setImageLayer:",
+    "_getArguments:withParameters:",
+    "carbonDelegate",
+    "freeCache",
+    "copyMultiValueWithRecord:withProperty:",
+    "_getTextColor:backgroundColor:",
+    "buttonImageForHeightReference",
+    "doubleForKey:",
+    "initFragmentShaderIfNeeded",
+    NULL,
+    "_stopTearingOff",
+    "_startUsingDevice:",
+    "_presentSheetForError:responder:responderCandidate:delegate:callback:callbackContextInfo:",
+    "descriptionForMethod:",
+    "hasArtBox",
+    "glyphGeneratorForTriplet:makeSharable:",
+    "loadData",
+    "_objectIDClass",
+    "initWithData:bytesPerRow:size:format:options:",
+    "initWithPDFDocument:pageNumber:options:",
+    "isFetchInProgress",
+    "_encodeWithoutNameWithCoder:newStyle:",
+    NULL,
+    NULL,
+    "setMainMenu:",
+    "validateAllMetaDataForceRebuild:",
+    "closeFile",
+    "imageProperties",
+    "uti:conformsToQTType:",
+    "set",
+    "allowedFields",
+    "setupPanel",
+    "tabView:willSelectTabViewItem:",
+    "resetCachesForPeople:groups:maintainSelection:",
+    "_accessibilityPreviousSplitterMaxCoordinate",
+    "showController:adjustingSize:",
+    "_selectorName",
+    "selectedIndexPaths",
+    NULL,
+    "movieFormatRepresentation",
+    "restoreZoomState",
+    "conditionallySetsEditable",
+    "setDetailsDisclosed:",
+    "markupType",
+    "showNodeInCurrentDirectoryWithDisplayNamePrefix:selectIfEnabled:",
+    NULL,
+    "initialKey",
+    "ruler",
+    "windowWillBeginSheet:",
+    "registerForDraggedTypes:",
+    "_setItemViewer:",
+    "defaultDecimalNumberHandler",
+    "_clearSpellingForRange:",
+    "_allPossibleLabelsToFit",
+    "_drawsHorizontalGrid",
+    "_toggleTheater",
+    "setOpenGLTextureRef:",
+    "shapeMode",
+    "_diskCacheExecuteRemoval:",
+    "registerForEdgeChanges:",
+    "_setNeedsDisplayInColumnIndexes:includeHeader:",
+    "titleForIdentifier:",
+    "boundingRectWithExtraEffectsForState:backgroundStyle:",
+    "focusImageAtIndexAndRedisplayIfNeeded:",
+    "setHorizontallyCentered:",
+    "sourceMetadata",
+    "statusString",
+    "crayonToLeftOfCrayon:",
+    "_web_domainFromHost",
+    "shouldCloseDocument",
+    NULL,
+    "shadowWithLevel:",
+    "inputImageAtIndexes:",
+    "owner",
+    "switchCell",
+    "setTimeOffset:",
+    "_setFormats:",
+    "setFormatter:",
+    "policyNames",
+    NULL,
+    "webArchive",
+    "_useUserKeyEquivalent",
+    NULL,
+    "volatileDomainForName:",
+    "gatherROI:destRect:",
+    "_cellIndexesInRect:",
+    "scaleValue:",
+    "subresourceForURL:",
+    NULL,
+    "convertImagePointToViewPoint:",
+    "handleSwitchToDirectoriesFrom:animate:",
+    "objectToken",
+    "setMenuChangedMessagesEnabled:",
+    "_getGlyphIndex:forWindowPoint:pinnedPoint:preferredTextView:partialFraction:",
+    NULL,
+    "_shouldExecuteDelayedAutocomplete",
+    "_updateObject:objectIDMap:",
+    "_serviceList",
+    "_web_stringByTrimmingWhitespace",
+    "_currentlyEditing",
+    "previewSize",
+    "_isFromSDEF",
+    "initWithContentRect:styleMask:backing:defer:",
+    "_nameForCollection:",
+    "minimumLineHeight",
+    "_sslClientAuthUsage",
+    "_proxyUsernameForProxyURL:",
+    "selectedPageIndex",
+    "isComputerNode",
+    "_searchChanged:",
+    "thumbnailOfSize:forBox:",
+    "_setHIView:",
+    "_saveSplitPositionToDefaults",
+    "rawSQLTextForToManyFaultStatement:stripBindVariables:swapEKPK:",
+    "keyForProperty:entityName:entityKey:entityWithValueSel:valueWithEntitySel:",
+    NULL,
+    "updateCellInside:",
+    "activateServer:",
+    "smartInsertAfterStringForString:replacingRange:",
+    "varianceAddROI:destRect:userInfo:",
+    "isButtonBordered",
+    NULL,
+    "_finalize_QCProvider_CoreGraphics",
+    "_toolbarAuxiliary:",
+    NULL,
+    "_sendDelegateSelectRow:inColumn:",
+    "_resetTitleBarButtons",
+    "_updateObservingRegistration:",
+    NULL,
+    "_screenRectContainingPoint:",
+    NULL,
+    "zoomToFitSelection",
+    "_rowArrayCache",
+    "_rawKeyEquivalentModifierMask",
+    "breakLineAtIndex:",
+    NULL,
+    "_evaluateJSString:sourceURL:line:",
+    "_subEffectsForWindow:itemFrame:transitionWindow:",
+    "setAutoUpdates:",
+    "_shouldEditColumn:row:withEvent:",
+    "deserialize",
+    "_openableTypes",
+    "zoomIn:",
+    "userServer",
+    "_autovalidateToolbarItem:",
+    "currentResolvedDirectoryNode",
+    "_validatedStoredUsageForTextContainerAtIndex:",
+    NULL,
+    "writeToFile:withOptions:",
+    "interfaceVersion",
+    "removeAllToolTipsForView:withDisplayDelegate:",
+    "setMember:forKey:",
+    "initWithElementTypeDescription:",
+    "_resetRowEntriesToNewFilter",
+    "gutterOffsetForPageDisplay:",
+    "valueInAttributeRunsAtIndex:",
+    "_createOtherValueSetterWithContainerClassID:key:",
+    NULL,
+    "_minimumSizeForSearchFieldToolbarItem",
+    "crayonToRight",
+    "removeToolTip:",
+    "nonAllowableCharacters",
+    "keyFramesCountForTimeLine:",
+    "zoomInY",
+    "_isScriptingEnabled",
+    "autosavingDelay",
+    "expanded",
+    "setInputModeID:",
+    "_clearTypeAhead",
+    "_init:",
+    "buttonMask",
+    "genericCMYKColorSpace",
+    "indexOfTickMarkAtPoint:",
+    "addNameToDictionaryRef:",
+    "speechFinishedSuccessfully",
+    NULL,
+    "parser:foundCDATA:",
+    "newCreateIndexStatementForColumnWithName:inTableWithName:",
+    "selectedImageBackgroundPiece",
+    "classForKeyedArchiver",
+    "finishDecoding",
+    "scheduledTime",
+    "uniqueMembersInGroups:",
+    "setItemSpacing:",
+    "scriptingMissingValueWithDescriptor:",
+    "addActualSizeButton",
+    "saveToURL:ofType:forSaveOperation:error:",
+    "requestThumbnailOfSize:",
+    "_willPresentPrintingError:",
+    "namespaceForPrefix:",
+    "accessibilityIsVisibleRowsAttributeSettable",
+    "entityDeclarationForName:",
+    "nts_SetCachedRecord:forUniqueId:",
+    "scanHexLongLong:",
+    "_initWithProperties:",
+    "CA_copyJSValue:",
+    "_keyboardNavigateToTabAtIndex:",
+    "drawFromPoint:toPoint:options:",
+    "extractElementPath:",
+    "cycleToNextInputKeyboardLayout:",
+    "reflectScrolledClipView:",
+    "personImageView",
+    NULL,
+    NULL,
+    "setPixel:atX:y:",
+    "removeTimeLine:",
+    "setDeinterlaceVideo:",
+    "pathNameForImage",
+    NULL,
+    "initWithPersistenceStore:",
+    "_managedObjectContext",
+    "objectByApplyingXSLT:arguments:error:",
+    NULL,
+    "fileHFSTypeCode",
+    "visibilityForTimeLine:",
+    "submenuRepresentedObjects",
+    "RTFDFileWrapperFromRange:documentAttributes:",
+    "hasCredentialsForSession:",
+    "needPostNicestDraw",
+    "initWithImageManager:",
+    "noteContentChanged",
+    "_beginMark",
+    NULL,
+    "abdStartedSyncing:",
+    "shouldBecomeAETEPropertyDeclaration",
+    "_postNotificationForEvent:notificationName:parent:",
+    "initWithURL:traverseLink:",
+    "_isForeignObjectExpression:",
+    "contextualMenu",
+    "_isProfileBased",
+    "__validatePosition:context:",
+    "getMarkedText:selectedRange:",
+    "_validatePageNumberView",
+    "guid",
+    "_printSessionForGetting",
+    "ensureLayoutForCharacterRange:",
+    "_progressForAnimation:start:",
+    "setNode:isDirectory:displayState:",
+    "_graphIsInitialized",
+    "usesMenuFormRepresentationInDisplayMode:",
+    "initWithKey:type:appleEventCode:isHidden:presentableDescription:name:",
+    "initWithQueryNode:",
+    "didFireFault",
+    "_sideTitlebarWidth:",
+    "newGroupFromSelection:",
+    "_archiveToFile:",
+    "initWithEntity:toOneRelationship:",
+    "initFromSerializerStream:length:",
+    "_pageHeaderAndFooterTextAttributes",
+    "beginSheetForWindow:modalDelegate:didEndSelector:contextInfo:trust:message:",
+    "initWithFrame:compositions:controller:",
+    "drawHashMarksAndLabelsInRect:",
+    "insertText:client:",
+    NULL,
+    "propertyTypesForClass:withAddressBook:acquireLock:",
+    "windowShouldZoom:toFrame:",
+    "initWithUnsignedShort:",
+    "handlePreviewTextUpdate",
+    "initWithCurrentQDPort",
+    "_nsImage",
+    "previous",
+    "predicateWithLeftExpression:rightExpression:customSelector:",
+    "setOnMouseEntered:",
+    "itemIndex",
+    "countryCode",
+    "initWithDataReference:error:",
+    "quickTimeSampleDescription",
+    "_capture:",
+    "drawLayer:inContext:",
+    NULL,
+    "currentSuiteTerminology",
+    "createThumbnailFromNSFileWrapper:",
+    "setMiniwindowImage:",
+    NULL,
+    "willChangeAttributeForKey:",
+    NULL,
+    "addDirNamed:lazy:",
+    "setFilterPredicate:",
+    "glyphInfoWithGlyph:forFont:baseString:",
+    "_atStartOfTextTableRow:atIndex:",
+    NULL,
+    "namespace",
+    "_verifyQuotesAndParenthesesForRange:",
+    NULL,
+    "dataForPPI:",
+    "tabViewItems",
+    "showNextDocument:",
+    NULL,
+    "deactivateMenuItemsInMenu:",
+    "valueForInputKey:",
+    "remoteContextWithOptions:",
+    "_setAnimateColumnScrollingForAnyEvent:",
+    "documentWasUnlocked:",
+    "_integerValue",
+    "_doUnhideWithoutActivation",
+    "_customizesAlwaysOnClickAndDrag",
+    "_cfCapitalize:",
+    "removeNode:",
+    "argumentsForIvarPortWithKey:",
+    "setCGImageSource:",
+    "_indexOfChosenIdentity",
+    "substringToIndex:",
+    "_verticalScrollerClass",
+    "listResources",
+    "setIgnoreReloadData:",
+    "_checkRequestForStore:originalRequest:andOptimisticLocking:",
+    "connectionUnit",
+    "setUsesEPSOnResolutionMismatch:",
+    "_initWithName:printer:",
+    "certificatesFromPemData:certs:",
+    "numberOfColorStops",
+    "replaceCharactersInRange:withCharacters:length:",
+    NULL,
+    "getPeriodicDelay:interval:",
+    "keyFramesCount",
+    "backgroundLayoutEnabled",
+    NULL,
+    "_cacheTitleForURL:",
+    "_uniqueConnectionKey",
+    "typeInMedia",
+    "containsIndexes:",
+    "thumbnailsDidChange",
+    "_addInputPortWithClass:forKey:attributes:",
+    "setNeverPurgeHint:",
+    "preferredFrameSize",
+    "enoiseROI:forRect:userInfo:",
+    "isAuthorityCertificate",
+    "_dismissWithCode:",
+    "setLayoutType:animate:",
+    NULL,
+    "_maxXminYResizeRect",
+    "autoreverses",
+    "copyDeep",
+    NULL,
+    "_newConflictRecordForObject:originalRow:newRow:",
+    "_minimizeAll",
+    "selectRow:byExtendingSelection:",
+    NULL,
+    NULL,
+    NULL,
+    NULL,
+    "growGlyphCaches:fillGlyphInfo:",
+    "rangeForUserParagraphAttributeChange",
+    "replaceFile:path:",
+    "_drawLabelHighlightIfNecessaryWithFrame:inView:fullHighlight:",
+    "setDisplaysAnnotations:",
+    "doDrawInContext:rect:",
+    "_scrollFieldEditorToVisible:",
+    "tiltY",
+    "abortImportCells",
+    NULL,
+    "setBottomBorderColor:",
+    "_predicateForMessagingAddressService:comparison:value:label:",
+    "setCurrListName:",
+    "_encodeArrayOfObjects:forKey:",
+    "_renderState",
+    NULL,
+    "encodeConditionalObject:",
+    "goForward:",
+    "IDX",
+    "indexesOfString:",
+    "_unionOfSetsForKeyPath:",
+    "calendarFormat",
+    "_setDefaultButtonPaused:",
+    "imageWithSize:",
+    "_audioCompleted2",
+    "_cfTypeID",
+    "_updateTrustValidity",
+    "_valueByTranslatingOSAErrorRangeDescriptor:toType:inSuite:",
+    "initJava1",
+    "scriptingColorDescriptor",
+    NULL,
+    "_layoutUpdated",
+    NULL,
+    "_setContextMenuHighlightColorForRow:",
+    "postFocusChangeEventToQueue:",
+    NULL,
+    "_validItemViewerBounds",
+    NULL,
+    "relativePath",
+    NULL,
+    "_PFMOClassFactoryData",
+    "_setNeedsHighlightedTextHint:",
+    "_lastTableRow",
+    "_setFitToScreen:animate:",
+    "enclosedSubscriptionGroupsForAllGroup:",
+    "_clockAndCalendarKeyDown:inRect:ofView:",
+    NULL,
+    "initWithValues:count:",
+    NULL,
+    "fileOwnerAccountID",
+    "forgetSnapshotsForGlobalIDs:",
+    "convertSizeFromBase:",
+    "responseList",
+    "_scriptingDescriptorOfListType:orReasonWhyNot:",
+    "countOfIndexesInRange:",
+    "_resizeContentsOfMainBox",
+    "setImageFromPath:",
+    "buttonRectangleForResolutionData:",
+    "inspectorForPatch:",
+    "_minYTitlebarButtonsOffset",
+    "addDocumentIconButton",
+    "frameColor",
+    "hashGrow",
+    "relationshipNamed:",
+    "setIntegerValue:",
+    "setCurveHullsEnabled:",
+    "_URLForString:",
+    "worksWhenModal",
+    "_document:didPrint:inContext:",
+    NULL,
+    "_updateEnabledStateForSubviews",
+    "focusedView",
+    "_getEightBitRGBMeshedBitmap:rowBytes:extraSample:reverseScanLines:removeAlpha:",
+    "phoneNumbers",
+    NULL,
+    "_generateSQLForFetchExpression:allowToMany:inContext:",
+    "documentRef",
+    "_willDeleteNodeOutputPort:",
+    "font",
+    "_feContext",
+    "_colorRect",
+    "borderRect",
+    "model",
+    "smartGroupPropertyTypes",
+    "_initWithLibTidyDoc:child:encoding:",
+    "_setButtonImageSource:",
+    "setSuspended:",
+    "canDragRowsWithIndexes:atPoint:",
+    "_NSNibPathForUIItemIdentifier:",
+    "_closeAndDeleteFileAsync",
+    "newWithFilterInfo:upperItem:",
+    "observingBinder",
+    "beginLocalContext",
+    "indexMenuBarDynamically",
+    "subpredicates",
+    "_rightGroupRect",
+    "_scalesBackgroundHorizontally",
+    "isEqualFunction",
+    "_updateCellForDatePreferencesChange:",
+    "_isBooleanTransformer",
+    "lockForThreadedOperation",
+    "displaysEnabledAtRow:",
+    "tableView:nextTypeSelectMatchFromRow:toRow:forString:",
+    "processKeyword:option:keyTran:arg:argTran:",
+    "outlineView:draggedImage:movedTo:",
+    "_windowTitlebarButtonSpacingWidth:",
+    "_cheapItemAtRow:",
+    "flushAllCaches",
+    "undo:",
+    "_shouldCopyItemAtPath:toPath:",
+    NULL,
+    "_nameWithLooseRequiredExtensionCheck:",
+    "nts_RecordFromDictionaryRepresentation:withRecordMapping:addressBook:generateIds:",
+    "_backingCGSFont",
+    "_cancelAllUserAttentionRequests",
+    "_menuForNote:",
+    "getFilterFromFilterArray:",
+    "arrangeInFront:",
+    "setEra:",
+    "setTableView:",
+    "_isRowHeaderColumn:",
+    "highestMipmapItemIndex",
+    "deserializer",
+    "_maxYmaxXResizeRect",
+    "_coreUILinearBarIsFocused:",
+    "beginTrailer",
+    "_elementAttributeRelationship",
+    "_createPatternFromRect:",
+    "_defaultInformation",
+    "_alternateAutoExpandImageForOutlineCell:inRow:withFrame:",
+    "outlineView:didClickOnDisabledCell:forTableColumn:byItem:",
+    NULL,
+    NULL,
+    "_constructRequestForURL:isHead:",
+    NULL,
+    "removeChild:",
+    "birthRate",
+    "fullscreenStatus",
+    "isHidden",
+    "modifierFlags",
+    "questionMarkImage",
+    "showToolbar:",
+    "removeAppleUseCoreUIObject:",
+    "_setErrorExpectedType:",
+    "_blockHeartBeat:",
+    "setPriority:forFlavor:",
+    "setOutputTraced:",
+    "preferredLocalizationsFromArray:forPreferences:",
+    "_attachedCell",
+    "_dropHighlightColorForRow:",
+    "_updateAllLayerPropertiesFromView",
+    "previewViewClassForPreviewType:",
+    "_takeValuesFromTextBlock:",
+    "_getRowHeaderFixedContentRect:rowHeaderScrollableContentVisibleRect:",
+    NULL,
+    "movieWithTimeRange:error:",
+    "baseURLForDocument:",
+    "_presentError:delegate:didRecoverSelector:context:",
+    "isEqualToTimeZone:",
+    "_offsetRelationshipIndex:fromSuperEntity:andIsToMany:",
+    "_drawTextFieldWithStepperWithFrame:inView:",
+    "findString:",
+    NULL,
+    "proxyPortClass",
+    "invalidateLayout",
+    "attributeExists:withValue:",
+    NULL,
+    "_computeHeightOfTop:bottom:",
+    "stringsFromGUIDs:",
+    "accessibilityIsPositionAttributeSettable",
+    "lockObjectStore",
+    "registerNode:withName:",
+    "setDefaultValue:",
+    "minFrameSize",
+    "_colorSelected:",
+    "_increaseContainerReferenceCounter",
+    "pointerID",
+    "killHUD",
+    "_writeParagraphStyle:",
+    "textView:didHandleEvent:",
+    "valueClass:",
+    "commitTransaction",
+    "setMax:",
+    "_showTextColorImmediatelyInObject:mode:",
+    "pageRange",
+    "_setWindowTag",
+    "_blueControlTintColor",
+    "initWithNode:",
+    "clearSearchField:",
+    "appendBytes:length:",
+    NULL,
+    "binders",
+    "_setDrawingToHeartBeatWindow:",
+    "restoreCustomInputPortStates:fromState:",
+    "handleDelegateChangedSelection",
+    "setSelected:forSegment:",
+    "isEmpty",
+    "importFinished",
+    "getName",
+    "_documentWindow",
+    "setIndentationLevel:",
+    "_addEffects:",
+    "initWithDomainName:key:title:image:",
+    "fillAttributesCache",
+    "_aetePropertyDescriptions",
+    "_wsmIconInitFor:",
+    "setUsesUserKeyEquivalents:",
+    "updateQueryNode:",
+    "_scriptTerminologyNameOrNames",
+    "requestWithSession:method:path:",
+    "renderRoundedRect:radius:strokeColor:fillColor:mode:lineWidth:",
+    "invalidateDisplayedMembersListAndNotify:",
+    "fixKeyViews",
+    "_selectCrayon:updateSelection:",
+    "performAction:",
+    "enclosedAreaBounds:",
+    "layoutRectForTextBlock:atIndex:effectiveRange:",
+    "availableMembersOfFontFamily:",
+    NULL,
+    "stringForObjectValue:",
+    "allowsIdentitySelection",
+    "labelRectOfRow:",
+    "status",
+    "accessibilityVisibleCharacterRange",
+    "subscribedPeopleCount",
+    "documentURL",
+    "_buttonCellAccessibilityRoleAttribute",
+    "_restoreSplitPositionFromDefaults",
+    "drawWithFrame:inView:characterIndex:layoutManager:",
+    "_selectItems:inIndexSet:",
+    NULL,
+    "addDefaultTable",
+    "_overlayColorForNode:view:",
+    "_DTDString",
+    "_postRowCountChangedNotificationOfType:indexes:",
+    "countOfInputRampParams",
+    "accessibilityParentAttribute",
+    "prepareUpdateStatementWithRow:originalRow:",
+    "len",
+    "_moveUpAndModifySelection:",
+    "_removeObject:",
+    "setInitialFirstResponder:",
+    "launchApplication:",
+    "slideshowExportToiPhoto:",
+    "_web_fixedCarbonPOSIXPath",
+    "setAudioChannelLayout:error:",
+    "unbind:",
+    "setObjectZone:",
+    NULL,
+    NULL,
+    "pullsDown",
+    "autoscrollWithLocalPoint:",
+    "_coreUIBackgroundDrawOptionsForSegment:withView:",
+    "keyPathsForValuesAffectingValues",
+    "objectInInputExtentAtIndex:",
+    "_allowsSizeMode:",
+    "needsPageControl",
+    "setFrameRate:",
+    "setScreenRect:",
+    "_saveCurrentPanelState:",
+    "_initCurrentThread",
+    "__saveIfReallyEditedWithDelegate:didSaveSelector:contextInfo:",
+    "cacheCurrentDBStatementOn:",
+    "prefersTrackingUntilMouseUp",
+    "application:openFileWithoutUI:",
+    "setSlideshowIndexHandler:",
+    "keyPath",
+    "setObject:forKey:inDomain:",
+    "makeDocumentWithContentsOfURL:ofType:",
+    "fetchWithRequest:merge:error:",
+    "_coreCursorType",
+    "addFieldsToDictionaryRef:",
+    "pixelType",
+    "setReleasedWhenClosed:",
+    "_currentListLevel",
+    "initWithFileName:markerName:",
+    "copyDebugDescription",
+    "modificationDateYearless",
+    "toolbarButton",
+    "ID",
+    "searchResult",
+    NULL,
+    "_drawRelevancyWithFrame:inView:",
+    "_expandRep:",
+    "_presentDiscardEditingAlertPanelWithError:relatedToBinding:",
+    "countForObject:",
+    NULL,
+    "_attributedLabelsFromStringLabels:",
+    "initWithContentsOfFile:usedEncoding:error:",
+    NULL,
+    "_dotMacAccountPasswordFromSystem",
+    "_glyphForFont:baseString:",
+    "setOutlookWebAccessServer:",
+    "_getRequestPostHandler:",
+    "_crackSize:",
+    "_sortedEntitiesForConfiguration:",
+    "nickname",
+    "setAlphaValue:",
+    "imageValue",
+    NULL,
+    "boundsForNode:",
+    "_range:containsPoint:",
+    "_calcWidthsWithMargin:operation:",
+    "setPurgeable:",
+    "addConnection:error:",
+    "_updateCommandDisplayWithRecognizer",
+    "undoManagerForWindow:",
+    NULL,
+    "setForcedContentTypeUTI:",
+    "_removeSubscriptionConfirmSheetDidEnd:returnCode:contextInfo:",
+    "_noteKeyValuePairChangedKey:",
+    "_needsDisplayInRect:",
+    "writeProfilingDataToPath:",
+    "_fullCount",
+    "_postQueryFinishedNotification",
+    "usedRectForTextContainer:",
+    "_setDrawsBackground:",
+    "insertObject:at:",
+    "menuBarHeight",
+    "initWithSuiteName:className:dictionary:",
+    "initWithSearchSliceType:attributeName:",
+    "implementsSelector:",
+    "_glyphAttributesFromEventRef:forString:",
+    "setObscured:",
+    "_presentableDescription",
+    "setScrollYEnabled:",
+    "initWithTextBlock:layoutRect:boundsRect:",
+    "_cachedGlobalWindowNum",
+    NULL,
+    "frameImageAtTime:",
+    "_cgsEventRecord",
+    "runModalOpenPanel:forTypes:",
+    "sortWithSortDescriptors:recursively:",
+    "_parseCharacterAttributesFromElement:attributes:",
+    "_collectResourcesForAge",
+    "requestWithURL:",
+    "titlebarRect",
+    "stopUpdateInsertionAnimation",
+    "_finishedMakingConnections",
+    "shouldPropagateDeleteForObject:inEditingContext:forRelationshipKey:",
+    "_fontWithNumber:size:bold:italic:",
+    NULL,
+    "setToolTip:forCell:",
+    "setString:",
+    "lockButton",
+    NULL,
+    "setOverlay:forType:",
+    "_nextTrackingNum",
+    "canIgnorePopulatingObject:",
+    "shadowRadius",
+    "_findRowObject:startingAtObject:withIndex:",
+    "_mappedFile",
+    "popupFrameForAnnotation:",
+    "initForURL:withContentsOfURL:ofType:error:",
+    "_invalidateDisplayForMarkedOrSelectedRange",
+    "popUpContextMenu:withEvent:forView:",
+    "converterForDatabaseAtPath:",
+    "setUpGState",
+    "byValue",
+    NULL,
+    "_layoutTreeDescription",
+    NULL,
+    "_hiddenTableColumnsAutoSaveName",
+    "allowsKeyedCoding",
+    "carbonNotificationProc",
+    "_initializePredefinedEntities",
+    "restoreRecord:intoGroup:options:",
+    "_getColumn:row:cell:cellFrame:toolTipRect:wantsToolTip:wantsRevealover:atPoint:",
+    "request",
+    NULL,
+    "_initWithDIB:",
+    "_labelColor",
+    "setResizable:",
+    "passwordForUser:",
+    "thumbnailOperationGotThumbnailImage:",
+    "adjustHalftonePhase",
+    "_setNeedsRecalc",
+    "_flashSelectedPopUpItem",
+    "notActiveWindowFrameHighlightColor",
+    "flushPDFWindow",
+    "lockInfo",
+    NULL,
+    "usableParts",
+    "_accessibilityArrowScreenRect:",
+    "connect",
+    "_sortNodesForSave:",
+    "governingAlias",
+    "addItemWithTitle:",
+    "setSampleSize:",
+    "_createAttributeDescriptionForNode:",
+    "removeTextLayer",
+    "sendInv",
+    "_performUserAction:forEvent:",
+    "_copyForCurrentOperation",
+    "ISS__ay_postNotification:inThread:",
+    "setInsertionClassDescription:",
+    "displayNameForVNodeAtPath:",
+    "_imageLevel_setBackgroundColor:",
+    "selectedTabTextColor",
+    "_getBrowser:browserColumn:",
+    "deltaZ",
+    NULL,
+    "unarchiverWillFinish:",
+    "arrayForKey:",
+    NULL,
+    "setMipmapSize:",
+    "sendsWholeSearchString",
+    "representation",
+    "dragPromisedFilesOfTypes:fromRect:source:slideBack:event:",
+    "addedGroups:",
+    "indexAtPosition:",
+    "scheduledRedisplay:",
+    "_getGlyphIndex:characterIndex:forWindowPoint:pinnedPoint:anchorPoint:useAnchorPoint:preferredTextView:partialFraction:",
+    "drawBackgroundForBlock:withFrame:inView:characterRange:layoutManager:",
+    NULL,
+    "parseCharDef:",
+    NULL,
+    "displayBox",
+    "invTransformRect:",
+    "_openChannel",
+    "_old_initWithCoder_NSComboBoxCell:",
+    "_exposeBinding:valueClass:",
+    "_fileUnlock",
+    "stopLiveSession",
+    "startObservingModelObjectsAtReferenceIndexes:",
+    "_delegate",
+    "_determineGridParametersFromItemPrototype",
+    "_resumeExecutionWithResult:",
+    "addEffects:",
+    "_shouldShowCellExpansionForRow:column:",
+    "isWithinTimePeriodComparison:forProperty:",
+    "_activateOverlayControls",
+    "_finalize_QCConverter_YUV422",
+    "_shouldRequireAutoCollapseOutlineAfterDropsDefault",
+    "_pixelFormatAuxiliary",
+    "_setDragAndDropCharRanges:",
+    "propertyForRollOverIdentifier:",
+    "runThreadWithSelector:argument:",
+    "initWithPerson:imageData:largeImageData:clippingRect:addressBook:",
+    "applyPasteCallback:layer:",
+    "ISS_stringByURLUnquoting",
+    "_cleanUp:",
+    "setRootPath:",
+    "_transformerRegistry",
+    "setSelectionDictionary:",
+    NULL,
+    "__oldnf_deleteAllCharactersFromSet:",
+    "_fetchAllRanges",
+    "forwardingTargetForSelector:",
+    "runModalSavePanel:withAccessoryView:",
+    "addItem:",
+    "collectionBehavior",
+    "_folderThread:",
+    "initPropFindWithSession:withDepth:path:lookingForProps:",
+    "imageDidChange:imageState:image:",
+    "colorSpaceModel",
+    "_queryCanSelectItem:displayValue:inRow:",
+    "layoutManagerOwnsFirstResponderInWindow:",
+    "viewDidUnhide",
+    "valueClass",
+    "currentThreadDisplayOperationStack",
+    "_scriptingTextDescriptor",
+    "typeOfProperty:",
+    "_web_guessedMIMETypeForXML",
+    "stringByExpandingTildeInPath",
+    "_broadcasterThread:",
+    NULL,
+    "initWithRole:parent:rect:propertyPath:range:",
+    "_ql_allowsFileAccessForPreview:",
+    "scaleTransform",
+    "filterNamesInCategory:",
+    "_notifyView_DidSetAllCurrentItems:",
+    "_delegate_nextTypeSelectMatchFromIndex:toIndex:forString:",
+    "endFrame",
+    "sendMouseUpActionForDisabledCell:atRow:column:",
+    "sourceAttributeName",
+    "getProperty::",
+    "isViewOfPickerLoaded:",
+    "forgetSnapshotForGlobalID:",
+    "orderedState",
+    "lineNumber",
+    "isLayerTreeHost",
+    "newFetchedArray",
+    "blackDeviceColor",
+    "setSegmentedBufferAddress:",
+    "_nodeBecomesFirstResponder:",
+    "windowDidResignKey:",
+    "showsOutlineCell",
+    "decodeInt32ForKey:",
+    "clampedBounds",
+    "_batchOrdering",
+    "handleEvent:callRef:",
+    "_isAppSmartFolderNode:",
+    "bufferPixelsHigh",
+    "_determineResizingOptionsVertical:horizontal:",
+    "filesystemItemLinkOperation:shouldLinkItemAtPath:toPath:",
+    "openGLTextureID",
+    "deserializeData:",
+    NULL,
+    "setSavePanel:",
+    "fireWillSelectComposition:",
+    "vCardRepresentation",
+    "popupViewMoveToFront:",
+    "cancelPendingLookups",
+    "setRelativePosition:",
+    "_showTooltipWithText:",
+    "_setVariableColumn:",
+    NULL,
+    "pushSubnode:recalcPointers:",
+    "updateUI:",
+    "isRowSelected:",
+    "_setPreviewController:",
+    "indexSheetDidDeactivate:",
+    "_isMultiMode",
+    "predefinedNamespaceForPrefix:",
+    "adobeRGB1998ColorSpace",
+    "_resetDefaultButtonCycleValue",
+    "cacheResolutionInfoForResolution:",
+    "extraGroupsCount",
+    "_canModifyManagedContent",
+    "numberWithDouble:",
+    "initWithData:options:documentAttributes:error:",
+    "imageTypes",
+    "setNeedsUpdate:",
+    "viewedDateForPerson:",
+    NULL,
+    "userFixedPitchFontOfSize:",
+    "subscribedPeople",
+    "lockedObjects",
+    "selectionFromPointToBottom:",
+    "setRange:",
+    "initWithName:appleEventCode:objcClassName:isHidden:",
+    "getFontFromAppearanceString:",
+    "initWithLDAPManager:forServer:sessionUID:",
+    "_expandableAttributedString:",
+    "_preeffectBaseImage:state:backgroundStyle:",
+    "certificate",
+    "setTime:forKeyFrame:controlType:",
+    "setFieldName:",
+    "setMenu:forSegment:",
+    "initRelockWithURL:lockToken:",
+    "_chainNewError:toOriginalErrorDoublePointer:",
+    "_startLoadingPreview:timeoutDate:",
+    "imageData",
+    "patchAttributesWithName:",
+    "recalcOutline:forResolutionData:",
+    "portMinValue",
+    "usedSize",
+    "_checkForObsoleteDelegateMethodsInObject:",
+    "_autosavingBehavior",
+    "writeExpansion:",
+    "awaitReturnValues",
+    "hasMemberInPlane:",
+    "isValidInPreviewMode:",
+    "insertSublayer:above:",
+    "cacheUsedByJpegData",
+    "metadata",
+    "setIntercellSpacing:",
+    "goBack",
+    "_closeInputPalette",
+    "_setAutoscalesBoundsToPixelUnits:",
+    "_computeMinWidthForSimpleSavePanel:",
+    "_akWindowDidBecomeKey:",
+    "runningWithinInterfaceBuilder",
+    "_performDragFromMouseDown:inColumn:",
+    "_updateObservingForAutomaticallyRearrangingObjects",
+    "removePointerAtIndex:",
+    "_printOperation:wasRunWithSuccess:inContext:",
+    NULL,
+    NULL,
+    "relockRequestWithSession:URI:lockToken:duration:",
+    "setColorComponents:withColor:",
+    "ignoreTypos",
+    "_resetTrackingRect",
+    "compositionPickerView:didSelectComposition:",
+    "outlineView:numberOfChildrenOfItem:",
+    NULL,
+    "renderMode",
+    "initWithCFHTTPCookie:",
+    "_isDrawingMultiClippedContentColumn:",
+    "decodeDataObject",
+    "_iDiskSessionWithAccount:host:port:scheme:",
+    "sizeForDisplayingAttributedString:",
+    NULL,
+    "setMaximumThreadCount:",
+    "helpLinkDidFinishPopulating:",
+    "_windowChangedKeyState",
+    "convertSize:toView:",
+    "setLastUpdatedDefaultKey:",
+    "_restoreTornOffMenus",
+    "_blockRangeForCharRange:",
+    "setSelectionColor:",
+    "_keyEquivalentModifierMaskMatchesModifierFlags:",
+    "resetParameterView:",
+    "currentRamBindedRange",
+    "setSizeWithoutSavingContent:",
+    "selectedRowEnumerator",
+    "_initAnimationForGroup:expand:",
+    NULL,
+    "initWithSlideshowEngine:dataSourceIndex:subIndex:",
+    "browser:titleOfColumn:",
+    "firstLineParagraphStyle",
+    "setPrebindingMode:",
+    "defaultDateFormatter",
+    "firstRectForCharacterRange:",
+    "registeredChildrenPaths",
+    "_removeInputForKey:",
+    "setRemovedOnCompletion:",
+    "_wantsToolTipAtColumn:row:",
+    "ICCProfileData",
+    "URLAtIndex:effectiveRange:",
+    "lineScroll",
+    "appendGRLs:",
+    "marked",
+    "mediaWithQuickTimeMedia:error:",
+    "sensibility",
+    "_selectedSlices",
+    "objectEnumerator",
+    "incrementRefCountForObjectID:",
+    "setValue:atIndex:",
+    "initWithPageRef:",
+    NULL,
+    "srRecognizer",
+    "_cleanup",
+    "raise:format:",
+    "_addBindVarForConstVal2:",
+    "initWithWindowNibName:",
+    "setDirect:",
+    "cell:needFinalDataForKey:",
+    "uppercaseLetterCharacterSet",
+    "removeObjectFromMasterArrayRelationshipAtIndex:selectionMode:",
+    "isPaneSplitter",
+    "_CFCachedURLResponse",
+    "ourPanelWillClose:",
+    NULL,
+    "appendDisplayedNode:identifier:title:displaysChildren:",
+    "drawForPage:withBox:active:inContext:",
+    "_enumeratedArgumentBindings:",
+    "_coreUIFocusStyleWithView:",
+    "samplesPerPixel",
+    "_parseGlobals",
+    "updateInputContexts",
+    "subCacheSizeIndex",
+    "_focusing",
+    "_storeNextReferenceInMetadata",
+    "_web_stringByCollapsingNonPrintingCharacters",
+    "weekday",
+    "_newPropertiesForRetainedTypes:andCopiedTypes:preserveFaults:",
+    "setGridStep:",
+    "setSelectedSegment:",
+    "timeZoneWithName:data:",
+    NULL,
+    "parseTokenWithMask:",
+    NULL,
+    "_loadViewIfNecessary",
+    "_web_domainMatches:",
+    "selectThumbnailAtIndex:",
+    "streamAtIndex:",
+    "stringWithSavedFrame",
+    "slotForKey:",
+    "setWorksWhenModal:",
+    "getXMLAttributeValueFromObject:forAttribute:",
+    "_rowHeaderShadowSurfaceBounds",
+    "_volumeIsEjectableForRefNum:",
+    "showUI",
+    "_processRecentChanges:",
+    "isaForAutonotifying",
+    "_viewsArray",
+    "nts_Touch",
+    "focusedColumn",
+    "childGlyphStorageWithCharacterRange:",
+    "_obtainKeyFocus",
+    "initWithType:itemIdentifier:",
+    "__escapeString5991",
+    "rectValue",
+    NULL,
+    NULL,
+    "_pixelBufferAuxiliary",
+    "setTemporaryAttributes:forCharacterRange:",
+    "blackComponent",
+    "_prepareToMessageClients",
+    "indentationPerLevel",
+    "_rulerAccViewSpacingAction:",
+    "point:inNameRange:",
+    "_standardEffectsForImageWithCocoaName:state:backgroundStyle:startingWithBaseArt:",
+    "_ensureRangeCapacity:",
+    NULL,
+    "_registerDynamicToolTipManagerInstance:",
+    "setPanelController:",
+    "_needsToUseHeartBeatWindow",
+    "dragSelectionWithEvent:",
+    "trackMouse:inRect:ofView:atCharacterIndex:untilMouseUp:",
+    "_clipViewAncestor",
+    "_sendDelegateShouldShowCellExpansionForColumn:row:",
+    NULL,
+    "swapOldImage:oldState:newImage:newState:",
+    "_doRemoveFromSuperviewWithOutNeedingDisplay:",
+    "_didCreateFile",
+    "initWithRect:color:ofView:",
+    "_rowContainsLeaf:",
+    "_registerSuiteDescriptions:",
+    "initWithDictionary:",
+    "_appWillTerminate:",
+    "_recursiveEnableTrackingRectsForNonHiddenViews",
+    "_setBatchingParams",
+    NULL,
+    "deviceDescription",
+    "processRequests:",
+    "registerChannel:",
+    "markerLocation",
+    "_restoreDefaultSettingsForOpenMode",
+    "setPositivePrefix:",
+    "textContainerForGlyphAtIndex:effectiveRange:withoutAdditionalLayout:",
+    "initWithInputController:andField:",
+    "defaultClientID",
+    "colorFromAppearanceTokens:",
+    "_drawBadgeLabel",
+    "invalidateConnectionsAsNecessary:",
+    "initWithContentsOfURL:options:error:",
+    "initWithData:type:size:",
+    "childrenKeyPath",
+    "movieShouldTask:",
+    "_needsToResetDragMargins",
+    "_extendNextScrollRelativeToCurrentPosition",
+    "_enclosingBrowser",
+    "_recursiveAllKeys",
+    "setParentNode:",
+    "_createSubgraphFromSelection:",
+    "setTimeStyle:",
+    NULL,
+    "_web_changeFileAttributes_nowarn:atPath:",
+    "pipe",
+    "attributedSubstringFromRange:",
+    "scaleFactorChanged",
+    "canInitWithPasteboard:",
+    "setPreloadingURL:",
+    "removeListSheetDidEnd:returnCode:context:",
+    "archiveRootObject:toFile:",
+    "_cancelKey:",
+    "enlargedBounds:withXOffset:andCount:",
+    "_setLevelForAllDrawers",
+    "pasteboardByFilteringData:ofType:",
+    "mouseInHUD",
+    "isExpandedNode:",
+    "_validate",
+    "drawsShadows",
+    "_showKeyboardUILoop",
+    "_tryLockViewHierarchyForModification",
+    "_processKeyboardUIKey:",
+    "isNodeRegisteredWithName:",
+    "shouldUnmount:",
+    "dependenciesList",
+    "_setForcesLeadingZeroes:",
+    "_skipsSynchronizationForEditingTextView:",
+    "_docController:shouldTerminate:",
+    "_updateInfo:",
+    "keywordColors",
+    "validateItem:",
+    "enumerator",
+    "_setNumVisibleSwatchRows:",
+    "itemChanged:",
+    "_drawImageFrameAtIndex:animationValue:alpha:",
+    "cellsRenderedIndexes",
+    NULL,
+    "_setPreHandler:andTargetObject:",
+    "superClass",
+    "setSelectedIndexes:",
+    NULL,
+    "columnResizeButtonImage",
+    "cachedImageForEmail:",
+    "itemRolledOver",
+    "setLocalizationFromDefaults",
+    "resizeIncrements",
+    NULL,
+    "_substituteEntityAndProperty:inString:",
+    "fileOperationCompleted:ok:",
+    "_setEncipherOnlyUsage:",
+    "imagingModeResetting",
+    "putData:toPath:withHeaders:rangeStart:rangeEnd:",
+    "windingRule",
+    "_clearLiveResizeColumnLayoutInfo",
+    "hasObjectValue",
+    "_setToolbarView:",
+    "initWithDir:nodeRef:nodeName:",
+    "drawerShouldOpen:",
+    "_web_preferredLanguageCode",
+    "collectResources",
+    "setDatabase:",
+    "compositions",
+    "numberOfLights",
+    "_fontDescriptor",
+    "descriptor",
+    "filenameWithOriginalFilename:",
+    "_baseWritingDirection",
+    "_endMyEditing",
+    "_chooseSizeFromList:",
+    "setDefaultMessage:",
+    "servicePortWithName:",
+    "showRGBView:",
+    "publishWithOptions:",
+    "itemHeight",
+    "setTempTintAtPoint:",
+    "layerForImage",
+    "_databaseContextState",
+    "colorList",
+    "copyCachedInstance",
+    "_shouldBeTreatedAsInkEventInInactiveWindow:",
+    "setUpdatedCompositionValue:forKey:",
+    "_providerTransformationForImage:inBounds:toTextureWithTarget:maxSize:outBounds:",
+    "addedToGroup",
+    "_updatePlaceholdersForBindingInfo:",
+    "_posterForMovie:",
+    "_beginSpeakingString:optionallyToURL:",
+    "_delegateRespondsToSelectCellsByRow",
+    "expandedGridFrame",
+    "_forceFlushWindowToScreen",
+    "encodeInt:forKey:",
+    "backupInfoForBackupAtPath:",
+    "slideshowWasStartedWithStartRect",
+    "deserializeNewObject",
+    "_setItemIdentifier:",
+    "accessibilityFrontmostAttribute",
+    "_markSelectionIsChanging",
+    "clientID",
+    "sendDoubleAction",
+    "_certAuthorityKeySize",
+    "setRotationAngle:centerPoint:",
+    "_visibleRectOfColumns",
+    "decodeDownloadHeader",
+    "_attachToSupermenuView:",
+    "removeColorAllowed",
+    "_insertMissingSubviewLayers",
+    "_doImageDragUsingRowsWithIndexes:event:pasteboard:source:slideBack:",
+    "initWithContentsOfFile:options:error:",
+    "_noteNewRecentDocumentURL:forKey:",
+    "elementWithEffectName:",
+    "emissionLongitude",
+    "_addedTab:atIndex:",
+    "runModalForTypes:",
+    "_isTextured",
+    "_willPopUpNotification:",
+    NULL,
+    "_simultaneousSegmentAndLabelTrackingWithEvent:forSegmentAtIndex:withLabelRect:",
+    "drawEffectGizmo",
+    "_popUpButtonCellInstances",
+    "resetDisplayDisableCount",
+    "_savedVisibleFrame",
+    "createMinimalSharedContextWithAdditionalAttributes:recycleWhenDone:",
+    "setVolatileRepresentation:",
+    "recordsForUIDs:",
+    "clickedRow",
+    "_rowEntryForItem:requiredRowEntryLoadMask:",
+    NULL,
+    "descriptionWithCalendarFormat:",
+    "doDoubleClick:",
+    "setShadowState:",
+    "fileGroupOwnerAccountID",
+    NULL,
+    "compare:",
+    "_cancelClicked:",
+    "groups",
+    "_emptyMatrix:",
+    "handleSwitchToCardOnlyFrom:animate:",
+    "precomposedStringWithCanonicalMapping",
+    "pixelFormatsWithCompatibility:",
+    "addEntity:index:",
+    "getLastHoleStart:len:",
+    "_addDeclaredKey:",
+    "_deselectColumn:",
+    "_setupSegmentSwitchForControl:firstImage:secondImage:thirdImage:action:showDropDown:",
+    "_cancelRequest:",
+    "topBorderColor",
+    "willRemoveFromPersistentStoreCoordinator:",
+    NULL,
+    "_processDocument",
+    NULL,
+    "ensureLayoutForTextContainer:",
+    "_blackRGBColor",
+    "_collectResourcesForSize",
+    "setMandatoryClient:",
+    "nextStringInEncoding:quotedPrintable:stopTokens:trim:",
+    "animateToEncloseElements",
+    "_getNewIDForObject:",
+    "_scriptingRealWithDescriptor:",
+    "property",
+    "colorWithCalibratedWhite:alpha:",
+    "imageBorderFrame",
+    "_parseParagraphAttributes1",
+    "reallyRemoveObjectAtIndex:",
+    "lastCrayon",
+    "_removeBlankLines",
+    "_updateButtons",
+    "execute:",
+    "_updateDocumentMetadata",
+    "_sizeWindowForPicker:",
+    "setTypesetter:",
+    "isDrawingFindIndicator",
+    "keyBindingState",
+    NULL,
+    "brownColor",
+    "drawWithCGImage",
+    "setLockedObjects:",
+    "_setNextToolbarDisplayMode:",
+    "addPolicy:",
+    "resetGroupAndPeopleFromDefaults",
+    "dataRef",
+    "isIndeterminate",
+    "initPostWithSession:path:data:",
+    "_setData:encoding:",
+    "doHorizontalBoxPass:xOffset:count:factor:sums:",
+    "tableView:shouldEditOnSingleClick:inRow:tableColumn:",
+    "_insertionGlyphIndexForDrag:",
+    "updateReferenceIndexesToReflectRemovalAtIndex:",
+    "_createImageForLockFocusUseIfNecessary",
+    "didLoadBytes:loadComplete:",
+    "isMarkupAnnotation",
+    "handleValidationError:description:inEditor:errorUserInterfaceHandled:",
+    "replaceValueAtIndex:withValue:",
+    "groupsController:outlineView:numberOfChildrenOfItem:",
+    "clearAsMainCarbonMenuBar",
+    "doPerformResource:",
+    "startContainer",
+    "objectAtIndex:",
+    "_reflectSize",
+    "_truncatedAlwaysTrustCertString:forHostOrEmail:",
+    "castObject:toType:",
+    "_lockForAllThreads",
+    "setPosition:",
+    "rowTypeForRow:",
+    "registerViewNotifications",
+    "initWithEntity:insertIntoManagedObjectContext:",
+    "initWithSelector:target:",
+    "_pathLengthPresent",
+    NULL,
+    "updateMagnifying:",
+    "beginDocumentWithTitle:",
+    NULL,
+    "panAngle",
+    "isOpen",
+    "_changeEditable:",
+    "varietyCharSet:",
+    "setValidatesImmediately:",
+    "autoconfigureWithProtocol:",
+    "_canDeselect:",
+    "_mapTime:repeatIndex:",
+    "initMkpathWithSession:URI:token:",
+    "_setTextAttributeParaStyleNeedsRecalc",
+    "scriptingEndsWith:",
+    "_toggleTypographyPanel",
+    "parseData:",
+    "referenceWillDie",
+    "initWithCGLSContext:pixelFormat:",
+    "_setNeedsDisplayForFirstResponderChange",
+    "_fetchedIndexes",
+    NULL,
+    "_cornerViewHidesWithVerticalScroller",
+    "validationPredicates",
+    "wantsNotificationForMarkedText",
+    "_issuePropFindAtPath:withDepth:lookingForProps:",
+    "shapeHeight",
+    "browser:shouldSizeColumn:forUserResize:toWidth:",
+    "updateSearchView",
+    "animations",
+    "_attemptToPerformClickOnFocusedColumn",
+    "handleMouseEvent:callRef:",
+    "textStorage",
+    "isVisible",
+    "_checkDataSource",
+    "_readCAConfigFileFullPath:trustRefOnErr:identityNameInfo:subjAltNameExtObj:keyUsageExtObj:keyPairAttrsObj:certInfoObj:basicConstrExtObj:extKeyUsageExtObj:additionalCertInfoObj:caWebSite:caPemData:caPubKeyHash:",
+    "_inputManagerInNextScript:",
+    "_tightenResizables:intoGivenWidth:",
+    "_updatedParameters:",
+    "highlightedMenuTextColor",
+    "fxPickerDidValidate:",
+    "willStartClosingTransition",
+    "_allowsDuplicateItems",
+    "animates",
+    "pictureTakerView",
+    "startCapture",
+    NULL,
+    "_menuItemViewer",
+    "createRepresentationOfType:forManager:withOptions:",
+    "sizeValue",
+    "setAvailableVideoPreviewConnections:",
+    "_drawContents:faceColor:textColor:inView:",
+    "credentialsForProtectionSpace:",
+    "initWithContainerClassID:key:implementation:selector:extraArguments:count:",
+    "_keyboardNavigateDoSelectOfFocusItem:",
+    "setIndex:ofObject:",
+    "signUpURL",
+    NULL,
+    "removeAllDependentTextures",
+    NULL,
+    "pane",
+    "needsPlayControl",
+    "addServer:",
+    "createOptimizedProviderWithTransformation:cropping:",
+    "attributeAtIndex:",
+    "transportType",
+    "greenReconstruction:edges:phase:scale1:scale2:decisions:votedDecisions:image:decisionImage:votingImage:",
+    "accessibilityTitleUIElementAttribute",
+    "preferencesContentSize",
+    "autosizesAndCenters",
+    "initWithType:arg:",
+    "types",
+    "dataReferenceEnumeratorWithQTMedia:",
+    "serializeList:",
+    "membersAndSubgroups",
+    "_setUseBasicAuth:",
+    "_appendAttachment:atIndex:toString:",
+    "setTargetIconSize:",
+    "_segmentedMenuDragSlopRect",
+    "_beforeDrawCell:atRow:col:clipRect:",
+    "_invokeSingleSelector:withArguments:onKeyPath:",
+    "connection:shouldMakeNewConnection:",
+    "setHidesSharedSection:",
+    "bitmapRepresentationOfItem:withUID:",
+    "indentAtIndex:",
+    "setCanBecomeVisibleWithoutLogin:",
+    "initWithNibNamed:bundle:",
+    "_clearCachedStatements",
+    "startSlideShow:",
+    "_updateThumbnailLayers",
+    "initWithURL:MIMEType:expectedContentLength:textEncodingName:",
+    "isNSOrderedSet__",
+    "swatchWidth",
+    "_feImage",
+    "_createdDescriptor",
+    "_initializeButtonCell",
+    "cancelAuthenticationChallenge:",
+    NULL,
+    NULL,
+    "setDataReference:",
+    "_willStartTrackingMouseInMatrix:withEvent:",
+    "_allocData:",
+    "_deferredAdjustMovie",
+    "initForSerializerStream:",
+    "_wantsRowAnimations",
+    "accessibilityElementForAttachment:",
+    "URL:resourceDidFailLoadingWithReason:",
+    "activeAttributeEditorControl",
+    "instantiateNodeWithClassName:identifier:",
+    "formatChanged:",
+    "setObject:forResolution:",
+    "_attributedStringForRepresentedObjects:",
+    "_checkLinksAfterChange",
+    "userInterfaceItemIdentifier",
+    "minX",
+    "accessibilityIsSortButton",
+    "canGoNext",
+    "proxySource",
+    "forgetExternalDataForObjectID:",
+    NULL,
+    "_setCurrentDocumentURL:withTransition:blocking:",
+    "_shouldDrawSelectionIndicatorForItem:",
+    "cellSizeForBounds:",
+    "_adjustFontSize",
+    NULL,
+    "savedSearchDictionaryWithCriteriaSlices:anyAttribute:viewOptions:",
+    "infoQuery",
+    NULL,
+    "selectedTextActive",
+    "_handleCurrentDirectoryChanged:",
+    "_statusItemWithLength:withPriority:",
+    "removeAnnotationControl",
+    "_personFromRecent:",
+    "_scriptingIndexOfObjectWithName:inValueForKey:",
+    NULL,
+    "_fillPropertyCache",
+    "currentAnimationManager",
+    "_updateLabelViewByLabelRect",
+    "addWindowIdentifier:",
+    "keyCode",
+    NULL,
+    "domainWillUnbindAll:",
+    "invoke",
+    "importBegan:",
+    "_beginDraggingColumn:",
+    "setImage:imageProperties:imageState:",
+    "advancementForGlyph:",
+    "_prepareForPushChanges:",
+    "organization",
+    "_thumnailDidUpdate:",
+    "_setFilterPredicate:",
+    NULL,
+    NULL,
+    "initWithAXUIElementRef:",
+    "_compareMultiLabelDictionaryKeyWithRecordValue:",
+    "connection:didCancelAuthenticationChallenge:",
+    NULL,
+    "_elementHasOwnBackgroundColor:",
+    "_impactsWindowMoving",
+    "selectPreviousKeyView:",
+    "_updateItemsBySimpleTemplates",
+    "_initWithProperties:primitiveType:",
+    "keyDown:inRect:ofView:",
+    "getAttributesAndValuesInNode:fromBuffer:listReference:count:",
+    "className",
+    "closeBackgroundWindow",
+    "_inactiveButtonsNeedMask",
+    NULL,
+    "registerUndoWithTarget:selector:object1:object2:object3:",
+    "nts_Description",
+    "_makeSureFirstResponderIsNotInInvisibleItemViewer",
+    "title",
+    "createAdapterOperationsForDatabaseOperation:",
+    "setImagingModeForcedToVisualContext:",
+    "defaultCountryCode",
+    "_itemIdentifiersForColorPickers:",
+    "_argument",
+    "nts_SetMe:",
+    "isNSData__",
+    "beginPageWithBounds:",
+    "_uniqueKeyFromNode:",
+    "manyToManyDeltas",
+    "okClicked:",
+    "isInUseByAnotherApplication",
+    "addSample:",
+    "orPredicateOperator",
+    "initForKeys:count:",
+    "canExportToIPhoto",
+    "_web_setObject:forUncopiedKey:",
+    "deviceConnectionDidChange",
+    "documentForFileName:",
+    "_getFloat:forNode:property:",
+    "abAssimilatedRecordFor:",
+    "setChildrenKeyPath:",
+    "_cell_isEditable",
+    "initWithLDAPManager:forServer:queryString:sessionUID:",
+    "setDefaultTabInterval:",
+    "_toggleFrameAutosaveEnabled:",
+    "_hideAttachedWindows:findKey:",
+    "_registeredObjects",
+    "textView:willChangeSelectionFromCharacterRange:toCharacterRange:",
+    "_needsRedrawForMovement",
+    "_maxXTitlebarDragWidth",
+    "_canInitiateRowDragInColumn:",
+    "editable",
+    "removeKeyFrame:fromTimeLine:",
+    "_readBBox",
+    "email:forToken:hasCert:",
+    "_backgroundStyle",
+    NULL,
+    "adjustToFileFormatInfo:imageInfo:utType:",
+    "_makeDownCellKey",
+    "_isDaylightSavingTimeForAbsoluteTime:",
+    "operationThread",
+    NULL,
+    "imageByCroppingToShape:",
+    "formats",
+    "_tryDrop:dropItem:dropChildIndex:",
+    "initWithExpression:trailingKeypath:inScope:",
+    "executablePath",
+    "setDrawsOutsideLineFragment:forGlyphRange:",
+    "supportsUnicode",
+    "accessibilityVisibleColumnsAttribute",
+    "_learnOrForgetOrInvalidate:word:dictionary:language:ephemeral:",
+    "numberOfSelectedColumns",
+    "_stopFileWritingForConnection:fileControlToken:runningOperation:stopWritingFlags:stopError:",
+    "_getButtonImageParts:::",
+    "flushGraphics",
+    NULL,
+    "_clipViewBoundsChanged:",
+    NULL,
+    "effectNamed:",
+    "_duplicateItemReason",
+    "IKFixDPI",
+    "menuForTokenAttachment:",
+    "repeatPattern:atScale:withOffset:",
+    "setTotalSpace:",
+    "_systemColorChanged:",
+    "contentSize",
+    "setDTD:",
+    "attachSubmenuForItemAtIndex:",
+    "canRenderWithCGLContext:",
+    "_progressPanel:didEndAndReturn:contextInfo:",
+    "membersSelectionChanged:",
+    NULL,
+    "_responderInitWithCoder:",
+    "positionOfGlyph:precededByGlyph:isNominal:",
+    "_readPersistentBrowserColumns",
+    "viewDelegateChanged",
+    "orderFrontStylesPanel:",
+    "shouldByDefaultInsertAtBeginning",
+    "openFile:withApplication:andDeactivate:",
+    "fileManager:shouldLinkItemAtPath:toPath:",
+    "labelBoundsWithFrame:",
+    "_attributesAtPath:partialReturn:error:",
+    "descType",
+    "_createArrays",
+    NULL,
+    "crayonClosestToIndex:",
+    "_setDrawingInRevealover:",
+    "rangeForUserCompletion",
+    NULL,
+    "setBooleanValue:",
+    "standardContentBorderThicknessForEdge:borderSize:",
+    "localizedInputManagerName",
+    NULL,
+    "_addDefaultScopeButtons",
+    "transformedRange",
+    "originalDontInteractFlag",
+    "menuKeyEquivalentAction:forEvent:",
+    "sharedTypesetter",
+    "invalidateDisplayedMembersList",
+    "initWithData:documentClass:isSingleDTDNode:options:error:",
+    "copyItemAtPath:toPath:error:",
+    "drawPDFHighLevel:",
+    NULL,
+    "_sourceListGroupTitleTextColor",
+    "registerImageExporterClass:",
+    "highlightImageBackgroundPiece",
+    "newDocument:",
+    "useAllLigatures:",
+    "_keyboardLoopNeedsUpdating",
+    "_generateErrorWithCode:andMessage:forKey:andValue:additionalDetail:",
+    "_recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:",
+    NULL,
+    "removeSubItemWithAttribute:",
+    "fetchContext",
+    "makeObjectsPerformSelector:withObject:",
+    "_setPartialKeysWithTableBinder:forAllTableColumnBindersOfTableView:",
+    "constraintDefinitions",
+    "setShouldFlip:",
+    "_subpredicateDescription:",
+    "_isDying",
+    "_doSetAccessoryView:topView:bottomView:oldView:",
+    "roundsToInteger",
+    "_saveFailed",
+    "setFilters:",
+    "isTemporaryID",
+    "_candidateDragRowIndexForClickInRow:",
+    "loadRecentsIfNeeded",
+    "setViewOfPickerIsLoaded:",
+    "writeHyphenation",
+    "initWithScheme:host:port:",
+    "_updateInlineSlideshow",
+    "isAttribute",
+    "lastIndex",
+    "_adjustPort",
+    "altIncrementValue",
+    "sharedCredentialStorage",
+    NULL,
+    "control:isValidObject:",
+    NULL,
+    "setSendsActionOnEndEditing:",
+    "IKCleanTimedOutCache",
+    "_obeysHiddenBit",
+    "setActiveColorSpace:",
+    NULL,
+    "boundsForBox:",
+    "_dropHighlightColor",
+    "textTransform",
+    "generateGlyphsForLayoutManager:range:desiredNumberOfCharacters:startingAtGlyphIndex:completedRange:nextGlyphIndex:",
+    "accessibilityProxyAttribute",
+    "createImageWithOptions:",
+    "netServiceBrowserDidStopSearch:",
+    "unscript:",
+    "objectAtIndex:effectiveRange:",
+    "_changeColorToColor:",
+    "_scriptingDescriptorOfObjectType:orReasonWhyNot:",
+    "_URLByEscapingSpacesAndControlChars",
+    "_localizerForSlice:",
+    "horizBlur2ROI:destRect:",
+    "setFade:",
+    NULL,
+    "_nextTypeSelectMatchFromRow:toRow:inColumn:forString:",
+    "_setNeedsValidation:",
+    "outlineView:shouldCollapseItem:",
+    "initWithRow:ofTableView:",
+    "setFinalValue:",
+    "_periodicEvent:",
+    "tableView:shouldTypeSelectForEvent:withCurrentSearchString:",
+    "unlockFocusInRect:",
+    "_modeMenuKeys",
+    "_refreshesAllModelObjects",
+    "markABCoreDataImportCompleted",
+    "_setFilteringSearchString:",
+    "windowWillMinimize:",
+    "_commonNewScroll:",
+    "replyTimeout",
+    "localizedEntityNameForEntity:",
+    "_registerWithDockIfNeeded",
+    "_lockViewHierarchyForDrawingWithExceptionHandler:",
+    NULL,
+    "dictionaryAtURL:securely:andReturnResultCode:",
+    "accessibilityRoleAttribute",
+    "initWithSQLEntity:objectID:",
+    "replaceObjectsInRange:withObject:length:",
+    "restoreDrawingState:",
+    "invalidateMipMaps",
+    "_setEmbeddedData:",
+    "endInstanceCreationForEntityMapping:manager:error:",
+    "_makeNewListFrom:",
+    "removeAllObjects",
+    "defaultNeutralChromaticityY",
+    "_collectionWithName:",
+    "_generateSQLForConst:inAttribute:expression:sensitiveOptions:inContext:",
+    "_createMapForRadius:strokeColor:fillColor:mode:lineWidth:",
+    "_setContents:",
+    "resizingMask",
+    "setPlusButtonAction:target:",
+    "_moveGapAndMergeWithBlockRange:",
+    "pointValue",
+    "tableView:writeRows:toPasteboard:",
+    "placeholderString",
+    "detailsDisclosedClicked:",
+    "lockFocusForView:inRect:needsTranslation:",
+    "_convertToQDRect:",
+    "_wantsHideOnDeactivate",
+    "initWithAddressBook:",
+    "getImage:rect:",
+    "_cleanupBindingsWithExistingNibConnectors:exception:",
+    "fileLocker:lockWasStolen:",
+    "isPlaying",
+    "descender",
+    "setAllowsTypeSelect:",
+    "_makeNextCellKey",
+    "tableRows",
+    "indexSheet:titleForDocumentURL:",
+    "buildRepresentationFromSearchElement:builder:order:level:",
+    "isMutable",
+    "mouseDown:inView:",
+    "searchButtonCell",
+    "indexOfSubItem:",
+    "nodeBecomesFirstResponder:view:",
+    "_loadAllPlaceholderItems",
+    "subject",
+    "setEditableTrust:",
+    "_cachedChildrenForNode:createIfNeeded:",
+    "_todayString",
+    "isNSString__",
+    "_clockAndCalendarContinueTracking:at:inView:",
+    "modes",
+    NULL,
+    "searchMenuTemplate",
+    "_runModalSavePanelForSaveOperation:delegate:didSaveSelector:contextInfo:",
+    "_receiveHandlerRef",
+    "_setInputTopLine:",
+    "setIgnoreMenuClosedEvents:",
+    "transactionState",
+    "areAllContextsSynchronized",
+    "_subtreeDescription",
+    "_storeInfo1",
+    NULL,
+    "_mergeDeletionWithStoreChangesForObject:withRecord:",
+    "outlineView:shouldHighlightWithoutSelectingCell:forTableColumn:byItem:",
+    "_validateAnyKey:error:",
+    "_minYWindowBorderHeight",
+    "deleteGlyphsInRange:",
+    "dimensions",
+    "media",
+    "trackMouseEvent:",
+    "accessibilityDecrementButtonAttribute",
+    "suppressSpecificNotificationFromObject:keyPath:",
+    "synchronousMode",
+    "_ensureAndLockPreferredLanguageLock",
+    "sendsActionOnEndEditing",
+    "TXTRecordData",
+    "onTimer",
+    "_autoExpandItem:",
+    "optimalBytesPerRowForWidth:",
+    "showDistribution:",
+    "_clockAndCalendarTakeDisplayedMonthFromDateValue",
+    "_convertStringToData:",
+    "_makePreviousCellOrViewKey",
+    "_canonicalURLForURL:",
+    "drawRulerLines",
+    "indexOfItem:",
+    "captureOutput:mustChangeOutputFileAtURL:forConnections:dueToError:",
+    "countOfInputImage",
+    "connectToLDAPServer:",
+    NULL,
+    "readFromFile:error:",
+    "_doCloseDrawer",
+    "setFlatness:",
+    "setShowPanels:",
+    "_preferredPopupHeight",
+    "_minYTitlebarTitleOffset",
+    "selectionSupportsEnabledState",
+    "initWithThreadPool:target:",
+    "_setUserEmailAddressOfRequestor:",
+    NULL,
+    "ISO8061StringFromDate:",
+    "_updateTrustPopupValues:",
+    "attributesOfFileSystemForPath:error:",
+    "setInputImageOrientation:",
+    "_calculateLockInfos",
+    NULL,
+    "sizeOfLabel:",
+    NULL,
+    NULL,
+    "_parsePredefinedAttributes2",
+    "accessibilitySharedCharacterRange",
+    "getMinificationFilter",
+    "initWithIdentifier:",
+    "_updatePlayButtonImage",
+    NULL,
+    "_wantsPastedURL:allowFileURLs:",
+    "targetAndArgumentsAcceptableAtIndex:",
+    "setAllowsBranchSelection:",
+    "clearMembersSelection",
+    "_clearDefaultMenuFormRepresentation",
+    "setClearsDepthBuffer:",
+    "pathForUIDTaggedImage",
+    "_errorAlert:wasPresentedWithResult:inContext:",
+    "_sliceTopBorderColor",
+    "setOptions:",
+    "setFetchColumns:",
+    "showsGetInfoButton",
+    "_timedAdjustTextControl:",
+    "imageCropView:mouseDown:",
+    "rowHeight",
+    NULL,
+    "addWindowsItem:title:filename:",
+    "_deepCollectEntitiesInArray:entity:",
+    "_dictionaryForArchiving",
+    NULL,
+    "_synchronizeWithPeerBindersInArray:",
+    "_hasKeyAppearance",
+    "_removePasswordForRealm:URL:",
+    "isScrolling",
+    "handleEvent:",
+    "autoreleasedObjectCount",
+    "parameterList",
+    "currentTab",
+    "_scriptingRemoveObjectsAtIndexes:fromValueForKey:",
+    "doubleClickOpensImageEditPanel",
+    NULL,
+    "verticalBoxInitROI:destRect:userInfo:",
+    "setDragAndDropCharRanges:",
+    "levels",
+    "drawPagePost:",
+    "_setPreviewFont:",
+    "_originalCard",
+    "_update",
+    "atEOF",
+    "expressionForConstantValue:",
+    "scale",
+    "initWithGroup:newMe:addressBook:",
+    "borderType",
+    "_updateTrackingAreas",
+    "rightMouseDownDelegate:",
+    "view:stringForToolTip:point:userData:",
+    "personSelected:",
+    "setServersInDefaultsFile:",
+    "_referenceQueue",
+    "_updateVisibleLayers",
+    "_drawViewBackgroundInRect:",
+    "certificateAuthorityWithName:",
+    "nibInterfaceDidAwakeFromNib:",
+    "arrayWithObject:",
+    NULL,
+    "startInputStream:",
+    "accessibilityMenuFormRepresentationHasOwnTargetAction",
+    "isIdentifiedByUTIs",
+    NULL,
+    "cardsWithCategory:",
+    "calcPostions",
+    "_removeObjectFromSubNodesAtIndex:",
+    "loadItemAtIndex:",
+    "accessibilityIsClearButtonAttributeSettable",
+    "_centerInnerBounds:",
+    "_isHelpMenuAppKitOnly",
+    "lockOperations",
+    "ramCacheLength",
+    "_needImportMipmap:forCellSize:",
+    NULL,
+    "arrayByAddingObjects:count:",
+    "windowForSheet",
+    "hasDataRepresentation",
+    "setAllDestinations:",
+    "nts_GroupsMatchingNormalizedName:inSubscribedContent:context:",
+    "resetCacheWithSize:",
+    "proxyForObject:",
+    "lockWhenCondition:beforeDate:",
+    "createThumbnails",
+    "nts_threaded_sortMembers:",
+    "pathsForResourcesOfType:inDirectory:forLanguage:",
+    "_fileAttributes",
+    "canExportSlideshowItemAtIndex:toApplication:",
+    "setUserData:ofType:atIndex:",
+    "reconcileToSuiteRegistry:suiteName:commandName:",
+    "_visibleColumnIndexesForKeyPath:",
+    NULL,
+    "_scriptingValueOfObjectType:withDescriptor:",
+    "isAccessError:",
+    "_postSessionNotificationIfNeeded",
+    "_old_drawArrow:highlightPart:",
+    "setMatchesOnMultipleResolution:",
+    "_loadPreviewFailedForDocumentPreviewView:",
+    "_setIsChecked:",
+    "removeItemWithObjectValue:",
+    "elementAtIndex:",
+    "backupDatabaseToPath:addBackupInfo:",
+    "_setNextToolbarSizeMode:",
+    "setKnobThickness:",
+    "_setPreventsActivation:",
+    "groupsThatUseGroup:",
+    "setTimeMachineDelegate:",
+    "_windowRefCreatedForCarbonApp",
+    "parseABOrder",
+    "setCardSourceDelegate:",
+    "viewDidMoveToWindow",
+    "HTMLData",
+    "setLineFragmentRect:forGlyphRange:usedRect:",
+    NULL,
+    "_enlargeToFitText:newSize:difference:",
+    "_defaultButtonCycleTime",
+    "_columnsForDragImage",
+    "fadeToolTip:",
+    "_accessibilityToolbarItemLabel",
+    "_markerHitTest:",
+    "addFeatureDescriptions:",
+    "windowDidLoad",
+    NULL,
+    "_argumentBindingCount",
+    "_drawBorderInRect:",
+    "store",
+    "_findMisspelledWordInString:language:learnedDictionaries:wordCount:countOnly:",
+    "mediaTypeString",
+    "_webViewClass",
+    "_scriptingRemoveAllObjectsFromValueForKey:",
+    "ab_queryPiecesNoLowerCase",
+    "setDateStyle:",
+    "cancelButton",
+    "directoryResultsController",
+    "buttonNumber",
+    "_libxml2TreeRepresentationWithNamespaces:",
+    "_readURLIntoRange:fromPasteboard:",
+    "clearCurrentContext",
+    "parser:foundInternalEntityDeclarationWithName:value:",
+    "isFlipped",
+    "_renderGLContext",
+    "titleFrame",
+    "reloadItem:reloadChildren:",
+    "_setUseModalAppearance:",
+    "customCall:withAuthorization:",
+    "sendMessage:withData:withReply:",
+    "swapFirstLastName:",
+    "toggleGrammarChecking:",
+    "_selectedNodeAtColumn:",
+    "_doSingleStep:inView:",
+    "closeWithEffect:canReopen:",
+    "addImportedRecord:",
+    NULL,
+    "predefinedEntityDeclarationForName:",
+    "secondsSinceTop:",
+    "_toolbarViewCommonInit",
+    "setPrompt:",
+    "getTitle",
+    "drawText:inRect:withAttributes:withAlpha:",
+    "_userDeleteRange:",
+    "ghostCellCountOnTheLeft",
+    "initWithGenerator:",
+    "selectionForLineAtPoint:",
+    "_protocolWithRequest:cachedResponse:client:allowCF:",
+    "initWithOriginalString:",
+    "_certTable",
+    "titleForRollOverIdentifier:withSelection:",
+    "_setShowAlpha:andForce:",
+    "setNotShownAttribute:forGlyphRange:",
+    "updateBatchSizeForRange:",
+    "_findHitItemViewer:",
+    "IKIPMenuWindowBackgroundColor",
+    NULL,
+    "loadAllPlugIns",
+    "isAnimating",
+    "titlebarColor",
+    "stringForDPSError:",
+    "_registerForMovieIdle",
+    "startTasks",
+    "_updateMenuItem:",
+    "_setKeyViewSelectionDirection:",
+    "rotateLeft:",
+    "clearAll",
+    "knownTimeZoneNames",
+    "popUp:",
+    "_handleEventRecursively:",
+    "_setUnicodeInputEventReceived:",
+    "setTextureSize:",
+    "initWithCGSConnection:options:",
+    "preparedCellAtColumn:row:",
+    "nibInstantiate",
+    "configurePersistentStoreCoordinatorForURL:ofType:modelConfiguration:storeOptions:error:",
+    "_firstSelectableRowInMatrix:inColumn:",
+    "countOfAppleUseCoreUI",
+    "isExtensionSupported:",
+    "progress",
+    "setItem:forAbsentKey:",
+    NULL,
+    "connection:didReceiveData:lengthReceived:",
+    "_keywordsAndColorsFromXML:",
+    "_setPlaceholderString:",
+    "_generateSerialNumber",
+    "registerConnection:",
+    NULL,
+    "_pluginProtocol",
+    "nextCard:",
+    "calculationMode",
+    "clearNavNode",
+    "objectAtIndexPath:",
+    "_rulerAccViewIncrementLineHeightAction:",
+    "_isSuitableForFastStringDrawingWithAlignment:lineBreakMode:tighteningFactorForTruncation:",
+    "isRootCertificate",
+    "newStringFrom:usingUnicodeTransforms:",
+    "setUserFixedPitchFont:",
+    "updatedObjects",
+    "_initializeSharedApplicationForCarbonAppIfNecessary",
+    NULL,
+    "_setNeedsZoom:",
+    "drawText:withAttributes:inRect:context:",
+    "removePathFromLibrarySearchPaths:",
+    "_unbindAllInDomain:notifyDelegate:",
+    "scaleFactorAtIndex:",
+    "_setEnabledCriticalDigitalSignature",
+    "remapCracklibError:",
+    "_referenceBinding",
+    "knobUnderPoint:",
+    "endTrailer",
+    "invitation",
+    "imageWithTexture:size:flipped:colorSpace:",
+    "keyClassDescription",
+    "initWithURL:allowNonExecutable:",
+    "cellSelectionStateDidChangeTo:",
+    "setGradientType:",
+    "affineTransform",
+    "findAllUsers",
+    "setKBURLString:",
+    "_unregisterForSessionNotifications",
+    "splitView:constrainMinCoordinate:ofSubviewAt:",
+    NULL,
+    NULL,
+    "_isDeactPending",
+    "entryForNode:inCachedChildrenForNode:",
+    "_doRotationOnly",
+    "removeOutput:",
+    "setPrimaryOnOpenGLContext:",
+    "setFriction:",
+    "popupStatusBarMenu:inRect:ofView:withEvent:",
+    "simpleControllerWithUIController:",
+    "repeatCount",
+    "dataUsingEncoding:",
+    "parentWindow",
+    "setInContext:",
+    NULL,
+    "_handleChildRemoved:",
+    "filesystemItemCopyOperation:shouldProceedAfterError:copyingItemAtPath:toPath:",
+    "initWithOperatorType:modifier:variant:position:",
+    NULL,
+    "_setCommonName:",
+    "messageType",
+    "_inHideCollectionsMode",
+    "autoupdatingCurrentLocale",
+    "_reallyNeedsDisplayForBounds",
+    "_dragUntilMouseUp:accepted:",
+    "CGBitmapInfo",
+    "nextBase64Data",
+    "setImageName:bundle:",
+    "_queue",
+    "IKIPArrayByApplyingSelector:withObject:",
+    "accessibilitySelectedAttributeOfChild:",
+    "setZoomFactorX:",
+    "_isLucidaGrande",
+    "setCommandKeys:",
+    "_createCAConfigFile:pemData:identityNameInfo:subjAltNameExtObj:keyUsageExtObj:keyPairAttrsObj:certInfoObj:basicConstrExtObj:extKeyUsageExtObj:additionalCertInfoObj:CACert:webURL:returnedInvite:",
+    "handleCarbonBoundsChange",
+    "_logError:fallbackMessage:relatedToBinding:",
+    "initWithType:subpredicates:",
+    "_extractOrderedNonStaticItemsFromArray:",
+    "unload",
+    "cacheCustomProperties:withRecordType:",
+    "setScaleFactor:atIndex:",
+    NULL,
+    "_selectCellIfRequired",
+    "setTextView:",
+    "compositionAspectRatio",
+    "_paragraphClassforParagraphStyle:range:",
+    "_outlineDoubleAction:",
+    "addItemsWithObjectValues:",
+    "_localizedStringForKey:value:",
+    "overrideKeyboardWithKeyboardNamed:",
+    "_shouldTrack",
+    "splitView:willMoveDivider:distance:",
+    "attemptRecoveryFromError:optionIndex:delegate:didRecoverSelector:contextInfo:",
+    "_setFalse:",
+    "IMAVManager",
+    NULL,
+    "updateFlare",
+    "isSpeaking",
+    NULL,
+    "_validateMenuFormRepresentation:",
+    "accessibleAttachments",
+    "_defaultIndicatorSize",
+    "mutatingMethods",
+    "_sendDelegateCreateRowsForColumn:inMatrix:",
+    "noteQueryAttributesChanged",
+    NULL,
+    "_canShowFileAtPath:",
+    "_sizeToFit:",
+    "_loadPreviousModeAndLayout",
+    NULL,
+    "_createDockMenu:",
+    "isSupersetOfSet:",
+    "directoryResultAtIndex:",
+    "isRichText",
+    "initWithTable:startingRow:rowSpan:startingColumn:columnSpan:",
+    "hintCapacity",
+    "removeView:fromView:layoutManager:",
+    "nodeWillRemoveFromGraph",
+    "_setIsLastItem:",
+    "addObjectsToMasterArrayRelationship:selectionMode:",
+    "setSelectedIndexPaths:",
+    "drawHighlight:inRect:",
+    "animationDataForCell:",
+    "_runInNewThread",
+    "_discardTrackingRect:",
+    "_sizeTableColumnsToFitForColumnResizeWithStyle:",
+    "initWithX:Y:",
+    "setMiniwindowTitle:",
+    "signature",
+    "initWithScreen:",
+    NULL,
+    "setIgnoreOpenAndClose:",
+    "markedTextAbandoned:",
+    "setFont:",
+    "_drawLegend",
+    "setMediaBrowserView:",
+    "setOffStateImage:",
+    "_focusImageAtIndex:",
+    "_executeAdd:didCommitSuccessfully:actionSender:",
+    "initFromDictionary:",
+    "_needsRedrawOnMouseInsideChange",
+    "URLHandleClassForURL:",
+    "performAdapterOperations:",
+    "superviewBeingDeallocated",
+    "setSearchMenuTemplate:",
+    "_deselectAnySelectedDirectories",
+    "setIsClosable:",
+    "_accessibilityRowsInRange:",
+    "currentHost",
+    "isCountOnlyRequest",
+    "localNode",
+    "_currentListNumber",
+    "initWithXMLNode:",
+    "defaultSortDescriptorPrototypeForTableColumn:",
+    "_keysForPropertyDescriptionKind:",
+    "hidesEmptyCells",
+    "drawSegment:inFrame:withView:",
+    "popupsAreEditable",
+    "writemipmapData:intoFile:filePosition:",
+    "moveWordForwardAndModifySelection:",
+    "_initWithView:printInfo:epsNotPDF:bounds:data:orPath:",
+    "invalidateOutputCache",
+    "isSubsetOfHashTable:",
+    "_addStaticSubfieldWithString:",
+    "_sendToRemainingReceivers",
+    "_coreUIDrawBackgroundWithFrame:inView:",
+    "setInitialGState:",
+    "lastPathComponent",
+    NULL,
+    "setBoundsSize:",
+    "popUpContextMenu:withEvent:forView:withFont:",
+    "_registerTableColumnBinder:toTableColumn:autoCreateReferenceController:",
+    "_realCompositeNameIncludingAuxiliaryElements:",
+    "returnID",
+    "image:focus:",
+    "manyToMany",
+    "putCell:atRow:column:",
+    "_disableObserving",
+    NULL,
+    "_doStartDrawer",
+    "dispatchInvocation:",
+    "pathCell:willPopUpMenu:",
+    NULL,
+    "setLimitIntermediate:",
+    "displayedFileProperties",
+    "verticalPageScroll",
+    "loadPlugInsInLibrary:",
+    "_branchDescription",
+    "IMProperties",
+    "deepPropertiesCopy:",
+    "setStringIndex:forIndex:",
+    "drawCheckBox:inContext:",
+    "findNode:",
+    "_updateDetailLevel",
+    NULL,
+    "_explicitlyCannotInsertChild",
+    "_setMetadataDirty:",
+    "removeFile",
+    "_changeContentsToPath:",
+    NULL,
+    "PDFOperationWithView:insideRect:toData:printInfo:",
+    "typeOfProperty:withAddressBook:",
+    "_storeCurrentDirectory",
+    "depth",
+    "titleButtonOfClass:",
+    "postscriptName",
+    "_fileOperationCompleted:",
+    NULL,
+    NULL,
+    "_setKeyEquivalentListTable:",
+    "characterSetWithBitmapRepresentation:",
+    "decodeReturnValue:",
+    "compositeToPoint:fromRect:operation:fraction:",
+    "proxyClass",
+    "resizeWithDelta:fromFrame:beginOperation:endOperation:",
+    "_setForceSuccess:",
+    "_shouldHaveBlinkTimer",
+    "moduleWillBeRemoved",
+    "initWithAuthDelegate:url:",
+    "removeAllEffects",
+    "_preferOnArtForBezel",
+    NULL,
+    "moveCurrentPointInDirection:",
+    "maxWidth",
+    "isModalPanel",
+    "blurHalfSizeImage:sampler:radius:kind:",
+    "setResolvesAliases:",
+    "value:withObjCType:",
+    "_identifiedItems",
+    "ignoresMultiClick",
+    "resizeWithOldSuperviewSize:",
+    "lastRenderedMipmapItem",
+    "spellCheckerDocumentTag",
+    "accessibilityHorizontalScrollBarAttribute",
+    "_parseText",
+    "_clearUnprocessedInsertions",
+    "order",
+    "currentNibPath",
+    "propertyHasActions",
+    "setValue:withProperty:comparison:entryView:",
+    "locationZ",
+    "_heightIsFlexible",
+    "setUpTokenAttachmentCell:forRepresentedObject:",
+    "setIdentifier:forTimeLine:",
+    NULL,
+    NULL,
+    "_rowHeightStorageInvalidateCacheAndStorage",
+    "setOpenGLContext:",
+    "_real_didChangeValueForKey:",
+    "_setLayerNeedsDisplayInViewRect:",
+    "_updatePauseLock",
+    "IKCreateCGImageFromMeshedData",
+    "_createValueGetterWithContainerClassID:key:",
+    "setEditedFlag:",
+    "columnSpan",
+    "startDirectorySearch",
+    "intersectGroupMembers:withSearchResult:",
+    "_noticeEditablePeerBinder:",
+    "setIndexed:",
+    "ISOCountryCodes",
+    "initWithContext:object:",
+    "setModified:",
+    "_setNeedsDisplayInRow:",
+    "_recursive:displayRectIgnoringOpacity:inContext:topView:",
+    "setTruncationMode:",
+    "_setCurrentDirectoryNode:makeHistory:notify:",
+    "decompressionOptionsDidChangeForConnection:",
+    "_removeSelectionIndexPathsBelowNode:",
+    "preferredSizeOfLayer:",
+    "setTextLists:",
+    "_managedObjectContextEditor:didCommit:contextInfo:",
+    NULL,
+    "drawDragBoundries",
+    "setEventCoalescingEnabled:",
+    "observedKeys",
+    "setCellsStyleMask:",
+    "_setPendingUpdate:",
+    "deleteLastCharacter",
+    "_createBackingStore",
+    "_performKeyEquivalentWithDelegate:",
+    "_recursiveSetTrackingAreasDirty:",
+    "indexOfDirectoryResult:",
+    "_paperNameInPageFormat:",
+    "valueForRequiredAttributeKey:",
+    "passwordUIDisplayed",
+    "mipmapImageChanged",
+    "animateSetIconSize:",
+    "characterAtIndex:",
+    "_computeCameraDY",
+    "_setAutomaticRearrangementKeyPaths:",
+    "_fontSetChanged:",
+    "indentationLevel",
+    "tightBilateralInitROI:destRect:userInfo:",
+    "flipVertical:",
+    "_contextDidSave",
+    "bindVariables",
+    "unbindMipmapItem:withUID:",
+    "setFileWrapper:",
+    NULL,
+    "resizeSubviewsWithOldSize:",
+    "addRecent:",
+    NULL,
+    "_hitTestClockAndCalendar:inRect:ofView:",
+    "_setupRuleEditorForScopeView",
+    "pruneGRLs:toLimit:results:",
+    "initWithAttribute:relativeTo:attribute:scale:offset:",
+    "_done",
+    "boundsForPointArray:",
+    "archive:streamForEntryName:",
+    "_coreUIDefaultIndicatorImage",
+    "_assignObjects:toStore:",
+    "_performFastConflictDetectionForObjects:withChannel:",
+    "frameInterval",
+    "_activateServer",
+    "addUID:",
+    "setCompositionsFromRepositoryWithProtocol:andAttributes:sortedBy:",
+    "setPrevShownGRL:",
+    "controllerType",
+    "last",
+    "validateMipmap:withModel:withQuality:",
+    "deinterlacesVideo",
+    "rightExpressions",
+    "application:openTempFile:",
+    "moveToEndOfLineAndModifySelection:",
+    "_doAnimationStepWithProgress:",
+    "populatePicker:",
+    "_isJavaSubclass",
+    "bindItem:withUID:forCaching:fromDiskOnly:",
+    "setMinusSign:",
+    "_handleMouseUpWithEvent:",
+    "drawsGrid",
+    "_getDidEndSelector",
+    "localizations",
+    "subtractRect:",
+    "_disableLayout",
+    NULL,
+    "isKindOfClass:",
+    "_refreshIsInUseByAnotherApplication",
+    NULL,
+    "lastVisibleColumn",
+    "setAttribute:forKey:",
+    "hasImportErrors",
+    "externalData",
+    "_lastModifiedDate",
+    "setFloatValue:",
+    "_additionIndexPathAppendChildIndex:",
+    "_saveIfReallyEditedWithDelegate:didSaveSelector:contextInfo:",
+    "accessibilityIsOrientationAttributeSettable",
+    "setDefaultCountryCode:",
+    "imageAndTitleWidth",
+    "addObjectToMasterArrayRelationship:selectionMode:",
+    "widthForHeight:",
+    "createBackgroundWindow:",
+    "_isReadOnly",
+    "name:reason:status:",
+    "engineOfClass:forDisplayID:",
+    "outlineColumn:willDisplayCell:row:",
+    "isItemSelectedAtIndex:",
+    "_rowHeightStorageComputeRowAtPoint:cacheHint:",
+    NULL,
+    "loadSavedLayoutWithKey:",
+    "makeMainWindow",
+    "contentsForEntryName:",
+    "smallChromaMorphologyMinimumROI:destRect:",
+    "attachedMenu",
+    NULL,
+    "callbackDataWithOutput:connection:backgroundQueue:",
+    "nts_DoesPropertyExist:forClass:",
+    "_shouldPreventCustomViewFromDraggingWindow:",
+    "queuePriority",
+    "_realDoModalLoop:peek:",
+    "selectionDuration",
+    "countOfObjectsForClass:withPredicate:managedObjectContext:",
+    "_setSingleChild:",
+    "alignRight:",
+    "unsuppressAllNotificationsFromObject:",
+    "setFireDate:",
+    "_makeFirstResponderForKeyboardHotKeyEvent",
+    "attributeValueForSlot:",
+    "doPeriodicFlush",
+    "_addToolTipRect:",
+    "_updateCountLabelForLayout:",
+    "_cacheMipmapSize:fromModel:",
+    "initRenderingContext",
+    "_identityName",
+    "maxTextureSizeForTarget:",
+    "pageDown:",
+    "_initForPropPatchUpdatingProps:inNameSpace:",
+    "removeEntryAtIndex:",
+    "controlsView",
+    "_wantsDeviceDependentEventModifierFlags",
+    "subdivideBezierWithFlatness:startPoint:controlPoint1:controlPoint2:endPoint:",
+    "webFrame",
+    NULL,
+    "setOpacity:",
+    "_validIndexes:indexType:",
+    "draggingEntered:",
+    "_destinationFloatValueForScroller:",
+    NULL,
+    "_adjustForGrowBox",
+    "sendInvocation:",
+    "_dragOperationFromInfo:",
+    "_removeGrammarAttributeForRange:",
+    NULL,
+    "_unregisterForChildChangedNotifications",
+    "rangeForPropertyPath:",
+    "fileType",
+    NULL,
+    "setPrincipal:",
+    "initWithData:objectID:",
+    "_setCanAnimateScrolls:",
+    "parser:foundNotationDeclarationWithName:publicID:systemID:",
+    "_indexAtIndex:",
+    "_setRealm:forURL:",
+    "isInputExtent",
+    "_searchMenuForProxy",
+    "_onQCTimer",
+    NULL,
+    "disableExecution:",
+    "_insertionPointDisabled",
+    "createTexturePackerAtIndexIfNeeded:",
+    "_invalidNavNodePopUpLabelAction",
+    "nts_SetValue:forProperty:recordCouldBeInDatabase:",
+    "createSelectionWithEvent:",
+    "mouseTracker:handlePeriodicEvent:",
+    "documentDidUnlock:",
+    "exponentSymbol",
+    "unloadNib:",
+    "nts_SubscriptionsWithAddressBook:",
+    "getInputImage",
+    "drawPage:",
+    "_ensureCapacity:",
+    "_updateWindow:withWidth:height:",
+    "getBitmapDataPlanes:",
+    "performSelector:withObject:afterDelay:inModes:",
+    "findInSpotlight:",
+    "_mergeGlyphHoles",
+    "textContainerForGlyphAtIndex:effectiveRange:",
+    "pagesCount",
+    "windowTitlebarLinesSpacingWidth",
+    "namesByAlias",
+    NULL,
+    "_registerDefaultPlaceholders",
+    "setupViewsForNode:",
+    "_clearOriginalSnapshotForObject:",
+    "invalidateDisplayForCharacterRange:",
+    "decodeFloatForKey:",
+    "imageFileTypes",
+    "_borderInset",
+    "setCurrentDocumentIndex:withTransition:blocking:",
+    "_parent:",
+    "disconnectO3Console",
+    "pathExpression",
+    "sourceRepresentationType",
+    "accessibilityFocusedWindowAttribute",
+    "unblockAllOperationsForGroup:",
+    "_BMPRepresentation:",
+    "setRangeToParent:",
+    "addStringToRecentSearchStrings:",
+    "_dataIfDoneBufferingData:",
+    "_addObject:",
+    "_sendActionOrDoubleAction:",
+    "newLockButton",
+    "_combobox_windowWillBeginSheet:",
+    "_indexesOfPassingObjectsInContainer:",
+    NULL,
+    "prepareInsertStatementWithRow:",
+    "_layerTreeRenderer",
+    "_syncItemSet",
+    "_compareSingleDictionaryNoKeyWithRecordValue:",
+    "setClickableArea:target:selector:info:",
+    "_predicateForToManyRelationshipName:relativeKeyPath:comparison:value:label:",
+    "setContextualMenu:",
+    NULL,
+    "handlesContentAsCompoundValue",
+    "setHelpAnchor:",
+    NULL,
+    "timestampForKey:",
+    "_canHaveToolbar",
+    NULL,
+    "moveWordBackward:",
+    "_tableBinderForTableView:",
+    "handleQueryWithUnboundKey:",
+    "setShowEjectButton:",
+    "domainForResolution:createIfNeeded:",
+    "isDescendantOfNode:",
+    "textAttributesForNegativeInfinity",
+    "responseContentLength",
+    "localizedNameForCategory:",
+    "removeFile:",
+    "sortUsingFunction:context:range:",
+    "failedPasswordHandler",
+    "setPlusSign:",
+    "_acquireRetainedCGImageRef",
+    "_cacheRowHeightsIntoBucket:bucketFirstRowIndex:lastCacheableRowIndex:",
+    "widgetRectangleForResolutionData:",
+    "disableKeyEquivalentForDefaultButtonCell",
+    "_noteKeyValuePairChangedValue:",
+    "prefetchThumbnailsDelay",
+    "searchString",
+    NULL,
+    "copyDropDirectory",
+    "dateByAddingTimeInterval:",
+    "selectFirstTabViewItem:",
+    NULL,
+    NULL,
+    "specifierWithPath:traverseLink:",
+    NULL,
+    "getHue:saturation:brightness:alpha:",
+    "_decodePropertyListForKey:",
+    NULL,
+    "_updateLayerBackgroundFiltersFromView",
+    "mouseUpOnCharacterIndex:atCoordinate:withModifier:client:",
+    "_replaceCString:withCString:",
+    NULL,
+    "innerTitleRect",
+    "_adjustEffectsAndCameraUI",
+    "_runFullDialogSheet",
+    "modifyFontViaPanel:",
+    "setPhase:",
+    "textColorAtIndexPath:",
+    "_executeSelectNext:didCommitSuccessfully:actionSender:",
+    "lastName",
+    "titleFieldPresent",
+    "setMedia:",
+    "setOnStateImage:",
+    "_currentDisplayColor",
+    "eventID",
+    "setScalesWhenResized:",
+    "openMenuFromDepth:shiftFocus:",
+    "showsBaselineSeparator",
+    "previewView:didUpdateDisplayForURL:withImage:",
+    "_hasMetalSheetEffect",
+    "restoreNameColumnWidth",
+    "_allowedItems",
+    "_trueCount",
+    "keyDownDelegate:",
+    NULL,
+    "setMetadata:forKey:shouldForward:",
+    "_canUseReorderResizeImageCache",
+    "hash",
+    "selectedIdentifiersForPerson:",
+    NULL,
+    "initWithFile:error:",
+    "setImageWithCGImageSource:imageProperties:options:",
+    "setCachedChildren:",
+    "movieWithURL:error:",
+    "appendBezierPathWithArcFromPoint:toPoint:radius:",
+    "makeFirstResponder:",
+    "unregisterObservingForAnalyzableKeyPath:",
+    "_platformFont",
+    "decodeSize",
+    "_configureForFileListMode:",
+    NULL,
+    "initWithAdapterOperator:row:",
+    "_setToolbar:",
+    "containsRect:",
+    "emissionLatitude",
+    "initWithRequest:delegate:startImmediately:",
+    "_mapURLForAddressWithId:",
+    NULL,
+    "reloadRootNode",
+    "keychain",
+    "_findKeyLoopGroupingViewFollowingKeyLoopGroupingView:direction:",
+    "stopRenderingPatch:",
+    "_initializeAttributes",
+    "newObjectIDSetsForToManyPrefetchingRequest:andSourceObjectIDs:",
+    NULL,
+    "horizontalPagination",
+    "compareWithPixelFormat:",
+    NULL,
+    "replaceSelectedPagesWithPage:drawNow:",
+    "_pathOfImageWithName:inBundle:",
+    "releaseResource",
+    "initGlyphStack:",
+    "headIndent",
+    "boldSystemFontOfSize:",
+    "retainedLocaleString",
+    "parsePolicyConstraints:",
+    "backgroundQueue",
+    NULL,
+    NULL,
+    "_scriptingArrayOfType:withDescriptor:",
+    "checkIfCoreVideoWorksOnCurrentDisplay",
+    NULL,
+    "controlDrawsSelectionHighlights",
+    "_nq:",
+    "stringWithCharacters:length:",
+    "readDocumentFragment:",
+    "classDescriptionForEntityName:",
+    "setImageView:",
+    NULL,
+    "setObjectBeingTested:",
+    "resetCache",
+    "_updateFormatDescriptionFromPropertyListener",
+    "mapping",
+    "updateOutlineColumnDataCell:forDisplayAtIndexPath:",
+    "_applicationDidBecomeActive",
+    "_bestSettingWithBitsPerPixel:width:height:refreshRate:exactMatch:",
+    "_viewFromOperatorTypes:",
+    "_setNeedsDisplayForTabViewItem:",
+    "setLoopsBackAndForth:",
+    "_horizontalScrollerClass",
+    "finalValue",
+    NULL,
+    "setWeekday:",
+    NULL,
+    "window",
+    "makeCurrentSearchOptionsDefault",
+    "copyAndReparentGRLs:forWindow:forNewParent:",
+    "setExternalName:",
+    "_isHiraginoFont",
+    NULL,
+    "indexOfPointer:",
+    "lastItem",
+    NULL,
+    "isDisconnectedMountPoint",
+    "_usesCustomDrawing",
+    "forceBreaks",
+    "parse:",
+    "_executeMain:result:",
+    "attributeDescriptorForKeyword:",
+    "showsTrustButton",
+    "updateSchedulePriorityRange",
+    "selectLayer:",
+    "_freeImage",
+    "determineCurrentPage",
+    "_appHasOpenNSWindow",
+    "getResolutionData:figureMetricsTop:left:bottom:right:",
+    "setWidthTracksTextView:",
+    "patchManager",
+    "_animationThread",
+    "_createDeleteRowButton",
+    "connectionID",
+    "_remove:andAddMultipleToTypingAttributes:",
+    "accessibilityAttachments",
+    "addViewToViewsAdded:",
+    "marqueeBoundsForPage:",
+    NULL,
+    "singlePage:",
+    "_doRemoveDrawer",
+    NULL,
+    "_button",
+    NULL,
+    "utType",
+    "drawDragOverlays",
+    "_web_visibleItemsInDirectoryAtPath:",
+    NULL,
+    "_attachToParentWindow",
+    "setObject:atIndex:",
+    "setSelectsAllWhenSettingContent:",
+    "scrollCellToVisibleAtRow:column:",
+    "_terminate:",
+    "_dumpSetRepresentation:",
+    "fontDescriptorWithMatrix:",
+    NULL,
+    "setCachedImageRef:forNSImage:",
+    "_stopListeningToMouseMovement",
+    "tooltipString",
+    "vcardFieldisPrivate:",
+    "protocol",
+    "compoundTypes",
+    "alertShowHelp:",
+    NULL,
+    "setPixelsHigh:",
+    "initResolutionData",
+    "_selectPopUpWithTag:",
+    "setCurrentMigrationStep:",
+    "rehash",
+    "viewForCharacterIndex:layoutManager:",
+    "_valuesForProperty:inNode:",
+    "rects",
+    "exceptionAddingEntriesToUserInfo:",
+    "setAutorecalculatesContentBorderThickness:forEdge:",
+    "flushAllKeyBindings",
+    "_realControlTintForView:",
+    "hasAudio",
+    "_beginScrolling",
+    "initWithKind:name:stringValue:",
+    "_setCurrentlyEditing:",
+    "canAddNode:",
+    "setYear:",
+    "recordChangesInContext:",
+    "_handleQueryStateChange:",
+    "_initWithFileSpecifierOrStandardizedPath:",
+    NULL,
+    "redBluePreBlurROI:destRect:",
+    "isEjectable",
+    "movieWithPasteboard:error:",
+    "spellingPanel",
+    "imageScalingX",
+    "_addCertAndEndSheet:certData:commonName:",
+    "setIndexAtTop:",
+    "rangeOfString:options:",
+    "viewSizeChanged:",
+    "_setVersionReference:",
+    "setPosterTime:",
+    "_setWithoutNotificationLocalizedKey:key:",
+    NULL,
+    "_firstPassGlyphRangeForBoundingRect:inTextContainer:okToFillHoles:",
+    "getHomePath",
+    NULL,
+    "_getKernelFolderCPath",
+    "initToBuffer:capacity:",
+    "zoomFactorY",
+    "disableNotifications",
+    "createAttributedString",
+    "_displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:",
+    "configurationName",
+    "_adjustFrameOfOutlineCellIfNecessary:frame:",
+    "newWithIdentifier:",
+    "beginLineWithGlyphAtIndex:",
+    "_clearModalWindowLevel",
+    "beginCertLookupForEmail:",
+    "acceptsFirstResponderForView:",
+    "indexOfComposition:",
+    "isTitled",
+    "metaDataLockFile",
+    "_learnWord:inDictionary:",
+    NULL,
+    "performAdapterOperation:",
+    NULL,
+    "_setRevealoversDirty:",
+    "pathNamesForRecords:",
+    "nts_SetValue:forProperty:",
+    "sortUsingFunction:context:",
+    "_positionForValue:",
+    "insertCorrelation:",
+    "destKey",
+    "transformerWithItems:",
+    "_processInstanceNode:",
+    "_scriptTerminologyDescription",
+    "_unaffixedMarkerFormat",
+    "scaleWindow:fromFrame:toFrame:duration:delegate:",
+    "dataForType:fromPasteboard:",
+    "_setDefaultWindowKeyViewLoop",
+    "setLineCapStyle:",
+    NULL,
+    "updateStatus:",
+    "setupGuessesBrowser",
+    "didFinishOpeningTransition",
+    NULL,
+    "initWithRects:count:",
+    "_implicitObservationInfo",
+    "_predicateForKeyPath:comparison:value:",
+    "_rectToDisplayForItemAtIndex:",
+    "_needsRolloverTracking",
+    "_allLocation",
+    "pathsMatchingExtensions:",
+    "isDRMProtected",
+    "fontWithPDFFont:size:",
+    "_scaledFrameForWindowFrame:withFrame:matchingFrame:scalable:",
+    "_updateFormats:",
+    "_captureAllScreens:",
+    "readDataOfLength:",
+    "rolloverMenuForSelection:",
+    "setCurrentEntityMapping:",
+    "initWithBytes:length:",
+    "_destroyViews",
+    "isFault",
+    "launchIPFXPickerWithParent:withDelegate:fromView:centerPoint:onScreen:currentEffectName:",
+    "writeDefaultTabInterval",
+    "initFromMemoryNoCopy:length:freeWhenDone:",
+    NULL,
+    NULL,
+    "endLayoutChange",
+    "setShowsLogonButton:",
+    "numberOfVirtualScreens",
+    "initDirectoryWithFileWrappers:",
+    "annotationHit:",
+    "_fastGetCachedRect:forRow:",
+    "_argumentDescriptionForKey:",
+    "isAlternate",
+    "ancillaryData",
+    "shouldUseCrossfadingForURL:",
+    "movies",
+    NULL,
+    "SCTIndexOfObject:containingValue:withAccessor:",
+    "minValueForControlType:keyFrame:",
+    "initialSearchIndex",
+    "floatCocoaVersion",
+    NULL,
+    "_editingFirstResponderIfIsASubview",
+    "isInUpdate",
+    "selectColumn:byExtendingSelection:",
+    "_shouldHandleAsGotoForTypedString:",
+    "awakeFromInsert",
+    "switchToIndexMode:",
+    "_applyValue:forKey:registrationDomain:",
+    "endEntityMapping:manager:error:",
+    "setStateToUnselected",
+    "_inMiniMode",
+    "sendCarbonProcessHICommandEvent:",
+    "_startFileControlCallbackTimeoutTimer",
+    "keyWindow",
+    "_rulerAccViewAlignmentAction:",
+    "sharedMappings",
+    "autosaveName",
+    "_old_encodeWithCoder_NSTabViewItem:",
+    "valuesForKeys:",
+    "_web_hasCountryCodeTLD",
+    "caption",
+    "_view",
+    "setCIAffineClampFilter:",
+    "setIncrement:",
+    "addJoinForManyToManyRelationship:sourcePath:destinationPath:",
+    "doesPropertyExist:forClass:",
+    "_accessibilityIsCommonToolbarButtonItem",
+    "_longestStringSize",
+    "getAdvancements:forPackedGlyphs:length:",
+    "setRotationAngle:",
+    "ghostCellCountOnTheRight",
+    "scriptErrorOffendingObjectDescriptor",
+    "_startHitTracking:",
+    "startLiveCapture",
+    "paste:",
+    "autoplay",
+    "sizeFunction",
+    "_liveResizeCachedImageIsValid",
+    "_unhideAllDrawers",
+    "_toolbarUnregisterForNotifications",
+    "_collection:setHidden:",
+    "setOpaque:",
+    "arrayWithFrames:count:",
+    "evaluateXQuery:constants:contextItem:error:",
+    "texturePackerIndex",
+    "_ns2cfCookies:",
+    "initWithReferenceToURL:",
+    "setCGImage:",
+    "autorecalculatesKeyViewLoop",
+    "_scrollTo:animate:",
+    "boundingRectOfOrientedRect:rotation:pivot:",
+    "_syncToolbarItemUserVisibilityPriorityToValues:",
+    "stopSendingConversionUpdates",
+    "maximumSignificantDigits",
+    "setHighQualityVideo:",
+    "_registerDragTypesIfNeeded",
+    "compareGeometry:",
+    NULL,
+    "_hasCustomVisibilityPriority",
+    "resizeWindow:animate:fromLayout:toLayout:paneWidths:numberOfPanes:",
+    "_enumeratedEditableBindings:",
+    "calcViewHeight:",
+    "pixelBlockHeight",
+    "_displayValueForCompoundPredicateType:",
+    "iconView:loadCell:forIndex:",
+    "nts_Disconnect:",
+    "windowHidden:",
+    "modDateForURL:andReturnResultCode:",
+    "useStandardKerning:",
+    "_valueOfType:",
+    "_pasteboardWithName:",
+    "showPackedGlyphs:length:glyphRange:atPoint:font:color:printingAdjustment:",
+    "placeholderAttributedString",
+    "_reorderResizeImageCache",
+    "_encodeMapTable:forTypes:withCoder:",
+    "setConstrainsToOriginalSize:",
+    NULL,
+    "createImageFromNSImage:",
+    "appendObjectClassDeclarationToAETEData:includingParts:",
+    "_restoreTypeSelectCellValue",
+    "setTimebase:",
+    "_isBeingTracked",
+    "validateMetaDataIfNeeded",
+    "_trust",
+    "unlockOperation",
+    "_updateLogLevel",
+    "decimalDigitCharacterSet",
+    "_minXTitlebarWidgetInset:",
+    "_setAutoResizeDocView:",
+    "offset",
+    NULL,
+    "changedItemsOnly",
+    "hyphenationFactor",
+    "update",
+    NULL,
+    "autoreleasePoolExists",
+    "archiverWillFinish:",
+    "nameForParameter:",
+    "__patchExecuted:",
+    "_setWantsRevealovers:",
+    "applicationDidChangeScreenParameters:",
+    "mainWindowFrameShadowColor",
+    "setDateFormat:",
+    "_pagesCountForCompositions:",
+    "clearTableParameters",
+    "changeOptionsPanelSettings:",
+    "setKBVersionString:",
+    "_containerRelativeFrameOfInsideOfColumn:",
+    "setClassName:forClass:",
+    "_drawCellAtRow:column:inFrame:",
+    "writeData:length:",
+    "_convertSetOfObjectsToSetOfObjectIDs:",
+    "setMarkedText:selectedRange:",
+    "shiftIndexesStartingAtIndex:by:",
+    "setSynthesizerIsRetained:",
+    "switchToImage:orientation:",
+    "generateSubqueryVariableAlias",
+    NULL,
+    "locateLongitude:latitude:",
+    "bookList",
+    "charIndex",
+    "_drawerTopOffset",
+    "frameRate",
+    "getDataSourceArray",
+    NULL,
+    "insertNewObjectForEntityForName:inManagedObjectContext:",
+    "parserDidStartDocument:",
+    "_managesWindowRef",
+    NULL,
+    "take",
+    "_defaultNewFolderName",
+    "_insertRange:inArrayAtIndex:",
+    "_typeSelectEndCurrentSearchWithRedisplay:",
+    "_iconSizeForControlSize:",
+    "defaultBehavior",
+    "willRecycleResource:",
+    "_addObserver:forProperty:options:context:",
+    "setNonRetainedCachedRecord:forKey:",
+    "_getUserInfo:",
+    "_dumpFullImageInfo",
+    "zoomToFitFullScreen",
+    "resetAuthList",
+    "_flags",
+    "_title",
+    "scope",
+    "toolMode",
+    "setIsFileListOrderedAscending:",
+    "updateTemperatureAndTint",
+    "addChild:",
+    "startOrStopTargetAnimation",
+    "_canOverrideUserAction:",
+    "_drawRectIfEmptyWhenSubviewsCoverDirtyRect:",
+    "run",
+    "_indentationHorizontalPadding",
+    "mipmapItemAtIndex:",
+    "getResolutionData:padMetricsTop:left:bottom:right:",
+    "activeListAnalyzer",
+    "titleTextColor",
+    "_menuOwner",
+    "storeColorPanel:",
+    NULL,
+    "comparisonPopUpForProperty:withSelection:",
+    "_refreshDevices",
+    "buffer",
+    "setGain:",
+    "nts_DoInitialImports",
+    "standardFontFamily",
+    NULL,
+    "_valueOfType:withDeferredSpecifierEvaluation:",
+    NULL,
+    "frameOrigin",
+    "_setupTrackingArea",
+    "initWithTimeIntervalSince1970:",
+    "_timeRect",
+    "selectCellAtRow:column:",
+    "dateValue",
+    "initWithContainerClassDescription:containerSpecifier:key:relativePosition:baseSpecifier:",
+    "locationForGlyphAtIndex:",
+    "_appendWhereClauseForConstVal:",
+    "_initFromAbsolutePositionRecord:",
+    NULL,
+    "componentsFromLocaleIdentifier:",
+    "viewToAddForAnnotation:",
+    "_prefixUp",
+    NULL,
+    "zipCode",
+    "_drawsBackground",
+    "_doSlideDrawerWithDelta:",
+    "setAttributedStringForZero:",
+    "selectedNavNode",
+    "_loadInitialItemIdentifiers:requireImmediateLoad:",
+    "numberOfRowsInTableView:",
+    "_cacheDisplayValue:",
+    "convertToQDRect:",
+    "dayOfCommonEra",
+    "_doneColor:",
+    "createNewTimeLine:",
+    "initWithFrameColor:fillColor:",
+    NULL,
+    "breakLock",
+    "heartBeat:",
+    "_recomputeLabelHeight",
+    "fieldContentsForProperty:",
+    "setTemplateView:",
+    "_setParameter:forOption:withBindingInfo:",
+    "cornerRadius",
+    "updateFrameWithCellFrame:",
+    "poolStack",
+    "run:",
+    NULL,
+    "sendThisCard:",
+    "_initRelockRequestWithToken:",
+    "_setTimelineVisibility:",
+    "isMember:",
+    "_findFirstNonSelectedRowFrom:to:",
+    "cleanup",
+    "_markRememberedEditingFirstResponderIfIsASubview",
+    "reformatValueAtLocation:",
+    "_plainFontNameForFont:",
+    "_setKeyboardFocusRingNeedsDisplayAroundPerimeter",
+    "prebindInRamMipmapItem:withUID:",
+    "initWithCString:length:",
+    "_storeUserSetHideExtensionButtonState",
+    "_machineLibraryPath",
+    "setRenderLevel:",
+    "windowTitlebarTitleLinesSpacingWidth:",
+    "_setNeedsDisplay",
+    "closeAllDocumentsWithDelegate:didCloseAllSelector:contextInfo:",
+    "stepBackward:",
+    "initAsPeoplePicker:mainSplit:searchLabel:searchField:",
+    "executeCommand",
+    "noteSecondLineParagraphStyle",
+    "activeColumnFilter",
+    "_sliceLastBottomBorderColor",
+    "initWithColorSyncProfile:",
+    "dateRangeAnchoredSelectionWithDate:",
+    "writeCharacterAttributes:previousAttributes:",
+    "setLastQueryDate:",
+    "setOwner:",
+    "deselectRow:subrow:",
+    "_highlightOutlineCell:highlight:withFrame:inView:",
+    "configurationDictionary",
+    NULL,
+    "_cycleDrawersReversed:",
+    "availableMemoryForRequestedMemory:ofType:virtualScreen:",
+    "depthLimitPaths",
+    "_enumerationBinding",
+    "_needsRedrawOnKeyChange",
+    "_preflightDatabaseAtURL:",
+    "itemTitles",
+    "_imageForEjectType:",
+    "initWithContext:patch:",
+    "ruleEditorRowsDidChange:",
+    "modDate",
+    "backingReleaseInfo",
+    "cancelFindIndicator",
+    "errorType",
+    "_persistentStoreCoordinator",
+    "_removeSaveFile",
+    "enabledState",
+    "_prepareConst:inManyToMany:",
+    "_createKeyValueBindingForKey:name:bindingType:",
+    "_takeColorFromAndSendActionIfContinuous:",
+    "addressBookImagesDirectory",
+    "setImpossibleCondition:",
+    "windowControllers",
+    "acceptsMouseMovedEvents",
+    "_didImportMipmap:throughCopy:forDisplayedCell:index:flatten:importedItem:",
+    "descriptionWithLocale:indent:",
+    "postResultsAreInNotificationNotification:",
+    "createShadowMaskParts",
+    "rememberForPreviousSelectedItem",
+    "hotSpot",
+    "_calculatePageRectsWithOperation:pageSize:layoutAssuredComplete:",
+    "beginSheetWithSmartGroup:modalForWindow:modalDelegate:didEndSelector:contextInfo:",
+    NULL,
+    "setImageData:",
+    "setSRRecognitionSystem:",
+    "_isDefaultFace",
+    "setMonoCharacterSeparatorCharacters:usualPunctuation:",
+    "moveColumn:toColumn:",
+    NULL,
+    "drawCenteredIcon:",
+    "createButtons",
+    "provideNewButtonImage",
+    "_updateUserKEsAfterActivationAndDelay:",
+    "firstUnlaidGlyphIndex",
+    "_scheduleDelegateCallback",
+    NULL,
+    "_syncItemSetAndUpdateItemViewersWithSEL:setNeedsModeConfiguration:sizeToFit:setNeedsDisplay:updateKeyLoop:",
+    "subRowIndexAtPoint:",
+    "trackMouseDragDisallowed:",
+    "_enumeratedDisplayPatternTitleBindings:",
+    "printerWithName:",
+    "_doDelete:",
+    "_removeBottom",
+    "_segmentedCellStyle",
+    "PMPrintSettings",
+    "timingFunction",
+    "one",
+    "outputNow:forTime:flagsIn:flagsOut:",
+    "_editableBinderForTableColumn:",
+    "autorepeat",
+    NULL,
+    "setIconView:",
+    "_removeClipIndicatorFromSuperview",
+    "_drawAnalogClockWithFrame:inView:",
+    NULL,
+    "__select:context:",
+    "_compositeHiddenViewHighlight",
+    "initLockWithSession:URI:duration:",
+    "resetSearchButtonCell",
+    "_checkToolTipDelay",
+    "descriptorAtIndex:",
+    "_minXLocOfOutlineColumn",
+    "clearController",
+    "filenameExtension:isValidForType:",
+    "_useBasicAuth",
+    "setOrderedIndex:",
+    "CA_JSClass",
+    "setDictionary:",
+    "compositionWithFile:",
+    "_paragraphInTable",
+    "attemptOverwrite:",
+    "serializeAlignedBytesLength:",
+    "shouldOpenURL:",
+    "_doOpenFile:ok:tryTemp:",
+    "initWithCarbonMenu:itemIndex:",
+    "isEqualToValue:",
+    NULL,
+    "_notifyView_MovedFromIndex:toIndex:",
+    "directoryTraversalOperation:foundPath:",
+    "tooltipExtensionViewSize:",
+    "_handleApplyValueResult:cachedValue:displayValue:objectValue:",
+    "SCTConvertToScreenRect:",
+    "knobThickness",
+    "contentFilters",
+    "setBackgroundFilters:",
+    "_imageRepClassForFileNameExtension:andHFSFileType:",
+    "_invalidateTextColor",
+    "canDraw",
+    "_toggleToolbarConfigPanel:",
+    "delegate",
+    "_verifyDataIsPICT:",
+    "preloadingURL",
+    "parseMachMessage:localPort:remotePort:msgid:components:",
+    "setExternalType:",
+    NULL,
+    "book",
+    "nts_dbCache",
+    "lockForReading",
+    "_isUnprocessedInsertion",
+    "_errorWithErrno:sourcePath:destinationPath:",
+    "entityForName:inManagedObjectContext:",
+    "_attachWindowForOrdering:relativeOp:",
+    "_setItemIndex:",
+    "_updateCompositions:",
+    "requiredOpenGLExtensions",
+    "_multipleMutableArrayValueForKeyPath:atIndex:",
+    "convertAttributes:",
+    "primitiveType",
+    "_sizeNeedsUpdate",
+    "zoomImageToRect:",
+    "adjustRulersForMaxSize",
+    "_imageToBezelOrIndicatorPadding",
+    "_CGSremoveWindow:",
+    "_tableViewDoubleClick",
+    "isMultiple",
+    "showModalPreferencesPanelForOwner:",
+    "versionFromState:",
+    "isDrawingContentAtIndex:",
+    "_updateCaretToIndex:mouseLocation:",
+    "_parent",
+    "_setupProfileUI",
+    "reviewUnsavedDocumentsWithAlertTitle:cancellable:",
+    "hasPropertyForKey:",
+    "lineFragmentUsedRectForGlyphAtIndex:effectiveRange:withoutAdditionalLayout:",
+    NULL,
+    "endUpdateBuffer:",
+    "suppressionButton",
+    "notifyDelegateWithResultCode:",
+    "_beginColumnAnimationOptimization",
+    NULL,
+    "fetchRequestTemplatesByName",
+    "archive:propertiesForEntryName:",
+    "initWithAssignmentExpression:expression:",
+    "supportsColorMatching",
+    "hoverRectForDirection",
+    "_appHasNonMiniaturizedWindow",
+    "keyEventWithType:location:modifierFlags:timestamp:windowNumber:context:characters:charactersIgnoringModifiers:isARepeat:keyCode:",
+    "resetDefaultInputValues",
+    "validateMenuPath",
+    "draggingKeyBindingManager",
+    "_abbreviationForAbsoluteTime:",
+    "SCTSubViewWithSCTID:",
+    "constrainsToOriginalSize",
+    "frameChanged:",
+    "_generateSQLForConst:inManyToMany:expression:inContext:",
+    "doneButton:",
+    "initWithProvider:transformation:croppingRect:",
+    "createManyToManyJoinIntermediateForProperty:direct:lastStep:inScope:context:",
+    "_createEllipsisRunWithStringRange:attributes:",
+    "_reconcilePrintSettingsAttributes",
+    "_setAllItemsTransparentBackground:",
+    "totalAutoreleasedObjects",
+    "_runGarbageCollectionForSize",
+    "writeMetadata:forRecordWithUniqueId:",
+    "mainSplit",
+    "scheduleOnRunloop:mode:",
+    NULL,
+    "setImage:badge:",
+    "attributeWithName:URI:stringValue:",
+    "_sendDelegateHeightOfRow:",
+    "sortedClassDescriptions:",
+    "lineRangeForRange:",
+    "ageStatistics",
+    "_isTableColumn:boundWithKeyPath:",
+    "_hasAnyChanges",
+    "scanHexFloat:",
+    "initWithURL:",
+    "retain",
+    "setColorRed:Green:Blue:Alpha:",
+    "compositionPickerView:didLoadComposition:",
+    "cameraCallbackFindParent:parentClass:",
+    "_nearestCrayonUnderViewPoint:",
+    "subentityKey",
+    "availableColorLists",
+    "nts_ImportFromMetaKitDatabaseAtPath:includeMailRecents:includeAddressBook:andSave:",
+    "collect:",
+    "_scriptingObjectForSpecifier:",
+    "invalidateCursorRectsForView:",
+    NULL,
+    "updateGridContentAtIndexes:",
+    "setPropertyCache:",
+    "updateThumbnail",
+    "stopImmediately",
+    "didLoadData:lengthReceived:",
+    "_getGlobalWindowNumber:andRect:forRepresentation:",
+    "reloadChildrenForNode:",
+    "dragImage",
+    "_browser:performKeyEquivalent:inColumn:",
+    "parseItem",
+    "_completeTypeDescription",
+    "getAdvancements:forGlyphs:count:",
+    "nodeClass",
+    "decimalNumberByRaisingToPower:",
+    "fetchResultSet:usingFetchPlan:",
+    "_adjustStatesOfObject:mode:state:triggerRedisplay:",
+    "expansionFrameWithFrame:inView:",
+    "_cellThatHasContentAtPoint:withEvent:",
+    "sendTaggedMsg:",
+    "_lastRightHit",
+    "HTTPBodyStream",
+    "classNameDecodedForArchiveClassName:",
+    NULL,
+    "reloadData",
+    "parameterAtIndex:",
+    "_mipmapCopyForThreadedOperation:",
+    "classForKeyedUnarchiver",
+    "initWithQuickTimeTrack:error:",
+    "nts_migrateMailRecentsToCurrentStoreWithPath:model:error:",
+    "textTabForGlyphLocation:writingDirection:maxLocation:",
+    NULL,
+    "contentViewFrameDidChange:",
+    "_setConvertedData:pboard:generation:inItem:",
+    NULL,
+    "normalizedPageBounds:",
+    "genFold:aboutAngle:",
+    "cachedTextForText:",
+    "setCaptureSession:",
+    "removeElementsInRange:coalesceRuns:",
+    "_setDrawingHIView:",
+    "_protectEvilCharacter:",
+    "_lightWeightRecursiveDisplayInRect:",
+    "_abCompareSuffixMatch:options:",
+    "_isNodeKeyInUse:",
+    "uppercaseString",
+    "deltaY",
+    "initWithContentsOfURL:encoding:error:",
+    "trace",
+    "choices",
+    "_setNeedsDisplayForIndex:",
+    "_setNeedsDisplayIfTopLeftChanged",
+    "_appendSuffixIfNeeded:",
+    "_fileNameExtensionsForType:forUseInSavePanel:",
+    "nts_PeopleAtRemoteLocation:",
+    "refresh:",
+    "originalImageSizeCache",
+    "_initWithImageSource:imageNumber:properties:",
+    "selectColumnIndexes:byExtendingSelection:",
+    "bytes",
+    "showsControlCharacters",
+    "resetFlushDisableCount",
+    "persistentStoreType",
+    "_stopSkippingSnapshotUpdates",
+    "_selectFirstEnabledCell",
+    "setNeedsDisplay",
+    "isNegation",
+    "backgroundColors",
+    "currentControlTint",
+    "setHasHorizontalRuler:",
+    "stringForStatus:",
+    "vCardControllerWithUIController:",
+    "clientIndexToGridIndex:",
+    "prepareSavePanel:",
+    "_web_URLFragment",
+    "_unload:",
+    "_processMetadataNode:",
+    "_multipleValuesObjectAtIndexPath:",
+    "_hashMarkDictionary",
+    "outlinesCells",
+    "setDuplicates:",
+    "loadSuiteWithDictionary:fromBundle:",
+    "elasticWidth",
+    "rowForItem:",
+    "setPreviewView:",
+    "_createAlert",
+    "_setFirstResponderNode:",
+    NULL,
+    "fontColor",
+    NULL,
+    "printOperationWithView:",
+    "initWithPath:delegate:timeout:",
+    "_gridStepForAxis:",
+    "_performDragOperationForFilenameDrop:asChildOfNode:atIndex:",
+    "previousKeyView",
+    "initWithContentRect:",
+    "_colorForConnection:",
+    "parentForItem:",
+    "_bonafiedDeallocHelper",
+    "dataStampForTriplet:littleEndian:",
+    "_resetPostingCounts",
+    "allocateSpaceForLen:added:",
+    "viewWithFrame:filter:",
+    "load",
+    NULL,
+    "setAffineTransform:",
+    "queryHitResultsFilterUTIs",
+    "setTimestamp:",
+    "openReadStream:",
+    "saturationComponent",
+    "becomeFirstResponder",
+    "setUID:",
+    "_fieldEditor",
+    "numberOfItemsInIconView:",
+    NULL,
+    "darkerOf:and:opacity:",
+    "setResource:",
+    "_engravedBoldDisabledForegroundTextColor",
+    "_storeExpandedState",
+    "descriptorWithTypeCode:",
+    "resetLayer",
+    "putRequestWithSession:file:URI:token:",
+    "_doSetAccessoryView:topView:bottomView:previousKeyView:oldView:",
+    "_threadedSave:",
+    "_stringToWrite",
+    "addPersistentStoreWithType:configuration:URL:options:error:",
+    "initWithTimeIntervalSinceNow:",
+    "sendDidReceiveChallenge:",
+    "dataReferenceWithReferenceToFile:",
+    "_shouldInstallToolTip:",
+    "createInputWithPortClass:forKey:attributes:arguments:order:",
+    NULL,
+    "_draggingUpdatedForReorder:proposedItem:proposedChildIndex:",
+    "_notifyDelegateIndexOfSelectedSubfieldDidChange",
+    "_fetchBatchForIndexes:",
+    "shiftModifySelection:",
+    "fetchPublicRecordForClass:withUniqueId:addressBook:",
+    "ikLayerWasAddedToSuperlayer",
+    "setKeyTimes:",
+    "moveToBeginningOfParagraphAndModifySelection:",
+    NULL,
+    "_viewVisibleBoundsChanged",
+    NULL,
+    NULL,
+    "setFocusedColorChipIndex:",
+    "_info",
+    "canBecomeKeyView",
+    "orderFrontTableOptionsPanel:",
+    "addReordedItemsToBrowserItems",
+    NULL,
+    "attributeIsReadOnly:",
+    "typeSelectString",
+    "allCategories:",
+    "updateFavoritesFromDefaults",
+    "verticalLineScroll",
+    "modalMode",
+    "startAnimation:forObject:keyPath:",
+    NULL,
+    "updateOptionsInfo:",
+    "_beginTableRow",
+    "setShadowRadius:",
+    "abDifferencesBetweenArray:",
+    NULL,
+    "setIdling:",
+    "runSharedEditorWithString:inView:atPoint:width:numLines:",
+    "setupShowcaseWindow",
+    "initWithProperties:suiteName:usesUnnamedArguments:classSynonymDescriptions:",
+    "inverseRelationship",
+    "_setSelectedNodes:",
+    "isCompositionIdentity:",
+    "_actionHasBegun:atIndexPath:",
+    "_reallocData:",
+    "_rangeOfTextTableRow:atIndex:completeRow:",
+    "_dispatchRequest:withPostHandler:requiringResult:",
+    "encodeConditionalObject:forKey:",
+    "topLevelObject",
+    "_setLastFocusRingView:bleedRegion:",
+    NULL,
+    "parametersViewForPatch:",
+    "drawsOutsideLineFragmentForGlyphAtIndex:",
+    "pop",
+    "_setWrapsDateComponentArithmetic:",
+    "RTFDFromRange:documentAttributes:",
+    NULL,
+    "isEPSOperation",
+    "sharedMagnifier",
+    "navNodeWithSimpleQueryString:searchScopes:",
+    "_loadKeyboardBindings",
+    "_autoSaveConfiguration",
+    "currencyCode",
+    "cellsHaveSubtitle",
+    "_displayPathForPath:",
+    "_startListeningToMouseMovement",
+    "_columnClosestToColumn:whenMoved:",
+    NULL,
+    NULL,
+    NULL,
+    "_isPortKeyInUse:",
+    "setBindVariables:",
+    "parseMetaSyntaxLeafResultShouldBeSkipped:",
+    "stringByDeletingPathExtension",
+    "allowsNonContiguousLayout",
+    "setHandlesContentAsCompoundValue:",
+    "imageWithContentsOfURL:options:",
+    "scrollBy:",
+    "lockBufferRepresentationWithPixelFormat:colorSpace:forBounds:",
+    "addObserverTextField:",
+    "transformedOriginalImageSize",
+    "setMatchedColor:",
+    "initWithKey:type:access:isHidden:shouldByDefaultInsertAtBeginning:",
+    "_handleDeviceIsAliveNotification:",
+    "_computedColorForNode:property:",
+    "proxySize",
+    "_copyWindows",
+    "runAutoPlay:",
+    "_sortedAETEElementClassDescriptions:",
+    "localizedDescription",
+    "sendMouseUpActionForDisabledCell:",
+    "pasteboard:provideDataForType:",
+    "typeOfFile:error:",
+    "bindTextureToCGLContext:textureUnit:applyInternalMatrix:externalMatrix:savedState:",
+    "grantRequestWithLockToken:",
+    NULL,
+    "nts_SaveWithFileLock:triggerSync:updateModificationDate:",
+    "_setSelectedWithoutNotification:",
+    "bottomColor",
+    "_generateSQLBetweenStringInContext:",
+    "imageForImageState",
+    NULL,
+    "_changeKeyState",
+    "halfSizePictureEdges:scale:",
+    "imageWithData:bytesPerRow:size:format:colorSpace:",
+    "removeToolTipForView:tag:",
+    "_moveTrackingArea:toRect:",
+    "loadWindow",
+    NULL,
+    "removeClient:",
+    "sourceModelForStoreAtURL:metadata:error:",
+    "enumerateSubIndices:",
+    "parseExtension:",
+    "insertStatement",
+    NULL,
+    "smartGroups",
+    "dispatchGroupDoubleClick:",
+    "nts_MembersOfGroup:",
+    "_targetViewDidMoveOrChangeSize:",
+    "_encodeDepth:",
+    "netService:didUpdateTXTRecordData:",
+    "setPaperSize:",
+    "updateLayoutAtIndexes:",
+    "_startRunMethod",
+    "appendBezierPathWithGlyphs:count:inFont:",
+    NULL,
+    "sharedTypographyPanel",
+    "acceptsFirstResponder",
+    "_filenameHasNonEmptyAcceptableFileType:",
+    NULL,
+    "nts_MatchesRecord:",
+    "_areWritesCancelled",
+    "_decodeByte",
+    "_canAcceptDocumentPreviewView:",
+    "_maxSizeFromUsableFrame:",
+    "_web_parseAsKeyValuePair_nowarn",
+    "createFirstLastSorting:part1:forPerson:",
+    "_offsetFromStartRect",
+    "_maxXTitlebarBorderThickness",
+    "quartzFilterManager:didModifyFilter:",
+    "_coreUIDrawBezelInRect:withClip:",
+    "netService:didNotResolve:",
+    NULL,
+    "shouldDrawOnMainThread",
+    "_imagesFromURL:forImage:fileType:extension:",
+    "fileWrapper",
+    "_copyCoreUILinearKnobDrawOptionsWithView:",
+    NULL,
+    "installViewport",
+    "_accessibilityButtonUIElement",
+    "setTextAttributesForNil:",
+    "_windowDying",
+    "filterWithFilterSpec:intype:outtype:",
+    "_defaultMessageAttributes",
+    "_mouseInside:",
+    "_getColorFromImageAtPoint:",
+    "setResizeWindow:",
+    "createDirectoryAtPath:withIntermediateDirectories:attributes:error:",
+    "_controlTintChanged:",
+    "clear:",
+    "controlViewWillResignFirstResponder:",
+    NULL,
+    "browser:typeSelectStringForRow:inColumn:",
+    NULL,
+    "insertPopItemWithTitle:andObject:",
+    "isExpandableAtArrangedObjectIndexPath:",
+    "_offsetSelectedKeyFramesByOffset:primaryKeyFrameIndex:primaryTimeLineIndex:",
+    "recursivelyRemoveQFilterCellViews:",
+    "_setAllowedItems:",
+    "window:shouldPopUpDocumentPathMenu:",
+    "createTexture",
+    "textViewDidChangeSelection:",
+    "startWatchingLDAPCards",
+    "fileListOrderedByFileProperty",
+    "relationship",
+    "nts_SubgroupsOfGroup:",
+    "_userSelectSingleRow:",
+    "updatePropertyWidth:andComparisonWidth:",
+    "intersectHashTable:",
+    NULL,
+    "selectionRectAdded",
+    "reloadThumbnailAtIndex:",
+    "isPredicateSearchingEnabled",
+    "_monitorKeyBinding:flags:",
+    "_initQLAccessiblity",
+    "replace:",
+    "_imageForColorPicker:",
+    "fileAttributesToWriteToFile:ofType:saveOperation:",
+    "normalizeFindOptions:",
+    "_keychainItem",
+    "_writeFontInRange:toPasteboard:",
+    NULL,
+    NULL,
+    "deleteRows:atIndex:",
+    "_supportsSimultaneousSegmentAndLabelTrackingWithEvent:segment:",
+    "_scrollColumnsForScrollerIncrementOrDecrementUsingPart:",
+    "_messageString",
+    "_isEditingTextView:",
+    "resetOptionsInfo",
+    NULL,
+    "_syncToChangedToolbar:itemMoved:",
+    "indexOfFirstRangeContainingOrFollowing:",
+    "runModalForDirectory:file:types:",
+    "_hideWithoutResizingWindowHint",
+    "removeTexturesInContext:owner:",
+    "_initWithCredentials:owner:host:port:scheme:",
+    "_handleCommand:",
+    "sharedInstance",
+    "writeFilter:toLocation:",
+    "setIndeterminate:",
+    "textureIsPacked",
+    "_CGImageRef",
+    "_clearTableCells",
+    "_actualOrderingFilePropertyAscending:",
+    "clearRecentDocuments:",
+    "initInNode:recordRef:",
+    "_convertersListMutex",
+    "_handleSelectionInFocusRingMode:",
+    "dateWithTimeIntervalSinceReferenceDate:",
+    "createUsersDictionaryFromNames:inNode:",
+    "copyDeepStateFromMovie:",
+    "popGlyph:",
+    "chainChildContext:",
+    "initWithPath:traverseLink:",
+    NULL,
+    "originalSize",
+    "validate",
+    "initWithCapacity:compareSelector:",
+    "_accessibilityUIElementForPartCode:",
+    NULL,
+    NULL,
+    "viewWillBecomeActive",
+    "__setDictionaryRepresentation:",
+    "stopEditing",
+    "interpretEventAsText:forClient:",
+    "shouldProceedAfterError:copyingItemAtPath:toPath:",
+    "_shouldRestoreSharedPreviewViewForURL:",
+    "horizBlur16ROI:destRect:",
+    NULL,
+    "setBidiLevels:forGlyphRange:",
+    "_selectedRanges",
+    "setFeature:isEnabled:",
+    "setupSlider:input:",
+    "xHeight",
+    "_parseArgumentsWithSeparator:",
+    "_addOutput:forKey:",
+    "enumerateRects:outRect:",
+    "_scriptingDateDescriptor",
+    "attributedStringForZero",
+    "_unlockQuickDrawPort",
+    "setBaseAffineTransform:",
+    "characterIndexAtPoint:",
+    "backgroundHasAlpha",
+    NULL,
+    "openWithApplication",
+    "drawCrayonLayer",
+    "setImportsGraphics:",
+    "_dateIsAM:",
+    "isUsingDefaultAddressBookDirectory",
+    "sharedDocumentController",
+    "_buildCursor:cursorData:",
+    "setState:",
+    "setupAsPeoplePicker:",
+    NULL,
+    "imageExporterRegistryTimestamp",
+    "_allowAnimated_setBackgroundFilters:",
+    "setSubviews:",
+    "_canCreateCollapsedSpecifierFromRangeRecord:",
+    "_resizeForMetal:style:topHeight:bottomHeight:",
+    "setImageScaling:",
+    "_vCardKeysForPhoneLabel:",
+    "setRed:green:blue:alpha:",
+    "_coreUIBorderDrawOptions",
+    NULL,
+    "_generateErrorDetailForKey:withValue:",
+    "setValue:forProperty:recordCouldBeInDatabase:",
+    "_prepareResultsFromResultSet:usingFetchPlan:",
+    "_continuousCheckingAllowed",
+    "_distillFilterList:",
+    "_selectorDictionary",
+    "_scaledBackground",
+    "initializeBackingStore:sentinel:",
+    "_stopRun",
+    "_imageKitViewClass",
+    "setClientData:",
+    "isEqualTo:",
+    NULL,
+    "rootData",
+    "hasMarkedText",
+    "scopeButtonAction:",
+    "orderOut",
+    "printOidAsDecimal:",
+    "shapeWithCGSRegion:",
+    "outlineViewItemDidCollapse:",
+    "commandDescriptionsInSuite:",
+    "allXMLNSAttributes",
+    "setRootGraph:",
+    "postNotificationNamed:",
+    "unlockDocument",
+    "_userSelectColumnIndexes:withNewAnchorColumn:",
+    "_setCacheWindowNum:forWindow:",
+    "vCardRepresentationOfRecord:",
+    "_batchCollapseItemsWithItemEntries:collapseChildren:",
+    "_rowHeightStorage:",
+    "initWithNSBitmapImageRep:options:",
+    "removeAllContentObjectsInCellOrControl:",
+    "_restoreInitialMenuPosition",
+    "_isAncestorOf:",
+    "_allBinderClasses",
+    "_doModalLoop:peek:",
+    "_subImageFocus",
+    "animationDidStart:",
+    "setDataRetained:",
+    "comboBoxTextDidEndEditing:",
+    "takeIntegerValueFrom:",
+    "_abCompareNotWithinIntervalFromTodayYearless:",
+    "abortTransition",
+    "hide",
+    "leftExpression",
+    "_isInsertingText",
+    NULL,
+    "_referralSignUpURLWithLookupPath:andApplicationID:",
+    "_menuItem",
+    "_deselectRowRange:",
+    "minimumIntegerDigits",
+    "isAsync",
+    "_listRequestPostHandler:",
+    NULL,
+    "nts_mailRecentsManagedObjectContext",
+    "_initTransactionWithRequest:synchronousFlag:delegate:",
+    "valueTransformer",
+    NULL,
+    "updateMovieFile",
+    "initWithStatement:forAdapter:",
+    "_processText:",
+    "setMinSize:",
+    "like:",
+    "_isDraggable",
+    "_computedStringForNode:property:",
+    "showGotoWithInitialFilename:",
+    "replyEvent",
+    "isDirty",
+    "prepareForDifferentCard",
+    "setShortMonthSymbols:",
+    "mappingForRelationship:forConfigurationWithName:",
+    NULL,
+    "scrollItemAtIndexToVisible:",
+    "initWithIconRef:",
+    "_registerRuleDelegateForNotifications",
+    "bindItem:withUID:",
+    "_setSearchSlice:toHaveAttributeName:inButton:",
+    "selectIdentifier:forPerson:byExtendingSelection:",
+    "_handleWordCallbackWithParams:",
+    "matchesAnyFile",
+    "panel:isValidFilename:",
+    "createTranslatedImageByX:Y:",
+    "_alignmentGridWidth",
+    "accessibilityIsRowsAttributeSettable",
+    "hasText",
+    "_prepareConst:inAttribute:sensitiveOptions:",
+    "_conversionChainFrom:to:",
+    NULL,
+    "copyThumbnailImage",
+    "_detachFromParent",
+    "_relativeURLPath",
+    "_wrappingAttributes",
+    "startAutoscroll",
+    "handleKeyDown:inNode:view:",
+    "_thumbnailThread:",
+    "setNavDataSource:",
+    NULL,
+    "converterLockFileName",
+    "nicestRenderingPrepareExpendStep:",
+    "_accessibilityConfigureToolbarItem",
+    "numParts",
+    "setDisplayColorSpace:",
+    "scriptErrorNumber",
+    "_cancelDelayedShowOpenHandCursor",
+    "initWithFilterArray:",
+    "outlineView:willDisplayOutlineCell:forTableColumn:item:",
+    "setKeyEquivalentFont:size:",
+    "valuesForKey:",
+    NULL,
+    "changeInstantField:",
+    "ruleEditor:displayValueForCriterion:inRow:",
+    "_key",
+    "_coreUIWidget:",
+    "_listTypeDescriptions",
+    "makeStale",
+    "layoutParagraphAtPoint:",
+    "invalidateTransformedImage",
+    "clip:",
+    "ascender",
+    "putPropertyInOtherMenu:",
+    "revertToSavedFromFile:ofType:",
+    "_SFCertificatePanel_disclosureStateChanged:",
+    "_scaleFactor",
+    "didOpen",
+    "imageColorSpace",
+    "_firstJobPageNumber",
+    "_containsIMKeys:",
+    "_lockWaitingForOperation",
+    "_isBindingEstablished:",
+    "metadataForKey:",
+    "rulerAttributesInRange:",
+    "setAttachmentCell:",
+    "_attachmentCellForSelection",
+    NULL,
+    "setInputsVisibilityMask:",
+    "disableHeartBeating",
+    "loadLibrary:",
+    "_valueTypeForParameter:",
+    "executableArchitectures",
+    "_gaugeImage:",
+    "_proxyInitWithContainer:getter:",
+    "setPressedImage:forControlTint:",
+    "isHiddenOrHasHiddenAncestor",
+    "rangeOfTextList:atIndex:",
+    "setStores:",
+    NULL,
+    "_themeContentRect",
+    "_menuItemViewerChangedFrame:",
+    "CA_lastPathComponent:",
+    "unSelectedImageBackgroundPiece",
+    "frameOfCellAtColumn:row:",
+    "data",
+    "alternateMnemonicLocation",
+    NULL,
+    "_maximumItemViewerHeight",
+    "curveToX1:andY1:andX2:andY2:andX3:andY3:",
+    "_mouseDragged:",
+    "_setFrameFromHIViewFrame:",
+    "applyPaste",
+    NULL,
+    "_accessibilityIsSupportedPartCode:",
+    NULL,
+    "fontDescriptorWithSize:",
+    NULL,
+    "_notifyEditorStateChanged:",
+    NULL,
+    "_cffireTime",
+    "removeFilter:",
+    "setupSearchResults",
+    "resetHUDFadeTimer",
+    "_indexOfNode:inOrderedNodes:",
+    "vCardRepresentationOfRecords:",
+    "orderFrontSpacingPanel:",
+    "dateWithCalendarFormat:timeZone:",
+    NULL,
+    "_reconcileToExtensionDescription:suiteRegistry:",
+    "_rowHeaderShadowSurfaceIsShowing",
+    "vectorWithPoint:",
+    "nts_Subscriptions",
+    "empty",
+    "setPublicID:",
+    "_isAppSmartFolderNameUsed:",
+    "_doPostColumnConfigurationDidChangeNotification:",
+    "_isEmptyMovie",
+    "_disableTrackingArea:",
+    "_drawKeyboardFocusRingWithFrame:",
+    "isNativeName:",
+    "runMode:beforeDate:",
+    NULL,
+    NULL,
+    "_addMultipleToTypingAttributes:",
+    "dataCell",
+    "_installCocoaWindowEventHandlers",
+    "_setDisplayedView:transition:willShowPreview:",
+    NULL,
+    "alternateImage",
+    "gotoPosterFrame:",
+    "computeTableHeight",
+    "setValue:forKeyFrame:controlType:",
+    "allowsTickMarkValuesOnly",
+    "unchainContext",
+    "drawFocusRing",
+    NULL,
+    "_freeData",
+    "imageFlow:didSelectItemAtIndex:",
+    "willRemoveCacheNodes:",
+    "_pauseLayerTreeRenderingForWindowOrderOut:",
+    "setTopBorderColor:",
+    "drawsWithFinalCutStudioCompatibleColors",
+    "_drawerDefaultRightTrailingOffset",
+    "andPredicateOperator",
+    NULL,
+    "_multipleValueForKey:atIndex:",
+    "_patchFromComposition:",
+    "removeMovieFromIdleList",
+    "_scriptingRectangleWithDescriptor:",
+    "_setFrameSize:forceScroll:",
+    "setSidebarOutlineView:",
+    "createFirstLastSorting:part1:",
+    "bestLocationRep",
+    "URLProtocol:didFailWithError:",
+    "_attachSheetWindow:",
+    "stopTracking:at:inView:mouseIsUp:",
+    NULL,
+    "drawGridInClipRect:",
+    "rotateImageRight:",
+    "statusForABPerson:",
+    "_generateScaledBackground",
+    "adjustedDocumentPreviewFrame:withMinSize:maxSize:",
+    "speechSynthesizer:willSpeakWord:ofString:",
+    "_surface",
+    "_replaceObject:forKey:",
+    "entities",
+    "isLoaded",
+    "relativePosition",
+    "initWithUnsignedLong:",
+    NULL,
+    "purgeable",
+    "load:",
+    "setQueryTitle:",
+    "setCachedWindow:",
+    "uniqueSpellDocumentTag",
+    "setGraphicsState:",
+    "_invalidateResourceForGraphicsContext:",
+    "_scriptingInsertObject:inValueForKey:",
+    "setIsFileProperty:displayed:",
+    "_setSavedDelegate:",
+    "pageRef",
+    "_setModalWindowLevel",
+    "scrollColumnToVisible:",
+    "removeAllToolTipsForView:withOwner:",
+    "names",
+    "hyphenCharacterForGlyphAtIndex:",
+    "_sheetHeightAdjustment",
+    "_announce",
+    "mouseCell",
+    "sharedInit",
+    "proposedCredential",
+    "initWithFileAtPath:",
+    "templateViews",
+    "_setPrinter:inPrintSession:",
+    NULL,
+    "windowDidChangeScreen:",
+    "mouseInside:",
+    NULL,
+    NULL,
+    "importedCards",
+    NULL,
+    "HTTPMethod",
+    "_flushCaches",
+    "objectValueSupportsEnabledState:",
+    "_unshowOpenHandCursor:",
+    NULL,
+    "_incrementLocalProxyCount",
+    "isCardPaneVisible",
+    "setCreatesSortDescriptor:",
+    "apply",
+    "addSubview:",
+    "setGoverningAlias:",
+    "_expandItemEntry:expandChildren:",
+    "setAncillaryData:",
+    "mouseExited:",
+    "_processHeadElement:",
+    "composite:over:",
+    "_dispatchRequest:requiringResult:",
+    "isExtensionHidden",
+    "_proxyLocator",
+    "setSourceAlias:",
+    "qdPort",
+    "columnAverageImage:extent:",
+    "linkWithCharacterRange:parent:",
+    "insertElement:atIndex:",
+    "setMaximumLineHeight:",
+    "reallySaveFilter:notification:",
+    "_addLibxml2TreeRepresentationToDoc:context:",
+    "_editOtherSliceKind:",
+    "downloadResource:",
+    "registerTaskName:withTaskDescriptor:taskOrder:",
+    NULL,
+    "uniqueNameForPerson:atPath:",
+    "windowDidBecomeKeyNotification:",
+    "_createFSRefForPath:",
+    "trackWithEvent:inView:withDelegate:",
+    "saveWithGlyphOrigin:",
+    "writeToFile:ofType:originalFile:saveOperation:",
+    "convertNeutralTemperature:tint:toX:y:",
+    "messagingAddressesWithService:owner:withAddressBook:",
+    "_getRemainderFrame",
+    "extract1ROI:destRect:",
+    "setHorizontalEdgePadding:",
+    "visibleRect",
+    "unlockMipmapItem:",
+    "setMouseDownLayer:",
+    "rectForBlock:layoutAtPoint:inRect:textContainer:characterRange:",
+    "stringByAppendingFormat:",
+    "iconForFile:",
+    "initWithScrollView:orientation:",
+    "ordinalityOfUnit:inUnit:forDate:",
+    "headerLevel",
+    "stamp",
+    "acceptColor:atPoint:",
+    "verticalBoxAddROI:destRect:userInfo:",
+    "response",
+    NULL,
+    "compositionPickerViewWillStopAnimating:",
+    "removeCollection:",
+    "_affectedExpandedNodesForNode:",
+    "beginUpdateBuffer:colorSpace:",
+    NULL,
+    NULL,
+    "setDictionaryRef:",
+    NULL,
+    NULL,
+    NULL,
+    "_validateViewIsInViewHeirarchy:",
+    NULL,
+    "hideHUDNow:",
+    "_drawingHIView",
+    NULL,
+    "instanceMethodFor:",
+    "_uploadLocalFileAtPath:toPath:withProps:andHeaders:",
+    "initWithGraph:",
+    "_didPresentDiscardEditingSheetWithRecovery:contextInfo:",
+    "discardCursorRects",
+    "_iconForOSType:",
+    "nextIndexInFreeFormLayoutWithDirectionKey:currentIndex:",
+    "_useIconNamed:from:",
+    "releaseGlobally",
+    "_layoutRowStartingAtIndex:withFirstItemPosition:gridWidth:",
+    "tokens:",
+    "allowAliasing",
+    "_filenameHasAcceptableFileType:",
+    "_chooseIdentitySheetDidEnd:returnCode:contextInfo:",
+    "registerName:withNameServer:",
+    "_applicationDidLaunch:",
+    "copyPixelsFromBounds:toSharedCGLContext:usingInternalFormat:",
+    "styleMask",
+    "emptyRectSet",
+    "_asciiDescription",
+    "_clearRememberedEditingFirstResponder",
+    "_cleanUp",
+    "toolTipForView:cell:",
+    "_setupImages",
+    NULL,
+    "setOpaqueShape:",
+    "registerObservingForAnalyzableKeyPath:",
+    "encodeNXObject:",
+    "hasSpaces:",
+    "initWithTitle:andURL:",
+    "instanceMethodDescFor:",
+    "disableFlushWindow",
+    "releaseSegment:ofSize:",
+    "newSelectStatementWithFetchRequest:",
+    NULL,
+    "setCaseSensitive:",
+    "_generateJoinSQLStringInContext:",
+    "speed",
+    "zeroPairedEntries",
+    "selectedGroup",
+    "_shouldProceedAfterErrno:linkingItemAtPath:toPath:",
+    "_formatObjectValue:invalid:",
+    "abortNicestRendering",
+    "initWithPath:documentAttributes:",
+    "_getConfigRequestPostHandler:",
+    NULL,
+    "_autoSizeView:::::",
+    "graphNode",
+    NULL,
+    "initWithObjectSpecifier:comparisonOperator:testObject:",
+    "finishSession",
+    "_updateContent",
+    "addedMembers:toGroup:",
+    "popActiveListAnalyzer",
+    "imageBrowser:moveItemsAtIndexes:toIndex:",
+    "_toolTipTimer",
+    "groupsController:outlineViewSelectionDidChange:",
+    "finishDownloadDecoding",
+    "tabView",
+    NULL,
+    "nts_hasSharedInstance",
+    "removeObjectAtIndex:",
+    "setAlternateMnemonicLocation:",
+    "_removeOutputForKey:",
+    "initPropPatchWithURL:patchProperties:deleteProperties:",
+    "currentImageIsAnimated",
+    "localDateOccurringOnSameCalendarDayAsDateInGMT:",
+    "_tokenizeCharactersAdjacentToSelectionForTextView:terminatorsNeeded:",
+    NULL,
+    "_drawUnifiedToolbarBackgroundInRect:withState:",
+    "lockOperation",
+    "_getInputTopLine",
+    "labelSizeForBounds:",
+    "_needsViewerLayout",
+    "onlineStatusButton",
+    "rearrangeObjects",
+    "_drawNode:bounds:",
+    NULL,
+    NULL,
+    NULL,
+    "_forceRedrawDragInsertionIndicator",
+    "_forceInsertionForObject:",
+    "initWithKind:options:",
+    NULL,
+    "backgroundStyleForHighlight:",
+    "_postscriptName",
+    "knobLayer",
+    "allResolutions",
+    "setParameter:forOption:",
+    "nextUnicodeStringStopTokens:quotedPrintable:trim:",
+    "addOriginalWidth:",
+    "magicCookie",
+    NULL,
+    "removeFavoriteInWindow:",
+    "setCalculatesAllSizes:",
+    "setIcons:forAnimationFilenames:",
+    "_drawRect:clip:",
+    "startPlayer:",
+    "letterCharacterSet",
+    "awakeAfterUsingCoder:",
+    "reverse",
+    "__invalidateInspector:",
+    "responseAsString",
+    "setNumberOfItems:",
+    "setShowIdentityBadges:",
+    NULL,
+    "localizedDisplayName",
+    "prepareRenderingOrderingWithIndexes:",
+    "generateDefaultThumbnail",
+    "addColumnFilter:forColumnTitle:andIdentifier:",
+    "copyBindingsFromObject:toObject:",
+    "selectedTextColor",
+    "patternRepeatROI:forRect:userInfo:",
+    "mergeSimilarMultiValuesForPerson:",
+    "dateStyle",
+    "blurVerticalPass7ROI:destRect:",
+    "replaceAndFindInView:",
+    NULL,
+    NULL,
+    "niceImageForSize:forGLRendering:cacheIt:",
+    "effectsDisabledIcon",
+    "_reserved_SFCertificateTrustPanel",
+    "_drawDropHighlightAroundRect:isSelected:",
+    "drawAlphaFrame:",
+    "encodePoint:",
+    "edited:range:changeInLength:",
+    "_selectItem:",
+    "_drawTitledFrame:",
+    "layoutManagerDidInvalidateLayout:",
+    "_minExpandedFrameSize",
+    "setupAuthType:",
+    "_propertyKeyFromElement:withName:",
+    "_bonafiedDealloc",
+    "generateSQLStringInContext:",
+    "characterBuffer",
+    "_attributedValuesFromStringValues:",
+    "isSubclassOfClass:",
+    "_refreshFormatDescriptionsAttribute",
+    "accessibilityHelpAttribute",
+    "_dateFormatter",
+    "loadCompositionFromFile:",
+    "_discardCursorRect:",
+    "_cellForObject",
+    "unlockBufferRepresentation",
+    "currentCommand",
+    "_setBackgroundTransparent:",
+    "sharedTableOptions",
+    "_propertyType",
+    "addFieldTypeToDictionaryRef:",
+    "_fixedSelectionRangesForRanges:affinity:",
+    NULL,
+    "_searchFieldDoRecent:",
+    "_shouldByDefaultInsertAtBeginningOfRelationshipForKey:",
+    "addObject:toPropertyWithKey:",
+    "_loadSavedLayout",
+    "stopObservingPreviewNode",
+    NULL,
+    "source",
+    "setDisplayedStringsArray:",
+    "tokenFieldCell:displayStringForRepresentedObject:",
+    NULL,
+    "_adapter",
+    "showsStateBy",
+    "_pinnedInDirectionOfScroll:",
+    "_initFromGlobalWindow:inRect:styleMask:",
+    "zipFileArchive",
+    "_imageLevel_backgroundColor",
+    "_rulerAccViewSetUpLists",
+    "_scriptingRectangleDescriptor",
+    "startPoint",
+    "writeToURL:atomically:",
+    "_stopTimeOut",
+    "_centerScanSeparatorRect:",
+    "_initNicestRenderingCellOrderedIndexes",
+    "viewForPreferenceNamed:",
+    "_suppressNotification",
+    "_errSheetDidDismiss:returnCode:contextInfo:",
+    "_newShowFontsItem",
+    "dataSize",
+    "_updateWidgets",
+    "_shouldTerminate",
+    "_copyConnectionsOfView:referenceObject:toView:referenceObject:",
+    "typesetterLaidOneGlyph:",
+    "setCountPerLines:",
+    "readFromURL:ofType:error:",
+    "clearSelectedPagesDrawNow:",
+    "setRepeatCountForNextCommand:",
+    "_renderTimer",
+    "_updateTheaterWindowState",
+    "runModalPrintOperation:delegate:didRunSelector:contextInfo:",
+    "isInInterfaceBuilderApp",
+    "_setPrintEventRetrofitInfo:",
+    "syncPageIndexToScrollView",
+    "initSetLengthActionWithItem:withLength:",
+    NULL,
+    "_manuallyDrawSourceListHighlight",
+    "_adjustCancelButtonCellImages::",
+    NULL,
+    "clearPrivateFields",
+    "_updateWindowAnchor",
+    "_toggleShown:",
+    "_trustHeaderValue",
+    "outlineView:acceptDrop:item:childIndex:",
+    "setHeader",
+    "initWithCGLSContext:pixelFormat:options:",
+    "initWithView:height:fill:isHorizontal:",
+    "_generateSQLForProperty:startEntity:startAlias:keypath:inContext:",
+    "channelMapping",
+    "addPersonButton",
+    "_drawLineForGlyphRange:inContext:from:to:at:thickness:lineOrigin:breakForDescenders:flipped:",
+    "dbSnapshot",
+    "_changeKeyAndMainLimitedOK:",
+    "_resetDiscardMask",
+    "_invalidateAllRevealovers",
+    "endPageSetup",
+    "authenticationType",
+    "windows",
+    "_enableItem:",
+    "registerModelKeyPaths:unregisterModelKeyPaths:",
+    "setPassword:",
+    NULL,
+    "representedURL",
+    "startArrowScrolling",
+    "initWithMetadataManager:",
+    NULL,
+    "scrollScreenBy:",
+    "releaseTexturePackerAtIndex:",
+    "_allowAnimated_setBoundsSize:",
+    NULL,
+    "_collectItemRectsForViews:count:inBounds:",
+    "itemViewer",
+    "addFieldIndex:forKey:",
+    "resetCursorRect:inView:",
+    "_optionsForBinding:specifyOnlyIfDifferentFromDefault:",
+    "_createMutableSetValueWithSelector:",
+    "methodDescriptionForSelector:",
+    NULL,
+    NULL,
+    "updateOptionsUI",
+    "createRelationshipChildOnNode:forRelationshipDescription:",
+    "notifyPerform:",
+    "accessibilityIsTitleUIElementAttributeSettable",
+    "dateRangeTrimmedFromNearestEndWithDate:",
+    "_web_addDefaultsChangeObserver",
+    NULL,
+    "freeFormLayoutMoveWithDrop:",
+    "_generateSQLForString:expressionPath:sensitiveOptions:wildStart:wildEnd:allowToMany:inContext:",
+    NULL,
+    "_dataSourceNumberOfChildrenOfItem:",
+    "_appendStringInKeyNode:key:value:",
+    "serializePListKeyIn:key:value:",
+    "_textTransform",
+    "advanceToSingleByteString",
+    "_blueAlternatingRowColor",
+    "_windowDidResignKeyNotification:",
+    "hideOtherApplications",
+    "primaryKeyColumnDefinitions",
+    "_labelRectForTabRect:forItem:",
+    "initWithSearchStrategy:",
+    "timeZone",
+    "_commonNavFilepathInputControllerInit",
+    "_isToManyRelationship",
+    "resetStandardUserDefaults",
+    "_deregisterForAutosaveNotification",
+    "sizeToFit",
+    "isTransient",
+    "saveAndTriggerSync:udpateModificationDate:",
+    "initWithSQLEntity:ownedObjectID:andTimestamp:",
+    "addTabStop:",
+    "willApply",
+    NULL,
+    "_removeObjectsAtArrangedObjectIndexes:contentIndexes:objectHandler:",
+    "containerComponent",
+    "_finish_initialization",
+    "_layerTreeRendererPaused",
+    "_notifyIM:withObject:",
+    "horizBlur1ROI:destRect:",
+    "_calcTextRect:",
+    "smartGroup",
+    NULL,
+    "setDocumentURLs:withVisibleIndex:",
+    "_isNativeType:forDocumentClass:",
+    "_isRowVisible:",
+    "mergeCells",
+    "firstObjectCommonWithArray:",
+    "_allowsContextMenus",
+    "numberOfItemsInComboBox:",
+    "_cellFrame",
+    "validAttributesForMarkedText",
+    "_sizeWithSize:attributedString:",
+    "_setHidden:setNeedsDisplay:",
+    "setLeftChild:",
+    "regionWithCGRect:",
+    "_isSaveFilenameLengthLegal",
+    "_indexOfSubfieldAtPoint:inFrame:",
+    "pageIndex",
+    "raisesForNotApplicableKeys",
+    "_setShowingModalFrame:",
+    "decrementNumberOfThreadsAlive:withSessionUID:",
+    "refreshObject:mergeChanges:",
+    "interpolate:",
+    "_exitElement:tag:display:startIndex:",
+    "initWithHTML:options:documentAttributes:",
+    "continuouslyUpdatesValue",
+    NULL,
+    NULL,
+    "destinationTypeForMigration:sourceMetadata:error:",
+    "setSelectIntermediate:",
+    "_setConfigurationFromDictionary:notifyFamilyAndUpdateDefaults:",
+    "captureOutput:shouldChangeOutputFileAtURL:forConnections:dueToError:",
+    "stringWithContentsOfURL:encoding:error:",
+    "_setShouldDrawArrow:",
+    "_viewFromAttributeType:",
+    "_needsUpdate",
+    "removeObjectsInArray:",
+    "_moveItemFromIndex:toIndex:notifyDelegate:notifyView:notifyFamilyAndUpdateDefaults:",
+    "_setKeyboardFocusRingNeedsDisplayForTabViewItem:",
+    "createNewImageWithCallback:param:applyFilters:",
+    "resumeWithScriptCommandResult:",
+    NULL,
+    "fastMipmapItemWithExactSize:",
+    "_initLockRequest",
+    "canGoForward",
+    "_loadDeadKeyData",
+    "setShowsResizeIndicator:",
+    NULL,
+    "_setPathWithBuffer:",
+    "_scrollViewForColumnsDocumentViewFrameDidChange:",
+    "doSetValue:",
+    "buttonROI:forRect:userInfo:",
+    "highlightedItem",
+    NULL,
+    "mutableSet",
+    NULL,
+    "_setSingleValue:forKey:",
+    "rangesForUserCharacterAttributeChange",
+    "_forgetSpellingFromMenu:",
+    "adminGroup",
+    "_drawerDefaultTopLeadingOffset",
+    "outlineView:namesOfPromisedFilesDroppedAtDestination:forDraggedItems:",
+    "_copyValueOfDescriptorType:toBuffer:ofLength:",
+    "compositionURL",
+    "initWithAccount:",
+    "_setPredicate:",
+    "_manualDrawBackgroundForGroupRow:inRect:",
+    "attribute",
+    "_diskCacheSetSyncTimer",
+    "decimalNumberByMultiplyingBy:withBehavior:",
+    "_boundToHIView",
+    "execute",
+    "initWithNib:",
+    "cachePropertyValue:withKey:uniqueId:addressBook:",
+    "browserScroll",
+    "allModes",
+    "_setWantsToBeOnMainScreen:",
+    NULL,
+    "cacheItem:withUID:",
+    "lineFragmentPadding",
+    "initWithQuickTimeMedia:error:",
+    "_noteNote1:",
+    "SMPTETimeValue",
+    "registerSearchDataSource:",
+    "annotationType",
+    "_initWithResumeInformation:delegate:path:",
+    "noiseReduceROI:destRect:",
+    "setRegion:",
+    NULL,
+    "resizeWindow",
+    "_observeValueForKeyPath:ofObject:context:",
+    "_computeCameraDZ",
+    "_allocAuxiliaryStorage",
+    "deselectRow:",
+    "tableView:didChangeToSelectedRowIndexes:",
+    "LDAPQueryString",
+    "indexToRenderForNonOrderedIndex:",
+    "accessibilityNumberOfCharactersAttribute",
+    "control:didFailToFormatString:errorDescription:",
+    "setPreferredVolume:",
+    "_openFileWithoutUI:",
+    "suggestDiscloseTextClicked:",
+    "createConnectionFromPort:toPort:forKey:",
+    "__copyPixels:withSize:toCurrentFocusedViewAtPoint:",
+    "_setAutosizedWindowHeight:",
+    "handleMetadataCallback",
+    "_minBoundsHeight",
+    "_implicitObservationInfoForEntity:forResultingClass:",
+    "stringByAddingPercentEscapesUsingEncoding:",
+    "rotate:by:about:",
+    "initWithTreeController:keyPath:",
+    "dateByAddingYears:months:days:hours:minutes:seconds:",
+    "setImageWithURL:imageState:",
+    NULL,
+    "destinationEntityName",
+    "indexOfObjectIdenticalTo:inRange:",
+    "putLocalFileAtPath:toPath:withHeaders:",
+    "setContainerSpecifier:",
+    "_finalize_QCCGLContext",
+    "_addNote:",
+    "_mappingForConfigurationNamed:",
+    "drawDragHighlight",
+    "activeFileListDelegate",
+    "_expandToFitTextFields",
+    NULL,
+    "setURL:blockingUntilLoading:timeoutDate:transition:",
+    "_generateSQLForExpression:allowToMany:inContext:",
+    "_markLiveResizeColumnLayoutInfo",
+    "invalidateTextContainerOrigin",
+    NULL,
+    "fileSystemRepresentation",
+    "defaultGutterWidth",
+    "_handleObservingRefresh",
+    "_processPendingDeletions:withInsertions:withUpdates:withNewlyForgottenList:withRemovedChangedObjects:",
+    "compositionPickerView:willSelectComposition:",
+    "textView:willChangeSelectionFromCharacterRanges:toCharacterRanges:",
+    "setStroke",
+    "mouseDownFlags",
+    "_rangeOfTextTableRow:atIndex:",
+    "_fetchCurrentDirectory",
+    "thumbnailMaxSize",
+    "nibName",
+    "createTextureBufferFromTextureBuffer:target:bounds:flip:options:",
+    "_getAppleUseCoreUI",
+    "processProcessingInstruction:",
+    "emailList",
+    "_handleFileListConfirmedSelection:",
+    "initWithContentsOfFile:error:",
+    "defaultMappingGenerator",
+    "jumpSlider:",
+    "updateTextView",
+    "takeValue:forKey:",
+    NULL,
+    "_createTimer:",
+    "download:decideDestinationWithSuggestedFilename:",
+    "initWithSetFunc:ivarOffset:",
+    NULL,
+    "searchField:shouldChangeCancelButtonVisibility:",
+    "internalState",
+    "_web_URLByRemovingUserAndPath_nowarn",
+    "_makeRightCellKey",
+    "_removeKey:",
+    "setCropZoneBehavior:",
+    "_contentsTypeDescription",
+    "setAbsorbedCount:forIndex:",
+    "comparisonChanged:",
+    "_windowResizeCornerThickness",
+    "writeToFile:atomically:updateFilenames:",
+    "_setCancel:",
+    "minimumFontSize",
+    "hueComponent",
+    "restoreAttributesOfTextStorage:",
+    "initWithHTML:documentAttributes:",
+    "boundingRectWithSize:options:",
+    "_tile:",
+    "orderAdapterOperations",
+    "setHeadIndent:",
+    "viewTranslationCallback:whichView:mousePt:",
+    NULL,
+    "_doUpdateServicesMenu:",
+    "controlTextDidBeginEditing:",
+    "windowWithWindowNumber:",
+    "initWithQuickTimeMovie:disposeWhenDone:delegate:error:",
+    "gridIndexToClientIndex:",
+    "_old_initWithCoder_NSTabViewItem:",
+    "accessibilityColumnIndex",
+    "insertPages:",
+    "setQuoteBinding:",
+    "initWithJSString:",
+    "deselectItemAtIndex:",
+    "runModalForCertificates:showGroup:",
+    "_subrowEqualing:inArray:",
+    "_popTableState",
+    "disappearingItemCursor",
+    NULL,
+    "next",
+    "firstCharBounds",
+    "editingTextRect",
+    "makeLocalPath:",
+    "abEndOfParagraphStartingAtIndex:",
+    NULL,
+    "addMoveOperationFrom:to:",
+    "setShowsStateColumn:",
+    "_noise3d:y:z:",
+    "retainCount",
+    NULL,
+    "setCurrentConstructionContext:",
+    "_size",
+    NULL,
+    "initWithMovie:timeRange:error:",
+    "stuckPixelElimination:threshold:phase:",
+    "userKeyEquivalent",
+    "initWithCarbonWindowRef:takingOwnership:disableOrdering:",
+    "askReviewDocumentsWithClient:documentCount:",
+    NULL,
+    "_drawDragBoundries",
+    "_setSelectionColorRed:green:blue:",
+    "setupImageBackgroundLayer",
+    "panTiltSpeed",
+    "_deleteSlice:",
+    "isSizeDisplayedForNode:",
+    "_shouldSmoothFonts",
+    "initWithBytes:length:encoding:",
+    "tickMarkValueAtIndex:",
+    "_postItemDidExpandNotification:",
+    "valueWithUniqueID:inPropertyWithKey:",
+    "knowsPagesFirst:last:",
+    "_configureLabelCellStringValue",
+    "_lockForWriting:",
+    "_getCollections",
+    "_setDataForkReferenceNumber:",
+    "beginTime",
+    "decodeForkWithData:count:CRCCheckFlag:",
+    "_registerClearStateWithUndoManager",
+    "_generateModel:",
+    "newSelectionIndexesWithIndexesInRect:withModifier:",
+    "coerceData:toTextStorage:",
+    "setIntValue:",
+    "outlineView:mouseDownInHeaderOfTableColumn:",
+    "secondaryInit",
+    "centerToPosition:",
+    "_web_isToday",
+    "endParagraph",
+    "flipImageVertical:",
+    "setDisableCountDown:",
+    "setStringParameterValue:to:",
+    "registerCoercer:selector:toConvertFromClass:toClass:",
+    "preloadWithQuality:",
+    "selectedControlColor",
+    "initWithWindow:delegate:",
+    "isSelecting",
+    "setObservingToModelObjectsRange:",
+    "maximizeSize:",
+    "_fireFindIndicatorTimer:",
+    NULL,
+    "finished",
+    "_configureGreyButton:index:",
+    "initWithInfo:withRepository:",
+    "canClickDisabledFiles",
+    "stringByDeletingLastPathComponent",
+    "encodeInt32:forKey:",
+    "opaqueShape",
+    "setCornerRadius:",
+    "_setUsesQuickdraw:",
+    "badgeLabel",
+    "accessibilityMaxValueAttribute",
+    "_titlebarHeight",
+    NULL,
+    "_childlessParentsIfSlicesWereDeletedAtIndexes:",
+    "writeParagraphStyle:",
+    "_rangeOfPrefixOfString:fittingWidth:withFont:",
+    "pauseSpeakingAtBoundary:",
+    "_createFontPanelRepFromCollection:removingHidden:",
+    "documentView",
+    NULL,
+    "_accessibilityIsModal",
+    "useSSL",
+    "destinationConfiguration",
+    NULL,
+    "setTextContainer:",
+    "classForAnnotationDictionary:",
+    "miniWindowFrameForItemFrame:canZoomFromCenter:",
+    NULL,
+    "isEnumeration",
+    "getObjectValue:forString:errorDescription:",
+    "encodeBycopyObject:",
+    "_runModalWithColor:",
+    "drawCapsule",
+    "trackKnob:",
+    "sync",
+    "entitiesForConfiguration:",
+    NULL,
+    NULL,
+    "_isCellSelected:",
+    NULL,
+    "channelLayout",
+    "setTextSizeMultiplier:",
+    NULL,
+    "dissolveToPoint:fromRect:fraction:",
+    NULL,
+    "_viewFromExpressionObject:",
+    "copyAllResources",
+    "hasValidObjectValue",
+    "_scriptingPointDescriptor",
+    "_adjustNibControlSizes",
+    "setDictionaryController:",
+    "setDisplayState:",
+    "_CAViewFlags",
+    "allowsDocumentBackgroundColorChange",
+    "setOriginalDontAskUnresolvedDataRefsFlag:",
+    "_descriptorOfType:withValue:",
+    "setSlideshowWasStartedWithStartRect:",
+    "drawRowIndexes:clipRect:",
+    "layoutSanityCheck",
+    "_menuItemViewFrameChanged:",
+    "initWithWhite:alpha:",
+    "serialize:length:",
+    "notifyObjectWhenFinishedExecuting:",
+    "_beginSrcDragItemViewerWithEvent:",
+    "addGroup:inGroupList:",
+    "drawBorderAndBackgroundWithFrame:inView:",
+    "usesItemFromMenu",
+    "imageBrowser:titleOfCellAtIndex:shouldEndEditing:",
+    "pressedImage",
+    "fileHFSCreatorCode",
+    "setLineHeightMultiple:",
+    "_sendDelegateWriteRowsWithIndexes:inColumn:toPasteboard:",
+    "_currentTitleAttributes",
+    "_drawBackground:",
+    "_setLineColor:",
+    NULL,
+    "setLineBreakMode:",
+    "initWithAttributedString:",
+    "pixelFormatM_If",
+    "displayValueForObjectValue:",
+    "_setGlyphGenerator:",
+    "cellForProxy",
+    "goForward",
+    "_positionsMenuAsPullDown",
+    "_updateAttributesFromAudioChannelVolumes",
+    "tmpNameFromPath:extension:",
+    "setPort:",
+    "setArgumentBinding:",
+    "popSubnode",
+    "_imageToDrawRefreshingCacheIfNecessaryForSize:",
+    "selectPrevious:",
+    "ignoreSpelling:",
+    "_addToOrphanList",
+    "advanceToEOLSingle",
+    "_sortUsingDescriptors:",
+    "_refactor:",
+    "accessibilityAttributeNames",
+    "createThumbnailFromURL:",
+    "isContainer",
+    "createUniqueContextWithOptions:",
+    "allBundles",
+    "frameExceedsMaximumOpenGLViewport",
+    "detachInstanceInfo:",
+    "_rowType",
+    "allowsFileCreation",
+    "setUsesFindPanel:",
+    "_validateSubviewFrames",
+    "closeMenuToIntersectionWithNewMenu:",
+    "_setFieldEditorUndoManager:",
+    "_setupAuxiliaryStorage",
+    "addAuthInfo:",
+    NULL,
+    "nts_TypeOfProperty:withAddressBook:",
+    "readFromData:options:documentAttributes:error:",
+    "initWithBytes:objCType:",
+    "_mainThreadCallback:",
+    "_hasAttributedStringValue",
+    "colorPanelColorDidChange:",
+    NULL,
+    "_updateWindow:withVisibilityState:",
+    "splitView:additionalEffectiveRectOfDividerAtIndex:",
+    "indexOfIdentityGroups",
+    "_kitBundle",
+    "mipmapWithSize:",
+    "supportedDecoderVersions",
+    "_accessibilitySplitterMinCoordinate",
+    "handleKeyboardShortcutWithEvent:",
+    "shouldSubstituteCustomClass",
+    "genericLabel",
+    "currentCalendar",
+    "rangeCount",
+    "displayMode",
+    "drawInteriorWithFrame:inView:",
+    NULL,
+    "_applicationStatusNotification:when:data:affectedASN:session:notificationID:",
+    "tighteningFactorForTruncation",
+    "otherMouseDragged:",
+    "qt_localizedUnknownErrorWithUnderlyingOSStatus:",
+    "_getCGCustomColorSpace",
+    "_refreshStreamsFromCallback",
+    "shadowState",
+    "configurePersistentStoreCoordinatorForURL:ofType:error:",
+    "lanczosTable",
+    "getInputWhiteParams",
+    NULL,
+    "alwaysPresentsApplicationModalAlerts",
+    "segmentedBufferAddress",
+    "_tryChallenge:",
+    "stopAutoUpdate",
+    "_initContent:styleMask:backing:defer:screen:contentView:",
+    "_selectModuleOwner:",
+    "_scriptingReplaceObjectAtIndex:withObjects:inValueForKey:",
+    "_setMouseTrackingForCell:",
+    "bufferDestination",
+    "_mostCompatibleCharset:",
+    "relativeLineToPoint:",
+    "findCombinationForLetter:accent:",
+    "signUpURLWithApplicationID:",
+    "_sendDelegateWriteIndexes:toPasteboard:",
+    "_sizeToFitColumn:withEvent:",
+    "convertViewRectToImageRect:",
+    "_setSinglePageScrolling:",
+    "compositionPickerView:performDragOperationOnComposition:sender:",
+    "setPreviewState:",
+    "setAttachment:",
+    "removeExisitingSyncSchedule",
+    "scrollWheelDelegate:",
+    "setVerticalPagination:",
+    NULL,
+    "setNumberOfSelectedItems:",
+    "_createScrollViewAndWindow",
+    "_web_isJavaScriptURL",
+    "_regenerateFormatter",
+    "encodeColumns",
+    "initWithPeople:parentGroup:addressBook:",
+    "initWithNotificationObject:",
+    "memberOfInputImage:",
+    "setPartialStringValidationEnabled:",
+    "mountedLocalVolumePaths",
+    "setFormattingDictionary:",
+    NULL,
+    "_validRememberedEditingFirstResponder",
+    "minimalSizeForText",
+    "beginDocument",
+    "_imageWithProgrammaticEffectsWithCompositeName:",
+    "bufferColorSpace",
+    NULL,
+    "initWithScope:",
+    "getRow:column:forPoint:",
+    "drawArrowedIndeterminateInteriorWithFrame:inView:",
+    "setInsertionPointColor:",
+    "firstRectForCharacterRange:actualRange:",
+    "tokenTextView:writeSelectionToPasteboard:type:",
+    "_centeredScrollRectToVisible:forceCenter:",
+    NULL,
+    "loadActions",
+    "mergeAttributesInto:",
+    "_configurationAutosaveName",
+    "_freeNonEssentialCaches",
+    "stopDelayedShowcase",
+    "_typographicLeading",
+    "canInitWithDataReference:",
+    "initWithAttributes:error:",
+    "textView:clickedOnCell:inRect:atIndex:",
+    "binderClassesForObject:",
+    "_clockAndCalendarTrackMouse:inRect:ofView:untilMouseUp:",
+    "markRecordWithGroupSubscription:",
+    "loadComposition:options:stateOK:",
+    "_collectItemRectsForLabels:count:inBounds:",
+    "rows",
+    "_old_initWithCoder_NSTableColumn:",
+    "fastMipmapItemForSize:forOpenGL:useMinimumQualityThreshold:",
+    "_dotMacEmailSigningUsage",
+    "textContainer",
+    "cacheMiniwindowTitle:guess:",
+    "invalidateLayoutForCharacterRange:actualCharacterRange:",
+    "removeUID:",
+    "_createPlusButtonIsRequired",
+    "setTextBlocks:",
+    "createTrustWithCertificates:policy:trust:",
+    "IMAVManagerStateChangedNotification",
+    "setSegmentSize:",
+    "getSavedNumVisibleRows:",
+    "fieldType",
+    "initWithDragInfo:tableView:completion:andRow:",
+    "_reducedSubpredicates:",
+    "printOperationWithSettings:error:",
+    "moveDownAndModifySelection:",
+    "topBorder",
+    "_iconRef",
+    "getCharacters:",
+    "_oldFirstResponderBeforeBecoming",
+    "initWithChar:",
+    "_setHasSeenRightToLeft:",
+    "_copyFlattenedPath",
+    "_insertionCharacterIndexForDrag:",
+    "initWithBitmap:rowBytes:bounds:format:",
+    "_shouldUpdateWindowFrame",
+    "_threadedImportTipCards",
+    "CTM",
+    "dateWithNaturalLanguageString:",
+    "delayedProcessGetInfoButtonClick:",
+    "_autoscrollDate",
+    "setZoomFactorY:",
+    "resourceBundles",
+    NULL,
+    NULL,
+    "initializeMaterialStructure:",
+    NULL,
+    "_fullCacheUpdateRecursive:intoRow:withIndentation:",
+    "_addTrackingRect:andStartToolTipIfNecessary:view:owner:toolTip:reuseExistingTrackingNum:",
+    "_lineFragmentDescription",
+    "removeDescriptorAtIndex:",
+    "trackEnumeratorWithMovie:",
+    "isNewPerson:",
+    "stringsByAppendingPaths:",
+    "deleteWordBackward:",
+    "_contextByfeContext:",
+    "setDynamicDepthLimit:",
+    "inputController",
+    "_compositeImage",
+    "setShowIdentityBadge:",
+    NULL,
+    "invokeServiceIn:msg:pb:userData:menu:remoteServices:",
+    "discardEditing",
+    "currencyGroupingSeparator",
+    "attributeColumns",
+    "QCImageKernelJavaScriptROIHandler:destRect:userInfo:",
+    "editingIndex",
+    "dismissWindow:",
+    "setShadowBlurRadius:",
+    "doIt",
+    NULL,
+    "_defaultProgressIndicatorColor",
+    "internCString:pointer:",
+    "drawSelectionArea:",
+    "initWithUIController:",
+    "newWithPath:prepend:attributes:cross:",
+    "setWidth:height:",
+    "abortEditing",
+    "_preferFilter",
+    "resetFormExcludingFields:",
+    "_isAnimating",
+    "vendorPointingDeviceType",
+    "_queryAccountForKey:synchronousFlag:delegate:",
+    "setShowsTrustButton:",
+    "_syncToChangedToolbar:itemRemoved:",
+    "__oldnf_containsString:",
+    "_insertDigit:",
+    "_addItemsInMenu:toTable:recursively:",
+    "_blankEvent:kind:",
+    "_parserableCollectionDescription:",
+    "_codeSigningAppleUsage",
+    "setNames:",
+    NULL,
+    NULL,
+    "imageWithData:",
+    "setPullsDown:",
+    "_makeCursors",
+    "_stretchWindowIfNecessaryToFitResizedColumnWithInfo:resizeColumnDelta:",
+    "PDFViewPerformPrint:",
+    "addClient:",
+    "_noLockForThread:",
+    "_dateRecorded",
+    "fetchedAddressBookSourceWithAddressBook:",
+    "previewView:didLoadPreviewForURL:",
+    "_prepPanel:showGroup:",
+    NULL,
+    "windowDidOrderOffScreen:",
+    NULL,
+    "_retainedObjectWithID:",
+    "showAsPerson:",
+    "_setScriptErrorExpectedType:",
+    "browser:validateDrop:proposedRow:column:dropOperation:",
+    "replacementObjectForArchiver:",
+    "setInitialToolTipDelay:",
+    "_undoManagerCheckpoint:",
+    "_setAnimationTargetRect:",
+    "_processPerformsInArray:",
+    "openFirstDrawer:",
+    "setSystemID:",
+    NULL,
+    "releaseCalendarSpecificResources",
+    NULL,
+    "setHeightTracksTextView:",
+    "rangeOfString:",
+    "_rowHeightStorageUpdateForInsertedRows:atIndex:",
+    "_windowFileButtonSpacingWidth",
+    "handleRollOverSelection:",
+    NULL,
+    "setShowsGetInfoButton:",
+    "_generateProperties",
+    NULL,
+    "snapsToDefault",
+    "selectedGRL",
+    "drawGlyphsForGlyphRange:atPoint:",
+    "removeIndex:",
+    "_previousKeyWindow",
+    "minColumnWidth",
+    "setMouseDownLocation:",
+    "issueCommandWithActionName:",
+    "_repeatTime",
+    "_finishInitialization",
+    "_contextImplByfeContext:",
+    "shouldStartEditingOnDoubleClick:key:",
+    "_valueForInputPort:",
+    "_invalidateFocus",
+    "hostName",
+    "keyForType:",
+    "_addQuoteForElement:opening:level:",
+    "_undoableSetCropPRSWithDisplay:",
+    "UIElementValue",
+    NULL,
+    "_oldValueForKeyPath:",
+    "_isTabEnabled",
+    "stripReconfiguringGRLs:",
+    "_drawThemeBackground",
+    "selectedFontChangedTo:",
+    "populateObject:withContent:valueKey:objectKey:insertsNullPlaceholder:",
+    "setPerMillSymbol:",
+    NULL,
+    "deserializeNewData",
+    "selectedImageFrame",
+    "turnObject:intoFaultWithContext:",
+    "_discardCursorRectsForView:",
+    NULL,
+    "insertRows:atIndex:",
+    "handleFetchRequest:",
+    "clearCurrentValues",
+    "usageInPreview",
+    "_viewSurfaceWillGoAway:",
+    "setDeferSync:",
+    "accessibilityInsertionPointLineNumber",
+    "setPaddingCharacter:",
+    "iconView:shouldTypeSelectForEvent:withCurrentSearchString:",
+    NULL,
+    "setDepthLimit:",
+    "nextText",
+    "reflectNewPageOn:",
+    "objectIDFactoryForSQLEntity:",
+    "initWithContainerClassID:key:proxyClass:",
+    "showAsCompany:",
+    "_removeTrackingRectsForView:stopTimerIfNecessary:",
+    "imageBrowser:titleOfCellAtIndex:didBeginEditing:",
+    "boundingBoxYAtRow:",
+    "initWithKey:appleEventCode:type:isOptional:presentableDescription:nameOrNames:",
+    "_nodeFromObject:objectIDMap:",
+    "setItemSupportedByiPhoto:",
+    "orderOutToolTip",
+    "horizontalCornerRadius",
+    "_editor:didCommit:withContext:",
+    "setDefaultFlatness:",
+    "toolTipColor",
+    "_postNetworkChangeNotification:",
+    "_hasSheetFactor:",
+    "control:textView:completions:forPartialWordRange:",
+    "classWithStore:andEntity:",
+    "_installRootMetricsHandler",
+    "framesProvider",
+    "_setDataSource:",
+    "domainOfDefinition",
+    "numberOfOperations",
+    "setLimit:",
+    "quiesce",
+    "stateImageRectForBounds:",
+    "_nodePreviewHelper",
+    "initWithDocumentURLs:controller:",
+    "deserializeNewPList",
+    "certSerialNumberIndex",
+    "_setConfigurationUsingName:domain:",
+    "addObject:objectIDMap:",
+    "containsWindowIdentifier:",
+    "_pointForTopOfBeginningOfCharRange:",
+    "indexSheetDidActivate:",
+    "_setUIConstraints:",
+    "_drawerIsOpen",
+    "deleteSelectedAnnotations",
+    "drawColor",
+    "windowDidEnableToolTipCreationAndDisplay",
+    "_recursiveOrderFrontSurfacesForNonHiddenViews",
+    "_setUpFoundationCoercions",
+    "applicationIconImage",
+    "webView",
+    "abProperURLWithString:",
+    "drawNormalInteriorWithFrame:inView:",
+    "_stopRendering:",
+    "newInsertedObjectForEntity:",
+    "_setRunningOperation:",
+    "waitUntilExit",
+    "textView:writablePasteboardTypesForCell:atIndex:",
+    "_crayonRowBelowRow:",
+    "autosaveExpandedItems",
+    "loadTextChars",
+    "_registerForAutosaveNotification",
+    "setSelectedGroup:",
+    "rulerMarkersForTextView:paragraphStyle:ruler:",
+    "prepareSelectStatementWithFetchRequest:ignoreInheritance:",
+    "setHorizontalLineScroll:",
+    "updateContext",
+    "removeAttribute:range:",
+    "textDidEndEditing:",
+    "supportsMutableFBENode",
+    NULL,
+    NULL,
+    "expandGroup:",
+    "ikInMainLoopWait:",
+    "_resizePostingDisabled",
+    "tokenFieldCell:readFromPasteboard:",
+    "_drawsOutsideBBox",
+    "updateCellOrControl:forMinValue:",
+    "_parseParagraphAttributesFromElement:attributes:",
+    "selectUp",
+    "dictionaryRepresentation",
+    "setCells:",
+    "containsPort:forMode:",
+    "SCTArrayByApplyingFunction:context:",
+    "stopObservingModelObjectsAtReferenceIndexes:",
+    "_releaseNodePreviewHelper",
+    "_checkInList:listStart:markerRange:emptyItem:atEnd:inBlock:blockStart:forCharacterRange:",
+    "_compatibility_seemsToBeVertical",
+    "_connectGraphUnitsForAudioOutputConnection:error:",
+    "computeRectOfRow:cacheHint:",
+    "imageWithCGLayer:options:",
+    "setFinalFrame:",
+    "_executePerformAction",
+    "comboBox:objectValueForItemAtIndex:",
+    "versionNumber",
+    "_handleFileListDidReloadChildrenForNode:",
+    "removeKnobLayer",
+    "cell:needInitialDataForKey:",
+    "_setHasActiveAppearance:",
+    NULL,
+    "enumeratorDescriptions",
+    "abortZoomPrefetchTask",
+    "configureForCanClickDisabledFiles:",
+    "draggingSequenceNumber",
+    "filterPasteboardWithPasteboard:",
+    "_separatorHeight",
+    "_traverseNode:depth:embedded:",
+    "setCharacterIndex:forGlyphAtIndex:",
+    "_terminateSendShould:",
+    "contentsOfDirectoryAtPath:error:",
+    "addAnimationGroup:",
+    "lockFilePath",
+    "setBoolParameterValue:to:inResolutionData:",
+    "parseCert:",
+    "_postFocusChangedNotification",
+    "setGhostCellCountOnTheLeft:",
+    "_parseDocumentAttributes",
+    "setWriteDefaultValue:",
+    "clockProviderNodeForConnection:",
+    "initWithDomains:Categories:Objects:Manager:",
+    "runBeforeDate:",
+    "clearCustomImage:",
+    "setShouldUpdateMarkers:",
+    "_animate:",
+    "URLHandleResourceDidFinishLoading:",
+    "_stringByReplacingChar:withChar:inString:",
+    "newReferenceObjectForManagedObject:",
+    NULL,
+    "isSourceType:",
+    "_printDataSourceWarning",
+    "browserDatasourceChanged",
+    "_releaseRFC822NamesArray",
+    "_paletteLabel",
+    NULL,
+    "_storeExpandedFrameSize",
+    "_000104",
+    "doCommandBySelector:commandDictionary:client:",
+    "setTooltipDelay:",
+    "largeImageData",
+    "defaultValueForParameter:",
+    "horizontalRulerView",
+    "_canUseTiledBackingLayer",
+    "hotspotEnumeratorWithNode:",
+    NULL,
+    NULL,
+    "createAlternateNameForPerson:",
+    NULL,
+    "calculateSetSize:::",
+    "choiceMenu:",
+    "sourceEntityName",
+    "exceptionRememberingObject:key:",
+    "initWithContainerClassID:key:methods:proxyClass:",
+    "rightMargin",
+    "_decodeDownloadData:dataForkData:resourceForkData:",
+    "mouseDownCanMoveWindow",
+    NULL,
+    NULL,
+    "imageRepsWithData:",
+    "sqlType",
+    "iconView:didClickOnDisabledCell:",
+    "addCertificate:toKeychain:",
+    "_trackingHandlerRef",
+    "_initWithContentsOfURL:ofType:",
+    NULL,
+    "remove:",
+    "startMagnifying:",
+    "didAccessValueForKey:",
+    NULL,
+    "setZoomsOnSelection:",
+    "_addColumnSubviewAndAnimateIfNecessary:",
+    "rulerView:didAddMarker:",
+    "createTablesForEntities:",
+    "drawers",
+    "_deactivateDocumentPreview:",
+    "visualizePatchExecution",
+    "_okClicked:",
+    NULL,
+    "_hideTooltip",
+    "_itemsFromRowsWithIndexes:",
+    "_cancelEditOnMouseUp",
+    "drawMessageInVisibleRect:",
+    "_fileButtonOrigin",
+    "_updateMenuItemIcon:",
+    "isSelectable",
+    "animateScrolling",
+    "addFieldNameToDictionaryRef:",
+    "_generateManyToManySQLStringInContext:",
+    NULL,
+    "_updatePanelTitle",
+    "_enableLayout",
+    NULL,
+    "timeIntervalSince1970",
+    "_actualPreviewType",
+    "subtractRegion:",
+    "_invitationFromContentsOfFile:",
+    "_resolveMarkerToPlaceholder:forBindingInfo:allowPluginOverride:",
+    "_filterPredicate",
+    "pixelFormatWithName:",
+    "_drawRulers:",
+    "_willChangeValuesForKeys:",
+    "insertItemViewer:atIndex:",
+    "binaryAttributes",
+    "setAutoPlay:",
+    "lastFilterElement",
+    "greenReconstruction:edges:phase:scale1:scale2:decisionImage:votingImage:",
+    "boundsRotation",
+    "privateVCardEnabled",
+    "startSlideshowWithDocumentURLs:fromView:controller:itemIndex:",
+    "_untitledNumberForDocument:",
+    "_findDictOrBitmapSetNamed:",
+    "setTransparent:",
+    "foreignEntityKeyForSlot:",
+    "purgeKeyFrameCache",
+    "process:",
+    "principalIDWithName:andOwner:",
+    "_canonicalRequestForRequest:allowCF:",
+    "_switchImage",
+    "runEditorForTimeLine:atKeyFrame:forTimeLine:controlType:inView:atPoint:",
+    "initWithOptionFlags:maxSize:maxAge:",
+    "user",
+    "_descriptor",
+    "addBinder:",
+    "paragraphGlyphRange",
+    "initPropFindWithSession:withDepth:URI:lookingForProps:",
+    "setTitleCell:",
+    "setCell:",
+    NULL,
+    "indexDataSourceArray:",
+    "componentsToDisplayForPath:",
+    NULL,
+    "_fetchExpandedState",
+    "connectO3Console:",
+    "setElementName:",
+    "scrollView",
+    "indexPathWithIndexes:length:",
+    "setActionName:",
+    "addWindowController:",
+    "_valueForKeyPath:ofObject:mode:raisesForNotApplicableKeys:",
+    "_findCoercerFromClass:toClass:",
+    "loadInForeground",
+    "initWithFrame:styleMask:owner:",
+    "descriptionForDebugger",
+    "selectNextKeyView:",
+    "_cycleWindowsBackwards:",
+    "baseSpecifier",
+    NULL,
+    NULL,
+    "_parseOpenGuide",
+    "_getValue:forKey:",
+    "_recursiveWindowDidEnableToolTipCreationAndDisplay",
+    "_validateExtrasButton:",
+    "setFrameUsingName:force:",
+    "openGLRenderingLockedForUnsynchronizedOperation",
+    "_setCertSigningUsage:",
+    "setPlugin:enabled:withAuthorization:",
+    "_runLoopThread:",
+    "enumeratorOfInputBottomLineParams",
+    "mipmapSize",
+    "_keysForPMKeys:",
+    NULL,
+    "initWithRootAttribute:",
+    "changedGroups:",
+    "getThreadResult",
+    "_toOneRange",
+    "notifySelectionDidChange",
+    "abDecodeBase64",
+    "_setAltContents:",
+    "prepareBetween:",
+    "setImageValue:",
+    "_drawBackgroundForGlyphRange:atPoint:parameters:",
+    "GDBDumpCursorRects",
+    "_newUniqueIdForTable:",
+    NULL,
+    "initWithCell:",
+    "setMinContentSize:",
+    "initWithString:attributes:",
+    "convertPoint:fromView:",
+    "refreshRow:",
+    "takeIntValueFrom:",
+    "_removeFileAtPath:handler:shouldDeleteFork:",
+    "isSynchronous",
+    "postsFrameChangedNotifications",
+    "phoneticMiddleName",
+    "indexOf:::",
+    NULL,
+    "allowsEditingMultipleValuesSelection",
+    "_prefersToBeShown",
+    "createMinimalSharedContext",
+    "_trackSelectedItemMenu",
+    "notifyCellsForChanges:",
+    "_allowAnimated_setFrameOrigin:",
+    "pixelFormatRGBAf",
+    "setThumbnailSize:",
+    "draggingSourceOperationMask",
+    "safeCloseReadStream:forceClose:",
+    "expiresDate",
+    "setAppearanceStyle:",
+    "setAllContextsSynchronized:",
+    "_boundingRectForGlyphRange:inTextContainer:fast:fullLineRectsOnly:",
+    "initWithEntity:andUUIDString:",
+    "_loadShaders:",
+    "_unformattedAttributedStringValue:",
+    "flatten:fromRect:format:colorSpace:",
+    "hideAddPeopleButton",
+    NULL,
+    "movieControllerBounds",
+    "_discardValidateAndCommitValue:",
+    "representations",
+    "_saveAppSmartFolderQueryNode:",
+    "sharedCoercionHandler",
+    "allowsColumnSelection",
+    "_shouldUseParensWithDescription",
+    "replaceLayoutManager:",
+    "parentRowForRow:",
+    "_computedStyleForElement:",
+    "recoveryAttempter",
+    "_multipleValuesObjectAtIndex:",
+    "setShowZoomMinMax:",
+    "invalidateSelectionBounds:",
+    "initCopyWithSession:sourceURI:destinationURI:token:",
+    "connection:willCacheResponse:",
+    "_web_URLByRemovingUserAndQueryAndFragment_nowarn",
+    "replacementObjectForCoder:",
+    "_performActivationClickWithShiftDown:",
+    NULL,
+    "dateWithNaturalLanguageString:locale:",
+    "matchingFontDescriptorsWithMandatoryKeys:",
+    "performSelector:object:afterDelay:",
+    "setValuesForKeysWithDictionary:",
+    "invokeSelector:withArguments:forBinding:object:",
+    "nextItemToUnbind",
+    "_scheduleWindow:forBatchOrdering:relativeTo:",
+    "_initWithSuiteName:commandName:implDeclaration:presoDeclaration:",
+    "window:didChangeToVisibleState:",
+    "setBorderColor:forEdge:",
+    "initWithSockaddrBuffer:",
+    "_drawerRightOffset",
+    "setVolatileDomain:forName:",
+    "registerThread",
+    NULL,
+    "_commitEditingDiscardEditingCallback:",
+    "setToolTipForView:rect:owner:userData:",
+    "_rfc822Name",
+    "setPortMaxValue:",
+    "rightMouseDraggedDelegate:",
+    "initWithConverters:softwareOnly:sourceTarget:sourceFormat:sourceColorSpace:destinationTarget:destinationFormat:destinationColorSpace:transformationType:",
+    "_secondsFromGMTForAbsoluteTime:",
+    NULL,
+    "certStatusFromDomainTrustSettings:isMixed:",
+    "drawCommentIcon:inContext:",
+    "_handleCurrentDirectoryNodeChanged",
+    "unselectedImage",
+    "moveToEndOfDocumentAndModifySelection:",
+    "inactiveColor",
+    "demosaic0:pattern:scale1:scale2:phase:redBlueSwap:hsp:hspe:green:gdec:gvdec:emask:sgreen:bhse:red:blue:",
+    "_addGrammarAttributesForDetailRange:detail:",
+    "savePDF:",
+    "showHSBView:",
+    "saveNameColumnWidth",
+    "isDeleted",
+    NULL,
+    "_dynamicToolTipManager",
+    "stopTheater",
+    "pauseAnimation:",
+    "imageFlow:writeItemsAtIndexes:toPasteboard:",
+    "croppedImageWithSize:",
+    "_getAllAttributesIncludeValues:",
+    NULL,
+    "tearOffTitlebarHighlightColor",
+    "registerToNotifications",
+    "initWithCGContext:options:",
+    "gel:over:opacity:",
+    "lowerBaseline:",
+    "pictureTakerCommonInit",
+    "_drawThemeContents:highlighted:inView:",
+    "_clearCachedTransientStateOfObject:",
+    "releaseGState",
+    "awakeFromNib",
+    "serviceConnectionWithName:rootObject:usingNameServer:",
+    "showValue:inObject:",
+    "level",
+    NULL,
+    "_abCompareWithinIntervalFromToday:",
+    "_isAnimatingScroll",
+    "extractStringFromLocalizedStringData:",
+    "_keyEquivalentSizeWithFont:",
+    "inlinePreviewURL",
+    "fogAtLocation:",
+    "_minYWindowBorderHeight:",
+    "setCanSelectHiddenExtension:",
+    "setSavedQueryData:",
+    NULL,
+    "indicesOfObjectsByEvaluatingObjectSpecifier:",
+    "addressBookCoreDataDatabaseFileName",
+    "_invokeJavaOverrideForSelector:withErrorAndOtherArguments:",
+    "canHighlightNode:",
+    "titleAtIndexes:",
+    "isHorizontallyResizable",
+    "JSContext",
+    "handleHelpQuery:",
+    "imageCropView:mouseUp:",
+    "closestTickMarkValueToValue:",
+    "initWithLeftExpression:rightExpression:modifier:type:options:",
+    "stopModalWithCode:",
+    "track",
+    "_requestIsCacheEquivalent:toRequest:allowCF:",
+    "hidesSharedSection",
+    "setReceiversSpecifier:",
+    "__image",
+    "flush",
+    "destinationURLForMigration:sourceURL:sourceMetadata:error:",
+    "rowForObjectID:after:",
+    "performSelector:onObject:withObject:waitUntilDone:",
+    "_beginCustomizationMode",
+    "__oldnf_stringForObjectValue:",
+    "changedMember:",
+    "_userSelectTextOfPreviousCell",
+    "smartInsertBeforeStringForString:replacingRange:",
+    "initWithName:reason:userInfo:",
+    "prototype",
+    "addComponent:",
+    "_nodesToDisplayForNodeInfo:",
+    NULL,
+    "parseRelativeDistinguishedName:indent:",
+    "abFileLock",
+    "_recentDocumentRecordsKeyForMenu:",
+    "_flattenMenuItem:",
+    "download:willSendRequest:redirectResponse:",
+    "_updateRenderFormat:",
+    NULL,
+    "_rangeToPrefetch",
+    "swapGlyph:withIndex:",
+    "initWithDictionary:forDocument:",
+    "tableRow",
+    "imageBrowser:titleOfCellAtIndex:shouldBeginEditing:",
+    NULL,
+    "setSimpleCommandsArray:",
+    "subarrayWithRange:",
+    "firstVisibleColumn",
+    "bottomBorder",
+    NULL,
+    NULL,
+    "SCTViewIdentifier",
+    "setInputSourceID:",
+    NULL,
+    "_restoreDefaultSettingsForSaveMode",
+    "startQuery",
+    "setSelectionKeys:",
+    "handleControlEvent:callRef:",
+    "initWithDynamicMenuItemDictionary:",
+    "_controlShadowColor",
+    NULL,
+    "scrollViewDidTile",
+    "_positionSheetAndDisplay:",
+    "draggedColumn",
+    "_availableChannelFromRegisteredChannels",
+    "_loadSystemScreenColorList",
+    "_initWithIdentifiers:values:labels:primaryIdentifier:",
+    "explicitURLOfSlideshowItemAtIndex:",
+    "acceptsDrop",
+    "destroyLayer",
+    "removeTrack:",
+    NULL,
+    "destinationType",
+    "_removeDeclaredKey:",
+    "isHighlighted",
+    NULL,
+    "_checkMiniMode:",
+    "sharedCertificatePanel",
+    "inputWhiteParamsAtIndexes:",
+    "parentCrayonRow",
+    "containsAttachments",
+    "initWithDocument:forStore:",
+    NULL,
+    "_imageRepsWithData:fileType:hfsType:expandImageContentNow:",
+    "_changedRowArray:withOldRowArray:forParent:",
+    "_setupDefaultTextViewContent",
+    "removeCachesForUID:",
+    NULL,
+    "descriptorWithInt32:",
+    "readablePasteboardTypes",
+    "applicationIcon",
+    "initWithInvocation:conversation:sequence:importedObjects:connection:",
+    "addSpecialGStateView:",
+    "_forceDisconnectOnError",
+    "_userActionForEvent:",
+    "pickerViewCommonInit",
+    "_commandFromEvent:",
+    "initialValueForKey:forCell:",
+    "setAppearance:forType:",
+    "_stateOK",
+    "shadowGroup",
+    "builtInPlugInsPath",
+    "_shadowFlags",
+    "didPushRenderState:",
+    "connectionUnitInputNumberForConnection:",
+    "valueInOrderedWindowsWithUniqueID:",
+    NULL,
+    "borderWidth",
+    NULL,
+    "scrollVerticalBy:animate:",
+    "updateSpellingPanelWithGrammarString:detail:",
+    "_continueMovementTracking",
+    "setTextContainerInset:",
+    "_applyAudioChannelMapFromAttributes",
+    NULL,
+    "isEditingWithObject:",
+    "getParagraphStart:end:contentsEnd:forRange:",
+    "spellServer:suggestCompletionsForPartialWordRange:inString:language:",
+    "splitView:shouldCollapseSubview:forDoubleClickOnDividerAtIndex:",
+    "layer",
+    "initWithOptions:andTimestamp:",
+    "_colorForNode:property:",
+    "_acceptsMarkedText",
+    "saveable",
+    "netServiceWillResolve:",
+    "abbreviation",
+    "makeDocumentWithContentsOfFile:ofType:",
+    "_updateUndoTransactionForThisEvent:withDeletions:withUpdates:",
+    "allowsEmptySelection",
+    "dropFirstComponent:",
+    "cameraAttached",
+    "transformOutline:by:",
+    "updateEditButton:",
+    "setSelectionIndexPaths:",
+    "accessibilityMinValueAttribute",
+    "setCriteriaSlice:forRuleEditer:withRootMenuItem:atRowIndex:",
+    "_arrowScrollingCallback",
+    "accessibilityIsSelectedTextSettable",
+    NULL,
+    "initWithPointerFunctions:capacity:",
+    NULL,
+    "stringValueOfProperty:",
+    "_defaultHelpAnchor",
+    "invalidateDisplayForGlyphRange:",
+    "setShowFlare:",
+    "documentPreviewViewForPreview:forView:",
+    "setPrimitiveUniqueId:",
+    "setURLs:",
+    "_drawAsMultiClippedContentInRect:",
+    "_updateInstancesForDatePreferencesChange",
+    "_flushNotificationQueue",
+    "textColor",
+    "_newSlice",
+    "vertBlur8ROI:destRect:",
+    NULL,
+    "resetOperation",
+    "_filtersUnderbars",
+    "localizedCompressionOptionsSummary",
+    "fullFrame",
+    "searchForBrowsableDomains",
+    "setController:retainController:",
+    "serializeString:",
+    "phoneticFieldsPresent",
+    "resetCursorRects",
+    "flattenMipmapItemIfNeeded:domain:",
+    NULL,
+    "navNodeWithSavedQueryData:title:",
+    "_attributes1ForPageOffset:entryOffset:baseAttributes:",
+    "initWithCString:",
+    "setBoxType:",
+    "inPalette",
+    "abPublicRecordIsGone:",
+    NULL,
+    "_forceOriginalFontBaseline",
+    "activeApplication",
+    "initWithUniqueID:connectionID:IOType:",
+    "startZoomPrefetchTask",
+    "_allItems",
+    "colorWithCGColor:",
+    "configButton:action:title:",
+    "_updateLayerHiddenStateFromView",
+    "_addRevealoverIfNecessaryForCell:cellRect:",
+    "accessibilitySetFocus:forChild:",
+    NULL,
+    "selectLine:",
+    NULL,
+    "_parseReleaseTwoList:",
+    "imageVersion",
+    "tightenThresholdForTruncation",
+    "_postNotificationNamed:",
+    NULL,
+    "sizingConstraints",
+    "_restoreCursor",
+    "currentAnalysisDidNotCreateNewWindow:",
+    "becameVisible",
+    "updateSelectionListFromSelectionFrame",
+    "stringsFromSelection",
+    "addCropLayer:",
+    "_updateDragInsertion:",
+    "_deselectsWhenMouseLeavesDuringDrag",
+    "_setArguments:",
+    "prefersSizeToFit",
+    NULL,
+    "sharedScriptSuiteRegistry",
+    "_pauseLayerTreeRenderer",
+    "setRenderingMode:",
+    "_indexOfDividerForLocation:andReturnFrame:",
+    "setPreviewNode:",
+    "DTDKind",
+    "_setPrefix:",
+    "createSnapshotImageOfType:withColorSpace:",
+    "terminate",
+    "shouldProvideSortDescriptor:optionsAdvertisingOnly:",
+    "arrayWithIndexes:",
+    "_clearTexture",
+    "_continuousScroll",
+    "initWithPartCode:parent:",
+    "_fillInValuesInExtension:isCACertBeingCreated:extensionIsPresent:",
+    "_addPlaceholderOptionValue:isDefault:toArray:withKey:binder:binding:",
+    NULL,
+    "setEditable:",
+    NULL,
+    "lockToken",
+    "addClient:selector:frequency:",
+    NULL,
+    "completedSpoolToFile",
+    "redNoiseReduction:pattern:radius:slope:",
+    "performChanges",
+    "_dispatchCallBackWithError:",
+    "addGRLsInGRLIndex:",
+    "textDidChange:",
+    NULL,
+    "intValueOfProperty:",
+    "keypathExpressionIsSafeLHSForIn:",
+    "_inputAtIndex:",
+    "doCrop:",
+    "_updateOptimizedDefaultValues",
+    "excludedKeys",
+    "_windowBorderThickness:",
+    "_invalidateGStatesForTree",
+    "binaryCollator",
+    "initWithSize:forSpaceItem:",
+    "setCurrentSearchCol:",
+    "sqlCore",
+    "createRotatedImageByDegrees:",
+    "synchronizeTitleAndSelectedItem",
+    "decodeIntForKey:",
+    "formattingStringsFilename",
+    "pixelsWide",
+    "setEndWhitespace:",
+    NULL,
+    "_userCommonName",
+    NULL,
+    "openGLEnabled",
+    "hostNameResolved:",
+    "initWithComposition:",
+    "parseBERLength:lenlen:",
+    NULL,
+    "useHighlightEffectForState:",
+    "_hideSheet:",
+    "_representedOjectsForString:andAttributedString:range:",
+    NULL,
+    "setPreloadHint:",
+    NULL,
+    "isScreenFont",
+    "setPixelFormat:",
+    "_availableFontSetNames",
+    "backing",
+    "initWithMembers:forKeys:count:",
+    "credentials",
+    "_setInverseManyToMany:",
+    "_importGroups:",
+    "directoriesController",
+    "_charRangeIsHighlightOptimizable:fromOldCharRange:",
+    "markWithTag:",
+    "_propertyContainerClassDescriptionFromDictionaryType:inSuite:",
+    "frameNeedsDisplay",
+    "_drawResizeIndicators:",
+    "alphaRange",
+    "X",
+    "componentViewerROI:destRect:",
+    "nts_RestoreFromMetaData",
+    "_old_encodeWithCoder_NSTableHeaderView:",
+    "typesetter",
+    "predicateFormat",
+    "captureOutput:didOutputSampleBuffer:fromConnection:",
+    "_autoreopenDocuments",
+    "_setupAnimationInfo",
+    "outlineView:didExpandItem:",
+    "_inputMethodInfoDictionary",
+    "copyBestResource:",
+    "setProtocolForProxy:",
+    NULL,
+    "stopObservingNode",
+    NULL,
+    "orderingIndex",
+    "loadSoundWithName:",
+    "entityForEntityDescription:",
+    "onAnimationTimer",
+    "incrSize:",
+    "XMLFormatData",
+    "locale",
+    "labelForSegment:",
+    "isDirect",
+    "dataRepresentationWithOptions:",
+    "_classForPersistentStoreAtURL:",
+    "getLineFragmentRect:usedRect:remainingRect:forStartingGlyphAtIndex:proposedRect:lineSpacing:paragraphSpacingBefore:paragraphSpacingAfter:",
+    "_okayToHitTest",
+    "clearAssociationTables",
+    "resetBytesInRange:",
+    "downloadDidBegin:",
+    "stopProfiling",
+    "_loadDataFromCGImage:useImageSource:imageNumber:",
+    "toolTipLabel",
+    "initWithFlowView:",
+    "acceptableDragTypes",
+    "isValidTitleString:forIndex:",
+    "_createInlinePreviewIfNeeded",
+    "initWithCell:atIndex:inBrowser:",
+    "_setAllowsMultipleRows:",
+    "recursive",
+    "_selectedNodesWithDirectories:",
+    "menuKeyEquivalentTarget:forEvent:",
+    "sharedFilterListProvider",
+    "drawInCGLContext:pixelFormat:forLayerTime:displayTime:",
+    "_incrementPage:",
+    NULL,
+    "descriptionsWithDeclarations:",
+    "isCoalescing",
+    "selectionChanged:",
+    "setToolMode:",
+    NULL,
+    "proceedWithImport:",
+    "setEmbedded:",
+    "addMarker:",
+    NULL,
+    "_encodeByte:",
+    "enableCustomAttributeFixing",
+    NULL,
+    "_NSNavFilePropertyCompareCaseInsenstive:",
+    "setGrammarCheckingEnabled:",
+    "printer",
+    "_notifyDelegate_WillAddItem:",
+    NULL,
+    "_drawMiniWindow:",
+    "commentURL",
+    "fieldDescriptionForKey:",
+    "setModificationDate:",
+    NULL,
+    "stringByReplacingPercentEscapesUsingEncoding:",
+    "application:printFiles:",
+    "wantsScrollWheelEvent:",
+    "_handleCancelledOperations:",
+    "_convertPersistentItem:",
+    "handleCloseScriptCommand:",
+    "startExecution:",
+    "setIsAButtonWhenNotProgressing:",
+    "_automateLiveResize",
+    "bezierMaskWithPath:",
+    "initFileURLWithPath:",
+    "currentChecksumForDirectory:",
+    "zoomValueRelativeToZoomRange:",
+    "clientView",
+    "setItem:forKnownAbsentKey:",
+    "_initWithfeKernel:",
+    "_activateWindows",
+    "_selectableItems",
+    "sharedPreviewView:didStartSharingWithPreviewPanel:",
+    "_iconView",
+    "_pageCount",
+    "isCaseInsensitiveLike:",
+    "_finalize_QCInterpolation",
+    "_enclosingMenuItem",
+    "_unlockRequestPostHandler:",
+    "editServerAction:",
+    NULL,
+    "managedObjectIDFromURIRepresentation:",
+    "resetSubrows",
+    NULL,
+    "_commonDealloc",
+    "_resetCurrentSearchRow",
+    "_save",
+    "setMetadata:forPersistentStoreOfType:URL:error:",
+    "commandClassName",
+    "_constructTreeForTemplate:",
+    "_setBaselineRenderingMode:",
+    "moveToBeginningOfLineAndModifySelection:",
+    NULL,
+    "networkNode",
+    "insertCustomLabel:",
+    "subresources",
+    "_pickUpMissingStuffFromNode:forEntity:",
+    "isTitle",
+    NULL,
+    "_addString:toEventRef:",
+    "_setInspectorController:",
+    "setParagraphSpacing:",
+    "_resizeFromEdge",
+    "whiteBackground",
+    "newDistantObjectWithCoder:",
+    "_isAutoPlay",
+    NULL,
+    "_queryString",
+    NULL,
+    "usePageLabelsChanged:",
+    "netServiceBrowser:didFindService:moreComing:",
+    "setVerticalRulerView:",
+    "initWithDescriptorType:data:",
+    "raiseCountUnderflowException",
+    "iconsForAnimationFilenames",
+    "isMembersPaneVisible",
+    "initWithRefCountedRunArray:",
+    "performZoom:",
+    "templateChanged",
+    "_imageNumber",
+    "frameOfOutlineCellAtRow:",
+    "_applicationWillLaunch:",
+    "populateCacheFromStream:data:",
+    "_abComparePrefixMatch:options:",
+    "setExecutionMode:",
+    "mutableBytes",
+    "accessibilityTopLevelUIElementAttributeValueHelper",
+    "setFontColor:",
+    "_explicitlyCannotInsert",
+    "timersForMode:",
+    "accessibilityChildForColumn:",
+    "preflightAndReturnError:",
+    "_delegateRespondsToWriteIndexes",
+    "setAutoresize:",
+    "pageScroll",
+    "insertObject:inSubNodesAtIndex:",
+    "_drawContentsAtRow:column:withCellFrame:",
+    "_web_createFileAtPathWithIntermediateDirectories:contents:attributes:directoryAttributes:",
+    "_hasJavaOverrideForInitializerSelector:",
+    "_resetGrid",
+    "setInternalState:",
+    "open:",
+    "parsePrivateKeyUsagePeriod:",
+    "_canGoIntoSelectedDirectoryAndTry:",
+    "outlineView:shouldTypeSelectForEvent:withCurrentSearchString:",
+    "_didImportMipmap:throughCopy:forDisplayedCell:index:mipmapItemIndex:firstTimeImported:flatten:",
+    "_layoutForData",
+    "decodeIntegerForKey:",
+    "outlineView:sortDescriptorsDidChange:",
+    "_outputAtIndex:",
+    NULL,
+    "type:conformsToType:",
+    "gizmoBoundingBoxForRadius:",
+    "saveImageNamed:andShowWarnings:",
+    "_orderOutHelpWindowAfterEventMask:",
+    "setFog:",
+    "setGraphNode:",
+    "setEventProc:",
+    "disableDeselect:",
+    "_accessibilityPressAction:",
+    "_syncTime",
+    "drawBackground:",
+    "cacheUsedByProxyJpegData",
+    "analyzeNextGRL:",
+    "_setTabState:",
+    "close:",
+    "_accessibilitySizeOfChild:",
+    "_setInsertionPointDisabled:",
+    NULL,
+    "newCountStatementWithFetchRequest:",
+    "initWithFunction:withArgument:andIsDetached:",
+    "colorWithPatternImage:",
+    "refreshDisplayedCardAndReloadImage:",
+    NULL,
+    "_usesSplitCursor",
+    "_knownPrimaryKeyForObject:",
+    NULL,
+    "initWithModelObserver:availableModelAndProxyKeys:",
+    "reconcileSelfToSuiteRegistry:",
+    "_ql_allowsNetworkAccessForPreview:",
+    "setAttributeMappings:",
+    "addToCurrentState:",
+    "flipHorizontal:",
+    "encryptWithDelegate:",
+    "_minimizeOnDoubleClickChanged",
+    "CA_pathExtension:",
+    "_setInScaledWindow:",
+    "fireWillStopAnimating",
+    "setToolTipWithOwner:forView:cell:",
+    "notPredicateOperator",
+    "_minSizeForDrawers",
+    "_setNeedsViewerLayout:itemViewers:",
+    "setStandalone:",
+    NULL,
+    "removeAllColumnFilters",
+    "inverted",
+    "_keyAlgorithm",
+    "releaseWireID:count:",
+    "setPlugInsEnabled:",
+    "_unregisterToolbarInstance:",
+    "setTransparentBackground:",
+    "_initWithAddressInfo:",
+    "makeCurrentContext",
+    "windowDidEndSheet:",
+    "performCustomValidationForEntityMapping:manager:error:",
+    NULL,
+    "isResizable",
+    "_handleGotoFinishedWithResult:",
+    "imageablePageBounds",
+    "_authenticationChallengeForCFAuthChallenge:sender:",
+    "minusHashTable:",
+    "_nextTypeSelectMatchFromIndex:toIndex:forString:",
+    "_updateObject:",
+    "lastFileListMode",
+    "imageByCroppingToRegion:",
+    "textView:completions:forPartialWordRange:",
+    "_generateSQLType1InContext:",
+    "removeObserver:forKeyPath:",
+    "sharedToolTipStringDrawingLayoutManager",
+    "updateFavoritesUI",
+    "enqueueToggleWritingOperationWithOutputFileURL:bufferDestination:scheduledForTime:cancelAllOperations:",
+    "_usesUserKeyEquivalent",
+    "overwriteAlertDidEnd:returnCode:contextInfo:",
+    "reinsertRecord:inSortedList:",
+    "_createImageBufferFromImageBuffer:withFormat:target:transformation:bounds:colorSpace:options:",
+    "performSelectorOnMainThread:withObject:waitUntilDone:",
+    "unmarkText",
+    "parseSource:callback:userInfo:",
+    "invalidateInputImage",
+    "_initWithRequest:delegate:usesCache:maxContentLength:startImmediately:",
+    "setStringForIndexing:",
+    "customPropertyDefinitionsWithAddressBook:",
+    NULL,
+    "analyzeGRLsAndNotify:selector:",
+    "decodeQTTimeForKey:",
+    "bezierPathWithOvalInRect:",
+    "_countOfRowsStartingAtObject:",
+    "openGLLock",
+    "_computeCustomItemViewers",
+    NULL,
+    "findSelection:",
+    "initWithAudioStreamBasicDescription:channelLayout:magicCookie:",
+    "_buildSupportUnitsForGenericInputConnection:error:",
+    "setUnits:",
+    "previewWindowDidResizeFrame:",
+    "_iconFrameForCellFrameSize:",
+    "darkGrayColor",
+    "_downloadTextureWithBounds:usingPixelFormat:toAddress:bytesPerRow:",
+    "keyUp:inRect:ofView:",
+    "convertRectFromViewToDocument:",
+    "_imageToTitleHorizontalOffset",
+    "setIconSize:",
+    "draggedImageLocation",
+    "_loadAdvSearchController",
+    NULL,
+    "imageWithCGImage:",
+    "applicationWillBecomeActive:",
+    "menuForNode:view:",
+    "imagingModeForcedToVisualContext",
+    "sortUsingSelector:",
+    "initWithCGImage:options:",
+    "substringWithRange:",
+    "parameters",
+    "mainArgument",
+    "_entitiesByVersionHash",
+    "_copyPBufferToCGSurface",
+    "_isOrdered",
+    "_delegateWillDisplayCell:forColumn:row:",
+    NULL,
+    "addCell",
+    "_scriptingCountNonrecursively",
+    "accessibilitySetSelectedTextRangeAttribute:",
+    "_createNonNilMutableArrayValueWithSelector:",
+    "setShowsControlCharacters:",
+    "previewPanel:frameForDocumentURL:",
+    "_identities",
+    "foreignKeyColumns",
+    "_lightPortList",
+    "resolveFromContainer:",
+    "addJoinForToManyRelationship:sourcePath:destinationPath:",
+    "widthValueTypeForLayer:edge:",
+    "_resumeLayerTreeRenderingForUserSwitchIn:",
+    "columnAtPoint:",
+    "initWithEntryNames:dataProvider:options:",
+    "ISS_xmlStringWithBag:",
+    "noteDirectoryResultsSelectionChanged",
+    "_adjustObject:mode:observedController:observedKeyPath:context:editableState:adjustState:",
+    "autoscrollCallBack",
+    "initWithProperty:label:key:value:searchPeople:comparison:",
+    NULL,
+    "_writeCallback:",
+    NULL,
+    "itemIdentifierForColorPicker:",
+    "_convertColor:toRed:green:blue:alpha:",
+    "_clientContextInfo",
+    "_lockFirstResponder",
+    "_downloadStarted",
+    "setAllowsLayoutAnimations:",
+    "_local:",
+    "_closeLoading:",
+    "tightBilateralAddROI:destRect:userInfo:",
+    "insertChild:",
+    "detach",
+    "_renewDAVLock",
+    "initWithUniqueID:deviceName:",
+    "setData:length:",
+    "_findWindowUsingCache:",
+    "initWithCStringNoCopy:length:freeWhenDone:",
+    "_keyboardFocusNeedsDisplayForColumn:row:",
+    NULL,
+    "_contentToFrameMinYHeight",
+    "cachedDateForEmail:",
+    "appendTemporaryField:andLabel:font:",
+    "interpretEventAsCommand:forClient:",
+    "addMappedKeysToDictionary:mappedEntities:mappedEntitiesMainKeys:entityWithValueConverter:valueWithEntityConverter:",
+    "_toggleSelectAnyValidResponderOverride",
+    "loadFiltersFromLibrary:filterArray:",
+    "boundsRectForTextBlock:glyphRange:",
+    "_doRunLoop",
+    "_infoFilePath",
+    "initLockWithURL:",
+    "stopAllTimersForSpeaking",
+    "_doPopupSearchString",
+    "_visibleAndCanBecomeKey",
+    "initWithSQLCore:",
+    "_initWithIconRef:includeThumbnail:",
+    "accessibilityFocusedAttribute",
+    "_saveQuerySheetDidEnd:returnCode:contextInfo:",
+    "_createStatusItemWindow",
+    "_titleForThumbnailLayer:",
+    "_removeTrackingRects:count:",
+    "authorizationViewCreatedAuthorization:",
+    "writeToFile:withAttributes:",
+    "_opString",
+    "mouseEnteredDelegate:",
+    NULL,
+    "convertPoint:toPage:",
+    "initWithWindowNibName:owner:",
+    "_resizeImage",
+    "setProperty:",
+    "isFileListOrderedAscending",
+    "parseNetscapeCertType:",
+    "toggleContinuousSpellChecking:",
+    "secondLineParagraphStyle",
+    "openglSupportsRenderingInBounds:",
+    "setVoice:",
+    "PDFDocumentPrintJobTitle:",
+    "initWithMutableAttributedString:",
+    "cellOrControlForObject:",
+    NULL,
+    NULL,
+    "initWithGlyph:forFont:baseString:",
+    "inputClientResignActive:",
+    NULL,
+    "shapeWindow",
+    "_hoverAreaIsSameAsLast:",
+    "initWithDocFormat:documentAttributes:",
+    "setSelectedResult:",
+    "qt_errorByAddingUserInfoEntriesFromDictionary:",
+    "initWithContentsOfFile:byReference:",
+    "editingBinderForControl:",
+    "prepareRenderer",
+    "setLocale:",
+    "_getKeys:forPropertyDescriptionKind:",
+    "stateVersionWithIdentifier:",
+    "volatileDomainNames",
+    "nextFreeIndex",
+    "_getServer",
+    "initWithDelegate:thumbnail:",
+    "abEntityKnowsKey:inManagedObjectContext:",
+    "_configureAsMainMenu",
+    "fieldDescriptionForAppleEventCode:",
+    "removeCacheNodeWithUID:withResolution:",
+    "setAppleUseCoreUI:",
+    "_isHighlightedIgnoringState",
+    "_postWindowNeedsDisplay",
+    "setNewPasswordField:",
+    "paragraphAttributesAtIndex:effectiveRange:inRange:",
+    "selectedThumbnail",
+    "clHandle",
+    "_updateSliceIndentationAtIndex:toIndentation:withIndexSet:",
+    "decodePortObject",
+    "buildAlertStyle:title:formattedMsg:first:second:third:oldStyle:",
+    "addLineToDictionaryRef:",
+    "vCardForGUIDs:",
+    "_installTrackingRects:insideList:userDataList:trackingNumList:count:",
+    "performActionForItem:",
+    "setupForNoMenuBar",
+    "setSelectionHighlightStyle:",
+    "setDoSelectGroup:",
+    NULL,
+    "specifier",
+    "coerceTextStorage:toData:",
+    "_computeFirstVisibleColumnRequireCompletelyVisible:",
+    "initWithRoundingMode:scale:raiseOnExactness:raiseOnOverflow:raiseOnUnderflow:raiseOnDivideByZero:",
+    "data:",
+    "_newItemFromDelegateWithItemIdentifier:willBeInsertedIntoToolbar:",
+    "syncMetaData:",
+    "configureForCanChooseDirectories:",
+    "_insertRecord:inSortedList:",
+    "removeThumbnailsAtIndex:count:",
+    "handleObservingRefresh:",
+    "blue",
+    "_inlinePreviewDidChangePage:",
+    "frame:resizedFromEdge:withDelta:",
+    "stealContentsFromPreviewView:",
+    "_compositionThread:",
+    "_cocoaErrorStringWithKind:variant:",
+    "_setKey:forPort:",
+    "_downloadDir:toPath:",
+    "_postNotificationName:",
+    "loadDataRepresentation:ofType:",
+    "addAdditionalActionsToDictionaryRef:",
+    "indexOfObject:",
+    "_clearValues",
+    "_extendedGlyphRangeForRange:maxGlyphIndex:drawingToScreen:",
+    "_flushCachedObjects",
+    "patternImage",
+    "setInformationalAttributedString:",
+    "handleKeyUp:",
+    "clearTemporaryCache",
+    "_topMargin",
+    "_delayedClearShadow",
+    NULL,
+    "permutedPath:matchesUnder:at:",
+    "maxRecents",
+    "scanCharactersFromSet:intoString:",
+    "_stopAnimationWithoutChangingFrames",
+    "doneSendingPopUpAction:",
+    "initWithFileDescriptor:",
+    "windowDidDeminiaturize:",
+    "filterPredicate",
+    NULL,
+    "initWithTextTable:charIndex:text:layoutManager:containerWidth:collapseBorders:",
+    "observationInfo",
+    "_surfaceDidComeBack",
+    "matchesPresentableName:",
+    "scaleByX:Y:",
+    "portList",
+    "_releaseTrackingTag:",
+    "setPlaying:",
+    "_prepareForDefaultKeyLoopComputation",
+    "_setCAAdminEmailAddress:",
+    "setRelationshipMappings:",
+    "resetMeasurements:forInterpolatedResolutionData:",
+    "nodeForUID:forResolution:createIfNeeded:",
+    "_changedItem:toItem:inRow:",
+    "setShadow:",
+    "drawScroller:",
+    "trackKnob:withEvent:",
+    "kind",
+    "__oldnf_numberStringForValueObject:withBuffer:andNegativeFlag:",
+    "selectionForAll",
+    NULL,
+    "nextResponder",
+    "movePath:",
+    NULL,
+    "cancelCurrentCoachMark",
+    "_getBucketForSeekingToRow:",
+    "_allowAnimated_addSubview:positioned:relativeTo:",
+    "canRead",
+    NULL,
+    "_changeQNamePrefix:toPrefix:forURI:",
+    "tracksOfMediaType:",
+    "createSharedGWorldContext",
+    "_centerPoint",
+    "dispatch",
+    "importToPerson:",
+    "_setDefaultRedColor:",
+    "selectionFromPage:atCharacterIndex:toPage:atCharacterIndex:",
+    "isDeferred",
+    "initialize",
+    "_isJobActive:",
+    "dataReferenceWithReferenceToData:",
+    "_canSave",
+    "textDidCancelEditing",
+    "parseX509Name:setTitle:indent:",
+    "_plugIns",
+    "setAsMainCarbonMenuBar",
+    "outputImageProviderFromBufferWithPixelFormat:pixelsWide:pixelsHigh:baseAddress:bytesPerRow:releaseCallback:releaseContext:colorSpace:shouldColorMatch:",
+    "drawRect:",
+    "needsTimeControls",
+    "genericView",
+    "initWithPage:range:",
+    "_isNilExpression:",
+    "setPreferredEdge:",
+    "_NSNavDisplayNameCompare:caseSensitive:",
+    "_setNeedsDisplayForSortingChangeInColumn:",
+    "definition",
+    NULL,
+    "exitFullscreenWithEffect:frame:toPanel:",
+    "fillRoundedRect:radius:cacheIt:",
+    "fileExtensionsFromType:",
+    "_lineFragmentDescriptionForGlyphRange:includeGlyphLocations:",
+    "_setMultipleValue:forKey:atIndex:",
+    "_focusOnCache:creatingWithSizeInPixels:",
+    "getLineFragmentInsertionPointsForCharacterAtIndex:alternatePositions:inDisplayOrder:positions:characterIndexes:",
+    "prepareContent",
+    "drawWithBox:",
+    "getAttributesInNode:fromBuffer:listReference:count:",
+    "noFeedback",
+    "download:didFailWithError:",
+    "searchLabel",
+    "setValueTransformer:",
+    "setOpenGLTextureIsPremultiplied:",
+    "doFinishShow",
+    "attributedSubstringFromRange:replacingCharactersInRanges:numberOfRanges:withString:",
+    "_setKeyEquivalentMapIsDirty:",
+    "textMatchingPopUpFrame",
+    "allocateBatch:forEntity:count:",
+    NULL,
+    "removeLayer:",
+    "modelUniqueID",
+    "enqueuePauseOperationScheduledForTime:",
+    NULL,
+    "relatedNames",
+    "serialNumber",
+    NULL,
+    "isLessThan:",
+    "needsDisplayOnBoundsChange",
+    "renderingPixelFormat",
+    "_adjustSplitView",
+    NULL,
+    "validateFxAtIndex:",
+    "addEnumeration:",
+    "cancelButton:",
+    "newWithContentsOf:immutable:",
+    "newWithDictionary:",
+    "_isDrawingForDragImage",
+    "_addResult:",
+    NULL,
+    "setInputBackgroundImage:",
+    "daysInMonth:year:forDatePickerCell:",
+    "filterWithType:",
+    "initWithQTMovie:",
+    "_computeParams",
+    "affineROI:forRect:userInfo:",
+    "_keyWindow",
+    "__selectKeyFrame:timeLine:context:",
+    "initToData:error:",
+    NULL,
+    "initSyncList:",
+    NULL,
+    "abIsCompatibleWithRecord:",
+    "_crayons",
+    "md5WithTime:arguments:",
+    "addUniqueObjectsFromArray:",
+    "windowNibPath",
+    "updateCIFilter:slider:key:value:label:",
+    "setPixelsWide:",
+    "dataSourceItemForSlideshowThumbnail:",
+    "editDisplayedCard:",
+    "moveRecord:toAddressBook:",
+    "initWithName:object:userInfo:",
+    "unregisterDragTypesForWindow:",
+    NULL,
+    "_deactivateTrackingRectsForApplicationDeactivation",
+    "shadowDirtyRect",
+    "contentObjectKey",
+    "setDocumentRef:",
+    "_specifiedObjectTreeDepth",
+    "changeFileAttributes:atPath:",
+    NULL,
+    "_drawIBPreviewInRect:",
+    "doVerticalBoxPass:yOffset:count:factor:sums:",
+    NULL,
+    "_createAndRegisterUniqueContextForCGLContext:contextOwner:pixelFormat:formatOwner:colorSpace:options:",
+    "accessibilityColumnForChild:",
+    NULL,
+    NULL,
+    "storeKeyForDatabaseDataType:",
+    "_reactToDisplayChanged:resetScreens:",
+    "part:boundsWithFrame:",
+    "offset:by:",
+    "supportedRepresentationTypes",
+    NULL,
+    "_dateFromComponents:",
+    "performFileOperation:source:destination:files:tag:",
+    "appearance:",
+    "findSubscriptionWithRemoteLocation:",
+    "drawPreviewInteriorWithFrame:inView:",
+    "setHorizontal:",
+    "getGlyphsInRange:glyphs:characterIndexes:glyphInscriptions:elasticBits:",
+    "initWithCapacity:",
+    "_sizeHeightBucket:withSize:toFitSize:",
+    "_draggingMarkerView",
+    "_clearAllTargetAnimations",
+    "createTextureBufferWithFormat:target:pixelsWide:pixelsHigh:options:",
+    "_minXWindowBorderWidth:",
+    "nts_SaveWithFileLock:",
+    "extendPowerOffBy:",
+    "createThumbnailFromNSImage:",
+    "selectedResolvedNodes",
+    "setDisabledWhenInactive:",
+    "_setStartPath:",
+    "_mergeChangesObjectUpdatesTrumpForObject:withRecord:",
+    "autosavedContentsFileURL",
+    "flushCachedData",
+    "scaleTo::",
+    "searchScope",
+    "patch",
+    "_changeAllDrawersKeyState",
+    "shadowBlurRadius",
+    "_contentToFrameMinXWidth",
+    "imageRepWithCGLayer:",
+    NULL,
+    "setDoubleAction:",
+    "readFromURL:options:documentAttributes:",
+    "highlight:withFrame:inView:",
+    "_coreUIImageWithBaseName:state:backgroundStyle:",
+    "resourceLoaderRunLoop",
+    "resizeSublayersWithOldSize:",
+    "_addMembersFrom:toUniqueArray:",
+    "createElementContent:",
+    "rangeContainerObject",
+    "includedKeys",
+    "_newAdapterForModel:",
+    "_coreUIDrawBackgroundForGroupRow:inRect:",
+    "_preEvaluate",
+    "applyCredentialsToRequest:",
+    "setHeaderCell:",
+    "setExtraLineFragmentRect:usedRect:textContainer:",
+    "userData",
+    "_setErrorExpectedTypeDescriptor:",
+    "hitTest:",
+    "testSelector",
+    "_hideQueryProgress",
+    "graphEditor",
+    NULL,
+    NULL,
+    "server",
+    "decodeData:",
+    "_defaultWritingDirection",
+    "updateProfileInfo",
+    "_convertersList",
+    "fileWrapperRepresentationOfType:",
+    NULL,
+    "setJoinSemantic:",
+    "accessibilityMainWindowAttribute",
+    "derotateContext",
+    "numberOfTickMarks",
+    "_abAddress:isSimilarToAddress:",
+    "tokenStyle",
+    "_releaseDelayShowNodeInfo",
+    "_saveMode",
+    "effectsIcon",
+    "loadRecipeOverrides:recalcPointers:",
+    "loadAndRegisterAllPlugIns",
+    "intersectsRegion:",
+    "allSizes",
+    "dstDraggingDepositedAtPoint:draggingInfo:",
+    "_updateMouseInside:",
+    "accessibilityPositionOfChild:",
+    "_setModified:",
+    "_filterResources:reset:",
+    "_selectObjectsAtIndexes:avoidsEmptySelection:sendObserverNotifications:forceUpdate:",
+    "mouseOnIcon",
+    "propagateFrameDirtyRects:",
+    "allowsNonSquareZooming",
+    "greenSpeed",
+    "_setMap:",
+    "initWithName:data:",
+    "_windowUpdate:",
+    "_createValuePrimitiveSetterWithContainerClassID:key:",
+    "border",
+    "boundsForConnection:",
+    "hasNoResults",
+    NULL,
+    "drawFromCenter:radius:toCenter:radius:options:",
+    "mouse:inRect:",
+    "setShowsPreviews:",
+    "_initWithTexture:size:params:",
+    "titleOfSelectedItem",
+    "removeSelectedTimeLine:",
+    NULL,
+    "sheetDidEnd:returnCode:contextInfo:",
+    "_readFontIntoRange:fromPasteboard:",
+    "equalsContentsOf:",
+    "_newShowColorsItem",
+    "_sendShouldTrackCell:forTableColumn:row:",
+    "fadeDuration",
+    "sourceConfiguration",
+    "_setContainerObservesTextViewFrameChanges:",
+    "scrollLineUp:",
+    "_setInteriorNextKeyView:",
+    "convertFont:toSize:",
+    "_invalidateCursorRectsForView:force:",
+    "addIndexesInRange:",
+    "mappedAndDecompressedIntoRAM",
+    "sharedSurfaceMode",
+    "saveNumVisibleRows",
+    "colorWithCalibratedRed:green:blue:alpha:",
+    "_filterAddedNotificationHandler:",
+    "persistentDomainForName:",
+    "_addRootColumnToFetch:",
+    "_compositionsWithIdentity:",
+    "_resumeInformation",
+    "initWithGLContext:glID:radius:strokeColor:fillColor:mode:lineWidth:",
+    "_activateHelpModeBasedOnEvent:",
+    "goToRect:onPage:",
+    "postsBoundsChangedNotifications",
+    "pk64",
+    "localObjects",
+    "_isDoingUnhide",
+    "_classDescriptionForName:suiteName:isValid:",
+    "initWithWindow:rect:",
+    "renderToBuffer:withBytesPerRow:pixelFormat:forBounds:",
+    "setFilterByName:",
+    NULL,
+    "shouldClearSearchWhenSwitchingTo:",
+    "observeKeyPathForBindingInfo:registerOrUnregister:object:",
+    NULL,
+    "stringValueForObject:",
+    "updateAppleMenu:",
+    "_setSigningIdentity:",
+    "emptyImage",
+    "findPixelFormat:withColorSpace:closestToFormats:",
+    NULL,
+    "drawKeyIcon:inContext:",
+    "_setPendingDeletion:",
+    "glyphInfoWithGlyphName:forFont:baseString:",
+    "_pointForPort:inNode:bounds:",
+    "initialValues",
+    "runModalForWindow:",
+    "_discardTrackingRects:count:",
+    "selectNone:",
+    "filepath",
+    "go",
+    "_loadNibFile:nameTable:withZone:ownerBundle:",
+    "coreUIDrawWithFrame:inView:",
+    NULL,
+    "setBordered:",
+    "addPropertiesAndTypes:withAddressBook:acquireLock:",
+    "mouseDragged:",
+    "_clockAndCalendarStopTracking:at:inView:mouseIsUp:",
+    "setSearchList:",
+    "colorSpace",
+    "_chooseSize:",
+    "fireNextCameraSequence",
+    "DOMDocument",
+    "observer",
+    "bindingsForObject:",
+    "externalNameForEntityName:",
+    NULL,
+    "enableDragNDrop",
+    "removeContextHelpForObject:",
+    "_setAutoscrollResponseMultiplier:",
+    "initWithCharactersNoCopy:length:freeWhenDone:",
+    "_createAuxData",
+    "_recurWithContext:chars:glyphs:stringBuffer:font:",
+    "connectionWithOwner:mediaType:formatDescription:attributes:",
+    "initCount:",
+    "_colorListNamed:forDeviceType:",
+    NULL,
+    "_scriptingAddObjectsFromArray:toValueForKey:",
+    "_shouldDrawSelectionIndicator",
+    "_resourceCount",
+    "decimalNumberWithMantissa:exponent:isNegative:",
+    "_restartEditingWithTextView:",
+    "_hasShadow",
+    "accessibilityIsMinimizedAttributeSettable",
+    NULL,
+    "zoomValueRelativeToZoomRange",
+    "reformatValueAtLocationInNumber:",
+    "initWithObjects:count:andFlags:",
+    "insertThumbnailsAtIndex:count:",
+    "heightOfInfoSpaceAtRow:",
+    "_disableToolTipCreationAndDisplay",
+    "setFormat:",
+    "countOfPublicRecordsForClass:withPredicate:addressBook:",
+    "_migrationContext",
+    "initWithContainerClassID:key:containerIsa:ivar:proxyClass:",
+    "_selectObjectsAtIndexPathsNoCopy:avoidsEmptySelection:sendObserverNotifications:",
+    "_attachmentFileWrapperDescription:",
+    "_mutatingNodes",
+    "setNext:",
+    "_setWantsToDestroyRealWindow:",
+    "setServicesProvider:",
+    NULL,
+    "_crayonWithColor:",
+    "_deselectRow:subrow:members:",
+    "sharedDVGrabber",
+    "parsePrintableBERSequence:label:indent:",
+    "videoPreviewConnection",
+    "retainedXmlInfoForRelationship:",
+    "_writeCharacterData",
+    "_validateTextColor:",
+    "lockMipmapAtIndex:",
+    "windowBackingLocation",
+    "removeObjectIdenticalTo:inRange:",
+    "_spellServers",
+    "fileOwnerAccountName",
+    "optLockKey",
+    NULL,
+    "setMixedStateImage:",
+    "roundedImageRectWithoutRotations",
+    "shouldBreakLineByHyphenatingBeforeCharacterAtIndex:",
+    "_clearAudioAttributePropertyListeners",
+    "_findPreviousNextTab:loop:startingAtTabItem:",
+    "fileHandleForReadingAtPath:",
+    "_hasGradientBackground",
+    "_URLHasScheme:",
+    "windowDidResignMain:",
+    "_sslServerAuthUsage",
+    "orderFrontFontOptionsPanel:",
+    "_web_isFileURL",
+    "_updateSliceIndentations",
+    "setUsePrimarySourceListStyle:",
+    "stopCoalescing",
+    "doCommandBySelector:client:",
+    "maxTimeForControlType:keyFrame:",
+    "_removeEntities:fromConfiguration:",
+    "objectAtIndex:forDatabaseKey:",
+    NULL,
+    "_hasEditableCell",
+    "elementsForLocalName:URI:",
+    "getResolutionData:chopMetricsHoriz:vert:horizRight:vertBottom:chopType:",
+    "nts_SyncCount",
+    "restoreExpandedLayout",
+    "setShowsRollover:",
+    "_maintainCell",
+    "IBeamCursor",
+    "initWithRTF:documentAttributes:",
+    "isHomeNode",
+    "colorProfile",
+    "initImportAnimationWithIndexes:",
+    "unsignedIntegerValue",
+    "accessibilityActionDescription:",
+    "preferredLocalizations",
+    "serverExists:inServerList:",
+    NULL,
+    "_setCellFrame:",
+    "_dragConstraintsOfDividerAtIndex:",
+    "_setStoreInfo1:",
+    "_setTitle:ofColumn:",
+    "stopScrollingAnimation",
+    "blueSpeed",
+    "destinationContext",
+    "setPrimitivePhoneticLastName:",
+    "_setSharedIdentifier:",
+    "deltaX",
+    "setItem:forKey:",
+    "applicationInfo:",
+    "setView:",
+    "removeObjectWithUID:withResolution:withKey:",
+    "session:proxyAuthenticateForRequest:withRealm:attemptNumber:proxyConfig:username:password:",
+    "inputKeys",
+    "isYearLessComparison:forProperty:",
+    "getInputTopLine",
+    "scaleRange",
+    "controlContentFontOfSize:",
+    "_isKindOfEntity:",
+    NULL,
+    "openGLContextForCurrentThread",
+    "textAttributes",
+    "_attributeDescriptionForKeyPath:inEntity:",
+    "_usingAlternateHighlightColorForCell:withFrame:",
+    "_updateFromSnapshot:",
+    "_userCanSelectAndEditColumn:row:",
+    "deleteImageTexture:name:userInfo:",
+    "applicationWillFinishLaunching:",
+    NULL,
+    "_deactivateWindows",
+    "_selectableColumnIndexes:",
+    "redisplayPopup",
+    "vramManagerDidUnbindMipmapWithUID:withSize:",
+    "filestreamBlockLength",
+    "windowOrderedOut",
+    "mapPDFRangeToPageRange:",
+    "positionKnobs",
+    "_mergeEntriesFromDictionary:maxDepth:",
+    NULL,
+    "_postObjectsDidChangeNotificationWithUserInfo:",
+    "_resetAllDrawersPostingCounts",
+    "_specialControlView",
+    "_cacheRepresentation:",
+    "_drawKeyboardFocusRingWithFrame:forCell:",
+    "setCleanAperture:",
+    "setValue:forInputKey:composition:",
+    "_imageRepsWithData:hfsFileType:extension:expandImageContentNow:",
+    "valueWithSMPTETime:",
+    "_setInitCallback:",
+    "cocoaVersion",
+    "initialize_MailRecents",
+    "_fileChangeAlertSheet:wasPresentedWithResult:inContext:",
+    "initWithEventClass:eventID:targetDescriptor:returnID:transactionID:",
+    "performDroppedFile:atPosition:",
+    NULL,
+    "setNode:displayState:",
+    "_bodyStreamOpen:openComplete:",
+    "removeAllIndexes",
+    "authorizationState",
+    NULL,
+    "_getMatchingRow:forString:inMatrix:startingAtRow:prefixMatch:caseSensitive:",
+    "pageForPoint:nearest:",
+    "pointerArrayWithOptions:",
+    "_parseHashTable",
+    "imagingModeForcedToSharedBuffer",
+    "setContents:",
+    "filterWithImageData:options:",
+    NULL,
+    "_uncachedSize",
+    "speechSynthesizer:didFinishSpeaking:",
+    "_items",
+    "prefersColorMatch",
+    "setBrightness:",
+    "_imageForDrawingInRectOfSize:fromImage:",
+    "labelForIdentifier:",
+    NULL,
+    NULL,
+    NULL,
+    "presentableNameForSpecifier:",
+    "initWithGrammar:",
+    "setLockOwner:",
+    "detachFromAudioMixerNode",
+    "_isAcceptableDragSource:types:dragInfo:",
+    "beginLayoutChange",
+    "_cachingView",
+    "_setAudioDeviceUID:channels:error:",
+    NULL,
+    "newFileButton",
+    "cancelEditing",
+    "setViewKind:",
+    "_setSerialNumber:",
+    "sharedFocusState",
+    "_setCurrentItemsToItemIdentifiers:notifyDelegate:notifyView:notifyFamilyAndUpdateDefaults:",
+    "entityMappings",
+    "bookListNeedsUpdate",
+    "_setSelectedMembers:withHistory:",
+    "pageHeader",
+    "_accessibilityParentAdjustedFocusedUIElement:",
+    "tokenFieldCell:representedObjectForEditingString:",
+    "unregisterForHardwareNotification",
+    "_documentPreviewDidUpdateDisplay:",
+    NULL,
+    "writeDefaultValue",
+    "_coreUISortIndicatorDrawOptionsWithView:ascending:",
+    "autofillColor",
+    NULL,
+    NULL,
+    "processAllPerforms",
+    "appleEventForSuspensionID:",
+    "keepAtLeastOnePixelZoomRange",
+    "allValues",
+    "_keyWindowForHeartBeat",
+    NULL,
+    "namespaceWithName:stringValue:",
+    "deleteConfirmSheetDidEnd:returnCode:contextInfo:",
+    "importVCardData:intoGroup:",
+    "zoomImageToFit:",
+    "setPoliciesDisclosed:",
+    "serviceListener",
+    "fileURLWithPath:",
+    "isSyncScheduled",
+    "errorStringForFTPStatusCode:fromURL:",
+    "_getPropertyForKey:",
+    "_minParentWindowContentSize",
+    "frame",
+    "setGoverningEntity:",
+    "delegateClassForMode:",
+    "_hideMenu:",
+    "_drawerTakeFocus",
+    "_scriptingSetValue:forSpecifier:",
+    "pages",
+    "_bezelBottomPadding",
+    "years:months:days:hours:minutes:seconds:sinceDate:",
+    "pause:",
+    "destinationURL",
+    NULL,
+    "_destroyTSMDocument:",
+    "_actionCellInitWithCoder:",
+    "adjustSubviews",
+    "initWithProxyHost:port:type:realm:authenticationMethod:",
+    "importContinued:",
+    "clearAuthChallengeForSession:",
+    "_ensureBitmapDataAvailable",
+    "_insertionIsAtEnd",
+    "mouseDownDelegate:",
+    "mainFrame",
+    "_prefixIndex",
+    "accessibilityDocumentAttribute",
+    NULL,
+    NULL,
+    "sourceEntity",
+    "isWritableFileAtPath:",
+    NULL,
+    NULL,
+    "_generateSQLForConstantCollection:inContext:",
+    "_compareToCell:",
+    "_freeServicesMenu:",
+    "addAdapterOperation:",
+    "addFavorite",
+    "postQueryHasFinishedNotification",
+    "markerFormat",
+    "timerWithTimeInterval:target:selector:userInfo:repeats:",
+    "paragraphSpacingAfterCharactersInRange:withProposedLineFragmentRect:",
+    "_removeAllRevealovers",
+    "noteGroupsSelectionChanged",
+    "initWithCacheSize:",
+    "initWithMarkerFormat:options:",
+    "attributeValue",
+    "_rulerAccView",
+    "rangeAtIndex:onPage:",
+    "_notifyFamily_DidRemoveItemAtIndex:",
+    "filterPanel",
+    "_setLang:",
+    NULL,
+    "validateMipmapDBIndex",
+    "initWithDocument:url:type:overwriteRetryingInfo:",
+    "_topEditor",
+    "layoutControlGlyphForLineFragment:",
+    "getBytes:maxLength:filledLength:encoding:allowLossyConversion:range:remainingRange:",
+    NULL,
+    "capHeight",
+    "tearOffMenuRepresentation",
+    "setPreviewRange:",
+    "setEnableDragNDrop:",
+    "primitiveSortingLastName",
+    "_reconcileDisplayNameAndTrackingInfoToFileURL",
+    "_recursivelyRemoveItemsInMenu:fromTable:",
+    NULL,
+    "writeColors",
+    "_restartMovementTracking",
+    NULL,
+    "crayonToLeft",
+    "_insertNodeIntoMainCache:",
+    "didReceiveResponse:",
+    "_invalidateCompositedBackground",
+    "setPreferredRate:",
+    "_iconViewAction:",
+    "observeValueForKeyPath:ofObject:change:context:",
+    "setMaximizedMode:",
+    "loadClass:",
+    "terminate:",
+    "_logMessage:",
+    "removeBinder:",
+    "newConversation",
+    "mergedModelFromBundles:forStoreMetadata:",
+    "childrenEnumerator",
+    "isCRLStatusCode:",
+    "_coreUIBezelDrawOptionsWithView:highlighted:",
+    "_loadWebKit",
+    "sessionWillUseOutputPixelBufferAttributes:forConnection:",
+    "_lockTokenForURI:orForParent:",
+    "_installTrackingAreas:",
+    "originalPageCount",
+    "scanInt:",
+    "highlightROI:forRect:",
+    "_modifierString",
+    "lastPage",
+    NULL,
+    "_escapeCharacters:amount:inString:appendingToString:",
+    "_graphicsFont",
+    "subentityMaxID",
+    "dayOfWeek",
+    "setFillsPicker:",
+    "_validateAsCustomItem:",
+    "endUndoGrouping",
+    "_QTMovieClass",
+    "_layoutDirtyItemViewersAndTileToolbar",
+    "browserType",
+    "_updateSliceRows",
+    "retainedDecompressionSessionOptions",
+    "setFrameCenterRotation:",
+    "_scheduleInDefaultRunLoopForMode:",
+    "recomputeToolTipsForView:remove:add:",
+    "_maxLabelSizeForAxis:gridStep:digits:inRect:",
+    "getTIFFCompressionTypes:count:",
+    "setScrollable:",
+    "_diskURL",
+    "setWidth:forSegment:",
+    "_updateOverlayControls",
+    "_moveGapToBlockIndex:",
+    "_setExportSpecialFonts:",
+    NULL,
+    NULL,
+    NULL,
+    "glyphRangeForTextContainer:",
+    "_appendKey:option:value:inKeyNode:",
+    "isLocking",
+    "_topLeftDuringLiveResize",
+    "_glyphIndexForCharacterIndex:startOfRange:okToFillHoles:considerNulls:",
+    "_cfBundle",
+    "depthChanged:",
+    "phoneLabel",
+    "_selectDocumentAtIndex:",
+    "setValue:forKeyPath:",
+    "_publicKey",
+    NULL,
+    "tilt",
+    NULL,
+    "_startDrawingThread:",
+    NULL,
+    "topUndoObject",
+    NULL,
+    "_cellFinishedImportAnimation:",
+    "messageBoundsInVisibleRect:",
+    "addView:frame:toView:characterIndex:layoutManager:",
+    NULL,
+    "_postColumnDidResizeNotificationWithOldWidth:",
+    "_web_pathWithUniqueFilenameForPath:",
+    "_destinationEntityVersionHashesByName",
+    "_isScrolling",
+    "isEntryAcceptable:",
+    "defaultManager",
+    "fetchObjectsForClass:withPredicate:prefetchingKeyPaths:managedObjectContext:",
+    "getBytes:range:",
+    "_populateOpenRecentMenu:includingIcons:",
+    "isTemplate",
+    "_retrieveNodesSatisfyingRequest:",
+    "_currentItemFrame",
+    NULL,
+    "countOfInputTopLine",
+    "_accessibilityChildrenWithIndexes:",
+    "setAnchorRight",
+    "removeLastObject",
+    "startSubelementIdentifier",
+    "_propertyDescriptionForAppleEventCode:checkSubclasses:superclasses:",
+    "sharedExchangeSetup",
+    "scheduleSearch:",
+    "resetCellInfo:",
+    "tracks",
+    "_doOpenFiles:",
+    "setAlignment:range:",
+    "registerImageProviderClass:",
+    "cellBoundingBoxPositionAtIndex:",
+    "controlPointBounds",
+    "initWithDictionaryRepresentation:addressBook:",
+    "_setHorizontalScrollerHidden:",
+    "validateRowsTranslationsToRowIndex:",
+    "components",
+    "resetPasswordCache",
+    "setActive:",
+    "attemptToBind",
+    "appendAttributedString:",
+    "_adjustMinAndMaxSizeForSheet:",
+    "prepareLike:",
+    "_liveResizeLOptimizationEnabled",
+    "resetView",
+    "changeSpelling:",
+    NULL,
+    "nts_ChangedProperties",
+    NULL,
+    "_memoryCacheRemoveNodeFromLRUList:",
+    "setMappingModel:",
+    "drawCellInside:",
+    "typefaceInfoForKnownFontDescriptor:",
+    "getInputExtent",
+    "intersectsIndexesInRange:",
+    "tokenFieldCell:setUpTokenAttachmentCell:forRepresentedObject:",
+    "_functionExpressionIsSubqueryFollowedByKeypath:",
+    "newWithUpperItem:attribute:",
+    "setRichText:",
+    "_performPostHandler",
+    "_computeLayoutInfoForIconViewSize:frameSize:iconFrame:labelFrame:",
+    "_closeFileAsync",
+    "initWithTableView:",
+    "_validateValue:forProperty:andKey:withIndex:error:",
+    "_cacheZoomState",
+    "_ensureObjectsAreMutable",
+    "addTooltipsForPage:",
+    "virtualScreenCount",
+    "usesWeakReadAndWriteBarriers",
+    "_maybeSubstitutePopUpButton",
+    NULL,
+    "drawWithBox:inContext:",
+    "_leading",
+    "_indexOfRangeAfterOrContainingIndex:",
+    "_inlineSlideshowItemChangedPlaying:",
+    "accessibilitySupportsOverriddenAttributes",
+    "processComment:",
+    "backingType",
+    "strokeRect:color:context:",
+    "appleEventClassCode",
+    "_initWithName:propertyList:",
+    "updateOrientationTag:animate:reCenter:",
+    "stepBackward",
+    "disableMakeHistory",
+    "removeObjectForResolution:",
+    "timerWithFireDate:target:selector:userInfo:",
+    NULL,
+    "_addHiddenWindow:",
+    "_doAutoscrolling",
+    "activate:",
+    "savedCriteriaSlices",
+    "setFetchPredicate:",
+    NULL,
+    "pauseRendering",
+    "ab_URLWithStringByEscapingStringIfNecessary:",
+    NULL,
+    "classCode",
+    "performStreamRead",
+    "cameraDZ",
+    "_minContentRectSize",
+    "focusedSwatchRect",
+    "fetchRequestTemplateForName:",
+    "stopError",
+    NULL,
+    "editInAddressBook:",
+    "bindInVRamMipmapItem:withUID:",
+    "setParagraphs:",
+    NULL,
+    "__preLiveResizeWidthOfColumn:",
+    "setNeedsDisplayOnBoundsChange:",
+    "_addVirtualToOneForToMany:withInheritedProperty:",
+    "updateTimeValue",
+    "lastResponseMessage",
+    "_scheduleDelayedShowOpenHandCursorIfNecessary",
+    NULL,
+    "appendSelectListToSQLForRequest:",
+    "SCTConvertBaseToScreenRect:",
+    "popLast",
+    "analyzeAndIndexApp:",
+    "initWithPNGFile:",
+    "_standardCustomMenuFormRepresentationClicked:",
+    "setOriginalDontResolveDataRefsFlag:",
+    "_oldUserCanSelectRow:",
+    "postColorSwatchesChangedDistributedNotification",
+    "cellAtRow:column:",
+    "_cornerViewFrame",
+    NULL,
+    NULL,
+    "busyButClickableCursor",
+    "targetAndArgumentsAcceptable",
+    "initWithLocal",
+    "addImagePasteLayer:",
+    "_updateDefaults",
+    "_allowAnimated_setFrameSize:",
+    "pathControl:willDisplayOpenPanel:",
+    "prefix",
+    "indexOfKey:",
+    NULL,
+    "nts_managedObjectContextWithModel:databasePath:dataType:version:loadFailure:",
+    "setTableColumn:",
+    "cut:",
+    "_givenPropertiesBeingInitialized:getAffectingProperties:",
+    "shadow",
+    "setAudioDevice:error:",
+    "showGreyScaleView:",
+    "_fillCache",
+    "applicationName",
+    "_commitEditing:",
+    "_removeParent:",
+    "_setUpLayerTreeRendererAndSurface",
+    "_accessibilityChildrenInRange:",
+    NULL,
+    "initWithYear:month:day:hour:minute:second:timeZone:",
+    "minimumRangeForEdit",
+    "_updateFilterPredicate:",
+    "_calculateSizeToFitWidthOfColumn:testLoadedOnly:",
+    "setMultipleCharacterSeparators:",
+    "destNode",
+    "_adjustClipIndicatorPosition",
+    "_replaceSubview:with:rememberAndResetEditingFirstResponder:abortEditingIfNecessary:",
+    "setIdentifier:",
+    NULL,
+    "newWithURL:quartzFilter:",
+    "initWithRole:subrole:index:parent:",
+    "proxyWithLocal:connection:",
+    "__computeOrder:context:",
+    "_textViewOwnsTextStorage",
+    NULL,
+    "addPageReferenceToDictionaryRef:",
+    "currentFrameAsCIImage",
+    "_rl",
+    "clientWrapperWithRealClient:",
+    "setCountryCode:",
+    "_resetDrawerFirstResponder",
+    "valueTypeDescriptionFromName:declaration:",
+    "setLinkTextAttributes:",
+    "flushDerivables",
+    "suppressAllNotifications",
+    "_commonInitNavNodePopUpButton",
+    "sharedInfoPanel",
+    "_switchToPicker:",
+    "setGregorianStartDate:",
+    "computeInsideShadow",
+    "_concludeTracking",
+    "_shapeMenuPanel",
+    "control:textShouldEndEditing:",
+    "allowedFileTypes",
 };
-
index cb9c9e1a5a0f7ff1f300eb851777f9180a840bb8..c3f15dd4887202a10e6172b26e2ca64aab2e896e 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
+ * Copyright (c) 1999-2007 Apple Inc.  All Rights Reserved.
  * 
- * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
+ * @APPLE_LICENSE_HEADER_START@
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
 #import "objc-rtp.h"
 #import "objc-sel-set.h"
 
-// NUM_BUILTIN_SELS, LG_NUM_BUILTIN_SELS, _objc_builtin_selectors
+// _objc_builtin_selectors[]
 #include "objc-sel-table.h"
 
+// from phash.c
+extern uint32_t phash(const char *key, int len);
+
 #define NUM_NONBUILTIN_SELS 3500
 // objc_sel_set grows at 3571, 5778, 9349. 
 // Most apps use 2000..7000 extra sels. Most apps will grow zero to two times.
@@ -68,33 +69,29 @@ static inline int ignore_selector(const char *sel)
 
 
 static SEL _objc_search_builtins(const char *key) {
-    int c, idx, lg = LG_NUM_BUILTIN_SELS;
-    const char *s;
+    const char *sel;
+    uint32_t hash;
 
 #if defined(DUMP_SELECTORS)
     if (NULL != key) printf("\t\"%s\",\n", key);
 #endif
+
     /* The builtin table contains only sels starting with '[.A-z]', including '_' */
     if (!key) return (SEL)0;
+    if ((intptr_t)key == kIgnore) return (SEL)kIgnore;
     if ('\0' == *key) return (SEL)_objc_empty_selector;
     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;
-    idx = (c < 0) ? NUM_BUILTIN_SELS - (1 << lg) : -1;
-    while (--lg >= 0) {
-       s = _objc_builtin_selectors[idx + (1 << lg)];
-       c = _objc_strcmp(s, key);
-       if (c == 0) return (SEL)s;
-       if (c < 0) idx += (1 << lg);
-    }
-    return (SEL)0;
+    hash = phash(key, (int)__builtin_strlen(key));
+    sel = _objc_builtin_selectors[hash];
+    if (sel  &&  0 == __builtin_strcmp(key, sel)) return (SEL)sel;
+    else return (SEL)0;
 }
 
 
 const char *sel_getName(SEL sel) {
+    if ((intptr_t)sel == kIgnore) return "<ignored selector>";
     return sel ? (const char *)sel : "<null selector>";
 }
 
@@ -167,3 +164,9 @@ __private_extern__ void sel_unlock(void)
 SEL sel_getUid(const char *name) {
     return __sel_registerName(name, 2, 1);  // YES lock, YES copy
 }
+
+
+BOOL sel_isEqual(SEL lhs, SEL rhs)
+{
+    return (lhs == rhs) ? YES : NO;
+}
index 7ccee7d6b10903cafe5fac416e962df0f8b61c45..12e3216bafb0ff431b34f5da9cd6afe445ed8555 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
+ * Copyright (c) 2002, 2006 Apple Inc.  All Rights Reserved.
  * 
- * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
+ * @APPLE_LICENSE_HEADER_START@
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
  * 
  * @APPLE_LICENSE_HEADER_END@
  */
-//
-//  objc_sync.h
-//
-//  Copyright (c) 2002 Apple Computer, Inc. All rights reserved.
-//
 
 #ifndef __OBJC_SNYC_H_
 #define __OBJC_SNYC_H_
index fe8e3a20757dace245d291e653b0b5b11f4afbea..070d06a0fa6823356f2f8ca0a45298ca30bf1af4 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
+ * Copyright (c) 1999-2007 Apple Inc.  All Rights Reserved.
  * 
- * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
+ * @APPLE_LICENSE_HEADER_START@
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
  * 
  * @APPLE_LICENSE_HEADER_END@
  */
-//
-//  objc_sync.m
-//
-//  Copyright (c) 2002 Apple Computer, Inc. All rights reserved.
-//
 
 #include <stdbool.h>
 #include <stdlib.h>
 #include <pthread.h>
 #include <errno.h>
 #include <AssertMacros.h>
+#include <libkern/OSAtomic.h>
 
 #include "objc-sync.h"
-
-//
-// Code by Nick Kledzik
-//
-
-// revised comments by Blaine
+#include "objc-private.h"
 
 //
 // Allocate a lock only when needed.  Since few locks are needed at any point
@@ -68,43 +57,146 @@ done:
 }
 
 
-struct SyncData
+typedef uintptr_t spin_lock_t;
+extern void _spin_lock(spin_lock_t *lockp);
+extern int  _spin_lock_try(spin_lock_t *lockp);
+extern void _spin_unlock(spin_lock_t *lockp);
+
+typedef struct SyncData {
+    struct SyncData* nextData;
+    id               object;
+    int              threadCount;  // number of THREADS using this block
+    pthread_mutex_t  mutex;
+    pthread_cond_t   conditionVariable;
+} SyncData;
+
+typedef struct {
+    SyncData *data;
+    unsigned int lockCount;  // number of times THIS THREAD locked this block
+} SyncCacheItem;
+
+typedef struct SyncCache {
+    unsigned int allocated;
+    unsigned int used;
+    SyncCacheItem list[0];
+} SyncCache;
+
+typedef struct {
+    spin_lock_t lock;
+    SyncData *data;
+} SyncList __attribute__((aligned(64)));
+// aligned to put locks on separate cache lines
+
+// Use multiple parallel lists to decrease contention among unrelated objects.
+#define COUNT 16
+#define HASH(obj) ((((uintptr_t)(obj)) >> 5) & (COUNT - 1))
+#define LOCK_FOR_OBJ(obj) sDataLists[HASH(obj)].lock
+#define LIST_FOR_OBJ(obj) sDataLists[HASH(obj)].data
+static SyncList sDataLists[COUNT];
+
+
+enum usage { ACQUIRE, RELEASE, CHECK };
+
+static SyncCache *fetch_cache(BOOL create)
 {
-       struct SyncData*        nextData;       // only accessed while holding sTableLock
-       id                      object;         // only accessed while holding sTableLock
-       unsigned int            lockCount;      // only accessed while holding sTableLock
-       pthread_mutex_t         mutex;
-       pthread_cond_t          conditionVariable;
-};
-typedef struct SyncData SyncData;
+    _objc_pthread_data *data;
+    
+    data = _objc_fetch_pthread_data(create);
+    if (!data  &&  !create) return NULL;
+
+    if (!data->syncCache) {
+        if (!create) {
+            return NULL;
+        } else {
+            int count = 4;
+            data->syncCache = calloc(1, sizeof(SyncCache) + 
+                                     count*sizeof(SyncCacheItem));
+            data->syncCache->allocated = count;
+        }
+    }
 
+    // Make sure there's at least one open slot in the list.
+    if (data->syncCache->allocated == data->syncCache->used) {
+        data->syncCache->allocated *= 2;
+        data->syncCache = 
+            realloc(data->syncCache, sizeof(SyncCache) 
+                    + data->syncCache->allocated * sizeof(SyncCacheItem));
+    }
 
-static pthread_mutex_t         sTableLock = PTHREAD_MUTEX_INITIALIZER;
-static SyncData*               sDataList = NULL;
+    return data->syncCache;
+}
+
+
+__private_extern__ void _destroySyncCache(struct SyncCache *cache)
+{
+    if (cache) free(cache);
+}
 
-enum usage { ACQUIRE, RELEASE, CHECK };
 
 static SyncData* id2data(id object, enum usage why)
 {
+    spin_lock_t *lockp = &LOCK_FOR_OBJ(object);
+    SyncData **listp = &LIST_FOR_OBJ(object);
     SyncData* result = NULL;
     int err;
-    
-    pthread_mutex_lock(&sTableLock);
-    
+
+    // Check per-thread cache of already-owned locks for matching object
+    SyncCache *cache = fetch_cache(NO);
+    if (cache) {
+        int i;
+        for (i = 0; i < cache->used; i++) {
+            SyncCacheItem *item = &cache->list[i];
+            if (item->data->object != object) continue;
+
+            // Found a match.
+            result = item->data;
+            require_action_string(result->threadCount > 0, cache_done, 
+                                  result = NULL, "id2data cache is buggy");
+            require_action_string(item->lockCount > 0, cache_done, 
+                                  result = NULL, "id2data cache is buggy");
+                
+            switch(why) {
+            case ACQUIRE:
+                item->lockCount++;
+                break;
+            case RELEASE:
+                item->lockCount--;
+                if (item->lockCount == 0) {
+                    // remove from per-thread cache
+                    cache->list[i] = cache->list[--cache->used];
+                    // atomic because may collide with concurrent ACQUIRE
+                    OSAtomicDecrement32Barrier(&result->threadCount);
+                }
+                break;
+            case CHECK:
+                // do nothing
+                break;
+            }
+
+        cache_done:            
+            return result;
+        }
+    }
+
+    // Thread cache didn't find anything.
     // Walk in-use list looking for matching object
-    // sTableLock keeps other threads from winning an allocation race
-    // for the same new object.
+    // Spinlock prevents multiple threads from creating multiple 
+    // locks for the same new object.
     // We could keep the nodes in some hash table if we find that there are
     // more than 20 or so distinct locks active, but we don't do that now.
     
-    SyncData* firstUnused = NULL;
+    _spin_lock(lockp);
+
     SyncData* p;
-    for (p = sDataList; p != NULL; p = p->nextData) {
+    SyncData* firstUnused = NULL;
+    for (p = *listp; p != NULL; p = p->nextData) {
         if ( p->object == object ) {
             result = p;
+            // atomic because may collide with concurrent RELEASE
+            OSAtomicIncrement32Barrier(&result->threadCount);
             goto done;
         }
-        if ( (firstUnused == NULL) && (p->object == NULL) )
+        if ( (firstUnused == NULL) && (p->threadCount == 0) )
             firstUnused = p;
     }
     
@@ -116,7 +208,7 @@ static SyncData* id2data(id object, enum usage why)
     if ( firstUnused != NULL ) {
         result = firstUnused;
         result->object = object;
-        result->lockCount = 0; // sanity
+        result->threadCount = 1;
         goto done;
     }
                             
@@ -126,35 +218,42 @@ static SyncData* id2data(id object, enum usage why)
     // But since we never free these guys we won't be stuck in malloc very often.
     result = (SyncData*)malloc(sizeof(SyncData));
     result->object = object;
-    result->lockCount = 0;
+    result->threadCount = 1;
     err = pthread_mutex_init(&result->mutex, recursiveAttributes());
     require_noerr_string(err, done, "pthread_mutex_init failed");
     err = pthread_cond_init(&result->conditionVariable, NULL);
     require_noerr_string(err, done, "pthread_cond_init failed");
-    result->nextData = sDataList;
-    sDataList = result;
+    result->nextData = *listp;
+    *listp = result;
     
-done:
-    if ( result != NULL ) {
-        switch ( why ) {
-            case ACQUIRE:
-                result->lockCount++;
-                break;
-            case RELEASE:
-                result->lockCount--;
-                if ( result->lockCount == 0 )
-                    result->object = NULL;  // now recycled
-                break;
-            case CHECK:
-                // do nothing
-                break;
-        }
+ done:
+    _spin_unlock(lockp);
+    if (result) {
+        // Only new ACQUIRE should get here.
+        // All RELEASE and CHECK and recursive ACQUIRE are 
+        // handled by the per-thread cache above.
+        
+        require_string(result != NULL, really_done, "id2data is buggy");
+        require_action_string(why == ACQUIRE, really_done, 
+                              result = NULL, "id2data is buggy");
+        require_action_string(result->object == object, really_done, 
+                              result = NULL, "id2data is buggy");
+        
+        if (!cache) cache = fetch_cache(YES);
+        cache->list[cache->used++] = (SyncCacheItem){result, 1};
     }
-    pthread_mutex_unlock(&sTableLock);
+
+ really_done:
     return result;
 }
 
 
+__private_extern__ __attribute__((noinline))
+int objc_sync_nil(void)
+{
+    return OBJC_SYNC_SUCCESS;  // something to foil the optimizer
+}
+
 
 // Begin synchronizing on 'obj'.  
 // Allocates recursive pthread_mutex associated with 'obj' if needed.
@@ -171,6 +270,10 @@ int objc_sync_enter(id obj)
         require_noerr_string(result, done, "pthread_mutex_lock failed");
     } else {
         // @synchronized(nil) does nothing
+        if (DebugNilSync) {
+            _objc_inform("NIL SYNC DEBUG: @synchronized(nil); set a breakpoint on objc_sync_nil to debug");
+        }
+        result = objc_sync_nil();
     }
 
 done: 
@@ -219,8 +322,8 @@ int objc_sync_wait(id obj, long long milliSecondsMaxWait)
     }
     else {
                struct timespec maxWait;
-        maxWait.tv_sec  = milliSecondsMaxWait / 1000;
-        maxWait.tv_nsec = (milliSecondsMaxWait - (maxWait.tv_sec * 1000)) * 1000000;
+        maxWait.tv_sec  = (time_t)(milliSecondsMaxWait / 1000);
+        maxWait.tv_nsec = (long)((milliSecondsMaxWait - (maxWait.tv_sec * 1000)) * 1000000);
         result = pthread_cond_timedwait_relative_np(&data->conditionVariable, &data->mutex, &maxWait);
        require_noerr_string(result, done, "pthread_cond_timedwait_relative_np failed");
     }
diff --git a/runtime/objc-typeencoding.m b/runtime/objc-typeencoding.m
new file mode 100644 (file)
index 0000000..d3b720e
--- /dev/null
@@ -0,0 +1,403 @@
+/*
+ * Copyright (c) 1999-2007 Apple Inc.  All Rights Reserved.
+ * 
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * 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-typeencoding.m
+* Parsing of old-style type strings.
+**********************************************************************/
+
+#include "objc-private.h"
+#include <sys/param.h>
+
+/***********************************************************************
+* SubtypeUntil.
+*
+* Delegation.
+**********************************************************************/
+static int     SubtypeUntil           (const char *    type,
+                                char           end)
+{
+    int                level = 0;
+    const char *       head = type;
+
+    //
+    while (*type)
+    {
+        if (!*type || (!level && (*type == end)))
+            return (int)(type - head);
+
+        switch (*type)
+        {
+            case ']': case '}': case ')': level--; break;
+            case '[': case '{': case '(': level += 1; break;
+        }
+
+        type += 1;
+    }
+
+    _objc_fatal ("Object: SubtypeUntil: end of type encountered prematurely\n");
+    return 0;
+}
+
+
+/***********************************************************************
+* SkipFirstType.
+**********************************************************************/
+static const char *    SkipFirstType      (const char *        type)
+{
+    while (1)
+    {
+        switch (*type++)
+        {
+            case 'O':  /* bycopy */
+            case 'n':  /* in */
+            case 'o':  /* out */
+            case 'N':  /* inout */
+            case 'r':  /* const */
+            case 'V':  /* oneway */
+            case '^':  /* pointers */
+                break;
+
+                /* arrays */
+            case '[':
+                while ((*type >= '0') && (*type <= '9'))
+                    type += 1;
+                return type + SubtypeUntil (type, ']') + 1;
+
+                /* structures */
+            case '{':
+                return type + SubtypeUntil (type, '}') + 1;
+
+                /* unions */
+            case '(':
+                return type + SubtypeUntil (type, ')') + 1;
+
+                /* basic types */
+            default:
+                return type;
+        }
+    }
+}
+
+
+/***********************************************************************
+* encoding_getNumberOfArguments.
+**********************************************************************/
+__private_extern__ unsigned int 
+encoding_getNumberOfArguments(const char *typedesc)
+{
+    unsigned nargs;
+
+    // First, skip the return type
+    typedesc = SkipFirstType (typedesc);
+
+    // Next, skip stack size
+    while ((*typedesc >= '0') && (*typedesc <= '9'))
+        typedesc += 1;
+
+    // Now, we have the arguments - count how many
+    nargs = 0;
+    while (*typedesc)
+    {
+        // Traverse argument type
+        typedesc = SkipFirstType (typedesc);
+
+        // Skip GNU runtime's register parameter hint
+        if (*typedesc == '+') typedesc++;
+
+        // Traverse (possibly negative) argument offset
+        if (*typedesc == '-')
+            typedesc += 1;
+        while ((*typedesc >= '0') && (*typedesc <= '9'))
+            typedesc += 1;
+
+        // Made it past an argument
+        nargs += 1;
+    }
+
+    return nargs;
+}
+
+/***********************************************************************
+* encoding_getSizeOfArguments.
+**********************************************************************/
+__private_extern__ unsigned 
+encoding_getSizeOfArguments(const char *typedesc)
+{
+    unsigned           stack_size;
+#if defined(__ppc__) || defined(ppc)
+    unsigned           trueBaseOffset;
+    unsigned           foundBaseOffset;
+#endif
+
+    // Get our starting points
+    stack_size = 0;
+
+    // Skip the return type
+#if defined (__ppc__) || defined(ppc)
+    // Struct returns cause the parameters to be bumped
+    // by a register, so the offset to the receiver is
+    // 4 instead of the normal 0.
+    trueBaseOffset = (*typedesc == '{') ? (unsigned)sizeof(void *) : 0;
+#endif
+    typedesc = SkipFirstType (typedesc);
+
+    // Convert ASCII number string to integer
+    while ((*typedesc >= '0') && (*typedesc <= '9'))
+        stack_size = (stack_size * 10) + (*typedesc++ - '0');
+#if defined (__ppc__) || defined(ppc)
+    // NOTE: This is a temporary measure pending a compiler fix.
+    // Work around PowerPC compiler bug wherein the method argument
+    // string contains an incorrect value for the "stack size."
+    // Generally, the size is reported 4 bytes too small, so we apply
+    // that fudge factor.  Unfortunately, there is at least one case
+    // where the error is something other than -4: when the last
+    // parameter is a double, the reported stack is much too high
+    // (about 32 bytes).  We do not attempt to detect that case.
+    // The result of returning a too-high value is that objc_msgSendv
+    // can bus error if the destination of the marg_list copying
+    // butts up against excluded memory.
+    // This fix disables itself when it sees a correctly built
+    // type string (i.e. the offset for the Id is correct).  This
+    // keeps us out of lockstep with the compiler.
+
+    // skip the '@' marking the Id field
+    typedesc = SkipFirstType (typedesc);
+
+    // Skip GNU runtime's register parameter hint
+    if (*typedesc == '+') typedesc++;
+
+    // pick up the offset for the Id field
+    foundBaseOffset = 0;
+    while ((*typedesc >= '0') && (*typedesc <= '9'))
+        foundBaseOffset = (foundBaseOffset * 10) + (*typedesc++ - '0');
+
+    // add fudge factor iff the Id field offset was wrong
+    if (foundBaseOffset != trueBaseOffset)
+        stack_size += 4;
+#endif
+
+    return stack_size;
+}
+
+
+/***********************************************************************
+* encoding_getArgumentInfo.
+**********************************************************************/
+__private_extern__ unsigned int 
+encoding_getArgumentInfo(const char *typedesc, int arg,
+                         const char **type, int *offset)
+{
+    unsigned nargs = 0;
+    unsigned self_offset = 0;
+    BOOL offset_is_negative = NO;
+
+    // First, skip the return type
+    typedesc = SkipFirstType (typedesc);
+
+    // Next, skip stack size
+    while ((*typedesc >= '0') && (*typedesc <= '9'))
+        typedesc += 1;
+
+    // Now, we have the arguments - position typedesc to the appropriate argument
+    while (*typedesc && nargs != arg)
+    {
+
+        // Skip argument type
+        typedesc = SkipFirstType (typedesc);
+
+        if (nargs == 0)
+        {
+            // Skip GNU runtime's register parameter hint
+            if (*typedesc == '+') typedesc++;
+
+            // Skip negative sign in offset
+            if (*typedesc == '-')
+            {
+                offset_is_negative = YES;
+                typedesc += 1;
+            }
+            else
+                offset_is_negative = NO;
+
+            while ((*typedesc >= '0') && (*typedesc <= '9'))
+                self_offset = self_offset * 10 + (*typedesc++ - '0');
+            if (offset_is_negative)
+                self_offset = -(self_offset);
+
+        }
+
+        else
+        {
+            // Skip GNU runtime's register parameter hint
+            if (*typedesc == '+') typedesc++;
+
+            // Skip (possibly negative) argument offset
+            if (*typedesc == '-')
+                typedesc += 1;
+            while ((*typedesc >= '0') && (*typedesc <= '9'))
+                typedesc += 1;
+        }
+
+        nargs += 1;
+    }
+
+    if (*typedesc)
+    {
+        unsigned arg_offset = 0;
+
+        *type   = typedesc;
+        typedesc = SkipFirstType (typedesc);
+
+        if (arg == 0)
+        {
+            *offset = 0;
+        }
+
+        else
+        {
+            // Skip GNU register parameter hint
+            if (*typedesc == '+') typedesc++;
+
+            // Pick up (possibly negative) argument offset
+            if (*typedesc == '-')
+            {
+                offset_is_negative = YES;
+                typedesc += 1;
+            }
+            else
+                offset_is_negative = NO;
+
+            while ((*typedesc >= '0') && (*typedesc <= '9'))
+                arg_offset = arg_offset * 10 + (*typedesc++ - '0');
+            if (offset_is_negative)
+                arg_offset = - arg_offset;
+
+            *offset = arg_offset - self_offset;
+        }
+
+    }
+
+    else
+    {
+        *type  = 0;
+        *offset        = 0;
+    }
+
+    return nargs;
+}
+
+
+__private_extern__ void 
+encoding_getReturnType(const char *t, char *dst, size_t dst_len)
+{
+    size_t len;
+    const char *end;
+
+    if (!dst) return;
+    if (!t) {
+        strncpy(dst, "", dst_len);
+        return;
+    }
+
+    end = SkipFirstType(t);
+    len = end - t;
+    strncpy(dst, t, MIN(len, dst_len));
+    if (len < dst_len) memset(dst+len, 0, dst_len - len);
+}
+
+/***********************************************************************
+* encoding_copyReturnType.  Returns the method's return type string 
+* on the heap. 
+**********************************************************************/
+__private_extern__ char *
+encoding_copyReturnType(const char *t)
+{
+    size_t len;
+    const char *end;
+    char *result;
+
+    if (!t) return NULL;
+
+    end = SkipFirstType(t);
+    len = end - t;
+    result = malloc(len + 1);
+    strncpy(result, t, len);
+    result[len] = '\0';
+    return result;
+}
+
+
+__private_extern__ void 
+encoding_getArgumentType(const char *t, unsigned int index, 
+                         char *dst, size_t dst_len)
+{
+    size_t len;
+    const char *end;
+    int offset;
+
+    if (!dst) return;
+    if (!t) {
+        strncpy(dst, "", dst_len);
+        return;
+    }
+
+    encoding_getArgumentInfo(t, index, &t, &offset);
+
+    if (!t) {
+        strncpy(dst, "", dst_len);
+        return;
+    }
+
+    end = SkipFirstType(t);
+    len = end - t;
+    strncpy(dst, t, MIN(len, dst_len));
+    if (len < dst_len) memset(dst+len, 0, dst_len - len);
+}
+
+
+/***********************************************************************
+* encoding_copyArgumentType.  Returns a single argument's type string 
+* on the heap. Argument 0 is `self`; argument 1 is `_cmd`. 
+**********************************************************************/
+__private_extern__ char *
+encoding_copyArgumentType(const char *t, unsigned int index)
+{
+    size_t len;
+    const char *end;
+    char *result;
+    int offset;
+
+    if (!t) return NULL;
+
+    encoding_getArgumentInfo(t, index, &t, &offset);
+
+    if (!t) return NULL;
+
+    end = SkipFirstType(t);
+    len = end - t;
+    result = malloc(len + 1);
+    strncpy(result, t, len);
+    result[len] = '\0';
+    return result;
+}
index d936162e731a41a384f5fce0e87b394339a3399c..aa2f962cff0563158f1ec0a373b061695521e39a 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_LICENSE_HEADER_START@
+ * Copyright (c) 1999-2007 Apple Inc.  All Rights Reserved.
  * 
- * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
+ * @APPLE_LICENSE_HEADER_START@
  * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
 #define _OBJC_OBJC_H_
 
 #import <objc/objc-api.h>              // for OBJC_EXPORT
+#import <sys/types.h>
 
-typedef struct objc_class *Class;
 
+typedef struct objc_class *Class;
 typedef struct objc_object {
-       Class isa;
+    Class isa;
 } *id;
 
+
 typedef struct objc_selector   *SEL;    
 typedef id                     (*IMP)(id, SEL, ...); 
 typedef signed char            BOOL; 
 // BOOL is explicitly signed so @encode(BOOL) == "c" rather than "C" 
 // even if -funsigned-char is used.
+#define OBJC_BOOL_DEFINED
 
 
 #define YES             (BOOL)1
 #define NO              (BOOL)0
 
 #ifndef Nil
-#define Nil 0          /* id of Nil class */
+#define Nil __DARWIN_NULL      /* id of Nil class */
 #endif
 
 #ifndef nil
-#define nil 0          /* id of Nil instance */
+#define nil __DARWIN_NULL      /* id of Nil instance */
 #endif
 
 #ifndef __OBJC_GC__
-# define __strong
+#define __strong /* empty */
 #endif
 
-#if !defined(STRICT_OPENSTEP)
-
-typedef char *STR;
-
-OBJC_EXPORT BOOL sel_isMapped(SEL sel);
 OBJC_EXPORT const char *sel_getName(SEL sel);
-OBJC_EXPORT SEL sel_getUid(const char *str);
 OBJC_EXPORT SEL sel_registerName(const char *str);
 OBJC_EXPORT const char *object_getClassName(id obj);
 OBJC_EXPORT void *object_getIndexedIvars(id obj);
 
-#define ISSELECTOR(sel) sel_isMapped(sel)
-#define SELNAME(sel)   sel_getName(sel)
-#define SELUID(str)    sel_getUid(str)
-#define NAMEOF(obj)     object_getClassName(obj)
-#define IV(obj)         object_getIndexedIvars(obj)
 
-#if defined(__osf__) && defined(__alpha__)
+#if !__OBJC2__
+
+// The following declarations are provided here for source compatibility.
+
+#if defined(__LP64__)
     typedef long arith_t;
     typedef unsigned long uarith_t;
 #   define ARITH_SHIFT 32
@@ -87,6 +81,17 @@ OBJC_EXPORT void *object_getIndexedIvars(id obj);
 #   define ARITH_SHIFT 16
 #endif
 
-#endif /* !STRICT_OPENSTEP */
+OBJC_EXPORT BOOL sel_isMapped(SEL sel);
+OBJC_EXPORT SEL sel_getUid(const char *str);
+
+typedef char *STR;
+
+#define ISSELECTOR(sel) sel_isMapped(sel)
+#define SELNAME(sel)   sel_getName(sel)
+#define SELUID(str)    sel_getUid(str)
+#define NAMEOF(obj)     object_getClassName(obj)
+#define IV(obj)         object_getIndexedIvars(obj)
+
+#endif
 
-#endif /* _OBJC_OBJC_H_ */
+#endif  /* _OBJC_OBJC_H_ */
diff --git a/runtime/phash.h b/runtime/phash.h
new file mode 100644 (file)
index 0000000..0b538a9
--- /dev/null
@@ -0,0 +1,17 @@
+/* Perfect hash definitions */
+#ifndef STANDARD
+#include "standard.h"
+#endif /* STANDARD */
+#ifndef PHASH
+#define PHASH
+
+extern const ub1 tab[];
+#define PHASHLEN 0x2000  /* length of hash mapping table */
+#define PHASHNKEYS 29798  /* How many keys were hashed */
+#define PHASHRANGE 32768  /* Range any input might map to */
+#define PHASHSALT 0x5384540f /* internal, initialize normal hash */
+
+ub4 phash();
+
+#endif  /* PHASH */
+
diff --git a/runtime/phash.m b/runtime/phash.m
new file mode 100644 (file)
index 0000000..c958679
--- /dev/null
@@ -0,0 +1,573 @@
+/* table for the mapping for the perfect hash */
+#ifndef STANDARD
+#include "standard.h"
+#endif /* STANDARD */
+#ifndef PHASH
+#include "phash.h"
+#endif /* PHASH */
+#ifndef LOOKUPA
+#include "lookupa.h"
+#endif /* LOOKUPA */
+
+/* A way to make the 1-byte values in tab bigger */
+__private_extern__ const ub2 scramble[] = {
+0x0000, 0x6b0f, 0x4c7d, 0x01b0, 0x1c38, 0x6c2c, 0x3596, 0x43b7,
+0x754c, 0x0ad4, 0x18a7, 0x5131, 0x0a50, 0x291c, 0x6366, 0x7e81,
+0x32bf, 0x19b3, 0x033b, 0x6346, 0x0df6, 0x58bd, 0x6c8d, 0x5de5,
+0x26d1, 0x74a5, 0x35f8, 0x1bd7, 0x42e4, 0x0196, 0x4d64, 0x6e42,
+0x1809, 0x007f, 0x2f2d, 0x0615, 0x73ac, 0x4dcd, 0x4cd9, 0x5767,
+0x551b, 0x6aa5, 0x3587, 0x42c5, 0x329b, 0x3373, 0x5a4d, 0x5e6b,
+0x0250, 0x40bf, 0x61fb, 0x5577, 0x344a, 0x54cc, 0x0533, 0x7055,
+0x0be0, 0x65e9, 0x1963, 0x2549, 0x51a2, 0x77e2, 0x0498, 0x03f4,
+0x2a77, 0x4d08, 0x2c45, 0x2978, 0x27a3, 0x73b0, 0x0ec5, 0x02e9,
+0x4df7, 0x0858, 0x3124, 0x38dc, 0x3556, 0x34c5, 0x3fc5, 0x5b57,
+0x1c13, 0x50d8, 0x3162, 0x5797, 0x16da, 0x5492, 0x7515, 0x3c25,
+0x7d74, 0x2bbb, 0x490e, 0x068f, 0x751b, 0x4ccb, 0x7e7e, 0x6857,
+0x6cdd, 0x2093, 0x726b, 0x0150, 0x472b, 0x5e5b, 0x5b20, 0x1b01,
+0x5c2e, 0x63f5, 0x3cd6, 0x0ed0, 0x6a41, 0x16fe, 0x0069, 0x13fa,
+0x1dcb, 0x44f0, 0x6f3a, 0x0cec, 0x0c4d, 0x7b40, 0x24f7, 0x5dff,
+0x7929, 0x762f, 0x73bf, 0x396a, 0x155c, 0x2614, 0x7165, 0x5906,
+0x7bcb, 0x51ba, 0x60e0, 0x2f88, 0x328d, 0x042b, 0x1175, 0x634b,
+0x4cd1, 0x0893, 0x5e07, 0x708c, 0x5bb2, 0x00a5, 0x5ee3, 0x6f47,
+0x34b9, 0x12a4, 0x0558, 0x0e61, 0x6744, 0x2f9f, 0x6b85, 0x36f9,
+0x1a1e, 0x562d, 0x742e, 0x1655, 0x686d, 0x0bb6, 0x16fb, 0x2b8f,
+0x5b7a, 0x0699, 0x5f40, 0x0130, 0x46d8, 0x0e8b, 0x7383, 0x0186,
+0x7dc9, 0x05c4, 0x18f9, 0x6e8d, 0x7537, 0x05dc, 0x2076, 0x2b1e,
+0x1a74, 0x6fcb, 0x6163, 0x645c, 0x14b9, 0x5995, 0x1387, 0x5bff,
+0x1ad6, 0x3538, 0x6ad1, 0x3f04, 0x2ad8, 0x073c, 0x44d4, 0x3cee,
+0x4d79, 0x0f50, 0x64a2, 0x52d7, 0x6930, 0x75a6, 0x24da, 0x58fe,
+0x01ed, 0x7d35, 0x7afa, 0x662e, 0x3a3d, 0x4156, 0x1ba2, 0x6b0c,
+0x0ca0, 0x4269, 0x2d22, 0x0a6e, 0x683e, 0x68aa, 0x5cb2, 0x18c3,
+0x72c6, 0x6d37, 0x134d, 0x4801, 0x6a3a, 0x4904, 0x1cdd, 0x4565,
+0x2e0f, 0x7534, 0x6c44, 0x537e, 0x6b70, 0x38eb, 0x16c4, 0x2e9c,
+0x759d, 0x48ae, 0x6244, 0x12b2, 0x357d, 0x7a73, 0x6bd7, 0x604e,
+0x6ca1, 0x3677, 0x7157, 0x3e55, 0x7d6e, 0x53d6, 0x36b3, 0x523b,
+0x2991, 0x597e, 0x49c6, 0x5d92, 0x5076, 0x5857, 0x3c8c, 0x3e59,
+};
+
+/* small adjustments to _a_ to make values distinct */
+__private_extern__ const ub1 tab[] = {
+4,2,0,52,1,7,1,15,7,15,0,9,1,44,0,39,
+34,4,1,3,13,8,37,3,5,2,56,0,0,1,6,3,
+31,7,105,4,3,8,6,10,2,11,1,19,10,39,24,5,
+7,11,7,38,0,4,3,0,0,38,12,2,7,12,19,0,
+36,78,5,67,9,4,15,0,0,57,1,1,2,6,7,0,
+6,0,1,2,8,5,3,17,3,23,8,35,0,0,29,13,
+50,0,23,4,0,28,5,20,36,2,12,10,23,55,9,2,
+2,3,1,1,27,63,12,4,6,9,18,5,9,9,35,0,
+16,71,0,0,2,1,0,6,4,6,0,20,4,1,6,14,
+1,18,14,0,16,88,1,5,14,3,0,0,4,49,65,7,
+0,6,0,1,1,1,11,234,5,17,5,0,0,5,0,9,
+0,15,7,21,5,4,11,8,1,2,2,17,0,5,32,6,
+1,0,5,29,5,18,7,0,19,97,0,1,6,3,50,0,
+0,0,6,0,0,2,4,0,8,10,1,5,3,1,18,2,
+3,0,0,14,1,2,4,29,0,0,0,6,16,34,2,10,
+8,11,11,1,17,43,12,12,7,22,1,0,25,205,1,4,
+20,31,6,70,0,0,16,9,0,13,1,11,1,4,57,5,
+12,0,2,0,1,2,4,2,0,7,20,89,3,0,0,0,
+2,37,1,33,6,14,11,6,2,2,2,11,4,24,5,0,
+30,10,6,6,1,49,0,6,4,5,14,2,10,17,12,0,
+0,2,13,66,76,11,0,17,1,3,26,0,0,5,19,5,
+0,129,1,1,36,6,5,0,7,0,9,44,0,0,72,30,
+0,9,0,1,18,4,27,63,1,1,10,15,10,35,0,25,
+9,21,1,6,28,0,12,15,4,50,0,12,3,25,3,12,
+35,77,6,22,14,6,0,0,31,0,2,0,0,61,9,0,
+0,0,13,8,6,6,41,14,18,1,8,8,20,3,0,6,
+11,2,141,31,1,6,17,10,16,3,30,20,2,14,3,4,
+16,15,18,6,72,5,1,12,41,16,11,0,33,6,8,26,
+3,6,2,26,8,27,0,4,2,37,0,98,3,14,1,5,
+0,20,2,2,3,1,65,1,0,5,6,0,0,4,3,26,
+5,45,4,1,0,3,0,6,0,4,4,3,10,26,5,68,
+11,7,0,3,17,44,1,37,4,15,9,1,4,9,40,0,
+0,1,0,43,3,1,3,20,1,3,2,6,8,13,34,0,
+16,2,13,25,7,1,5,16,0,9,6,26,1,46,76,2,
+15,19,0,3,3,1,6,40,2,0,6,1,62,18,14,2,
+9,19,6,8,5,0,60,41,22,216,16,46,26,6,1,46,
+30,0,0,24,3,0,2,3,21,23,48,27,5,0,1,17,
+6,8,3,0,5,0,6,12,0,0,0,3,2,2,0,13,
+5,3,2,23,18,33,1,27,1,0,0,18,39,26,0,19,
+13,0,2,0,23,6,68,0,16,1,0,1,36,16,15,28,
+1,10,0,10,4,6,5,4,0,26,0,5,6,14,5,2,
+1,4,0,14,12,46,5,0,8,64,51,36,36,33,1,0,
+29,8,0,4,4,0,0,11,13,50,1,22,2,4,1,24,
+1,4,0,20,43,76,0,0,16,36,50,14,1,2,0,13,
+3,0,1,27,1,87,11,0,6,26,8,2,6,2,4,33,
+0,0,4,4,72,3,0,6,0,42,11,1,8,4,0,0,
+0,11,0,28,2,15,2,2,33,13,1,5,3,3,19,2,
+0,12,46,0,6,9,0,0,3,1,4,226,1,17,6,8,
+1,1,37,4,5,2,12,38,12,0,9,4,1,20,1,0,
+22,18,0,11,3,6,16,37,3,5,18,4,0,44,5,6,
+32,3,1,57,3,7,2,3,4,29,10,2,17,6,0,1,
+25,44,1,2,7,29,83,9,15,6,1,10,0,8,1,5,
+32,4,0,4,68,0,3,0,7,11,3,0,0,1,2,9,
+4,6,4,53,20,6,0,5,2,3,0,24,9,2,0,0,
+22,13,8,8,16,16,15,22,0,51,80,6,0,3,12,0,
+1,3,14,1,4,2,0,6,2,4,28,3,1,16,26,20,
+3,76,3,3,109,12,53,40,8,19,1,35,4,3,14,21,
+5,103,2,8,5,0,3,7,4,8,20,1,31,69,0,0,
+39,68,3,9,15,12,4,7,16,12,23,1,13,9,7,1,
+29,80,10,8,3,0,24,0,15,29,8,0,4,30,30,0,
+38,3,0,9,12,2,2,0,7,11,18,5,3,25,3,0,
+2,1,0,9,3,0,35,0,17,1,15,4,0,0,52,24,
+0,2,0,63,7,46,3,1,7,9,29,3,1,2,7,16,
+0,9,6,101,6,1,21,18,0,6,21,9,11,0,4,0,
+3,0,19,1,0,0,38,3,4,66,0,9,2,32,5,4,
+11,3,9,8,24,23,1,2,3,2,2,6,3,4,1,4,
+26,0,0,0,12,0,2,8,0,1,49,25,0,0,0,0,
+10,5,0,0,44,54,11,5,53,8,26,0,54,1,8,14,
+68,6,7,13,2,7,0,9,2,38,0,31,1,2,0,2,
+48,38,5,0,11,16,0,13,0,61,0,8,12,0,1,11,
+2,20,1,3,42,3,0,3,9,0,2,1,4,14,32,0,
+3,0,5,25,7,26,2,117,15,18,2,6,33,9,3,0,
+29,5,9,9,12,5,4,8,3,4,0,0,41,4,1,2,
+38,2,5,15,12,1,2,0,0,2,15,2,3,39,11,3,
+89,22,0,36,24,4,50,5,8,5,20,3,50,14,0,0,
+0,17,11,41,16,5,3,48,7,27,47,1,2,1,3,1,
+4,0,18,2,2,8,0,0,7,60,2,62,21,0,1,8,
+55,55,23,2,13,3,3,29,10,4,19,16,4,5,0,3,
+35,15,1,4,3,3,0,8,0,15,4,0,4,69,16,3,
+10,1,18,4,18,9,6,48,2,2,31,15,80,21,47,1,
+0,2,59,15,3,14,2,30,7,1,3,5,0,24,1,0,
+5,23,14,0,30,4,0,1,0,1,18,5,8,19,13,78,
+3,5,0,26,34,5,5,12,0,1,7,5,10,2,1,14,
+7,0,10,2,10,0,2,0,7,1,1,46,4,3,23,0,
+21,4,59,0,0,27,56,11,9,27,1,3,0,13,3,11,
+10,13,4,1,7,8,6,1,78,0,31,10,3,9,40,80,
+69,14,3,77,21,0,0,3,1,2,0,3,2,5,7,5,
+21,50,96,3,3,0,20,9,0,6,1,1,2,4,0,14,
+0,0,0,5,0,32,12,45,6,32,3,20,12,0,0,28,
+24,3,1,4,0,41,2,0,12,2,4,10,4,10,11,0,
+30,11,44,10,68,20,2,121,0,5,1,10,21,14,22,35,
+2,6,2,1,45,10,12,4,1,26,3,9,8,10,1,0,
+26,23,11,1,19,39,0,0,0,84,13,4,7,38,30,9,
+8,12,5,12,18,10,60,2,8,41,1,1,174,10,1,63,
+0,37,0,50,73,13,0,4,2,0,6,1,42,55,13,4,
+1,1,3,0,4,4,21,3,2,24,30,12,40,0,11,8,
+4,6,45,2,6,1,15,18,31,8,0,57,1,73,34,19,
+14,27,3,20,19,0,9,15,8,3,5,3,1,0,7,38,
+10,20,40,62,25,12,1,1,0,5,4,4,22,1,18,6,
+74,3,2,72,6,8,6,25,2,14,13,2,94,63,39,50,
+0,26,41,0,55,2,22,89,8,1,0,3,7,1,1,0,
+7,2,19,2,17,3,7,5,2,34,1,20,2,7,3,17,
+2,7,24,2,54,3,1,0,7,0,0,0,4,3,7,2,
+10,1,0,22,6,0,7,1,14,53,84,11,7,19,1,6,
+31,3,10,20,121,1,1,1,5,6,0,21,2,0,10,0,
+35,23,72,8,64,5,1,46,8,29,4,13,0,33,75,7,
+2,48,55,17,0,23,84,0,1,5,0,2,3,15,11,5,
+41,16,21,0,5,1,14,12,16,8,34,36,13,1,0,0,
+8,19,0,0,14,6,14,0,7,10,2,23,0,31,4,0,
+55,6,15,13,13,3,7,1,0,3,1,16,0,16,4,0,
+41,0,5,1,0,1,0,1,4,16,2,1,0,0,3,7,
+29,14,10,31,5,1,7,13,0,0,20,0,5,122,1,4,
+20,1,25,14,0,0,7,45,6,0,8,3,24,0,0,3,
+50,80,74,3,4,41,57,38,25,4,0,0,3,0,3,0,
+2,8,31,72,11,9,7,15,12,0,0,5,2,15,2,3,
+25,4,1,0,16,40,4,76,80,0,0,79,28,19,10,14,
+0,2,106,8,27,1,3,21,2,49,27,0,2,27,0,21,
+39,81,30,31,2,20,13,11,0,1,3,8,195,39,18,82,
+7,47,0,5,88,1,126,1,1,0,0,6,4,77,6,1,
+61,33,0,19,7,2,3,70,35,18,17,23,5,0,5,15,
+0,11,0,19,22,0,45,0,0,45,13,5,2,55,11,8,
+41,3,15,9,11,51,26,3,2,0,3,2,3,15,12,11,
+2,4,79,1,6,26,151,1,5,11,4,6,1,15,7,3,
+2,3,0,1,29,5,9,20,0,45,0,2,23,0,0,102,
+14,19,0,1,6,14,14,1,1,0,18,0,8,36,0,0,
+103,0,54,10,13,19,19,9,30,7,0,0,6,18,32,0,
+40,4,5,24,0,10,5,10,54,6,13,0,11,21,28,7,
+25,34,0,0,1,6,2,0,6,27,22,10,23,15,29,0,
+16,0,2,48,18,95,16,3,1,22,21,12,6,12,0,50,
+8,2,3,18,16,0,60,1,2,6,28,9,3,1,3,31,
+77,42,8,24,36,13,21,7,10,27,18,1,14,9,29,22,
+107,13,0,0,50,23,19,10,1,0,13,63,1,0,0,14,
+13,7,0,19,0,27,14,1,3,4,5,1,7,9,35,10,
+2,26,50,22,19,6,53,1,1,4,3,34,4,97,18,12,
+30,1,4,29,14,22,27,0,0,3,6,0,33,1,20,3,
+21,14,59,2,3,25,0,0,2,70,16,8,10,8,0,1,
+0,4,9,16,4,20,3,5,1,61,10,22,86,7,0,0,
+3,35,56,147,6,0,4,52,0,28,4,32,1,9,22,33,
+3,33,0,29,0,3,11,0,7,2,2,20,2,3,57,49,
+3,11,14,16,13,4,19,6,0,32,33,0,0,8,8,19,
+6,9,69,45,15,4,2,3,74,11,8,3,3,28,27,9,
+6,43,51,22,1,7,1,4,0,9,24,32,1,0,7,23,
+22,53,25,0,57,0,56,0,10,1,65,0,0,6,53,21,
+0,6,1,0,20,7,132,7,31,0,10,19,41,41,6,3,
+1,7,22,2,0,12,10,19,65,0,5,40,7,5,171,9,
+5,1,10,12,36,5,15,7,18,41,10,1,19,8,2,0,
+62,23,1,11,7,4,54,3,7,11,179,56,0,21,18,2,
+0,4,4,43,0,2,5,30,1,2,20,81,66,16,7,4,
+6,10,3,0,26,0,20,0,7,11,0,18,5,0,2,9,
+0,52,0,47,0,10,20,31,49,57,0,9,6,17,37,65,
+13,1,26,2,100,1,7,1,16,33,29,5,8,51,15,0,
+24,0,13,2,17,5,10,29,0,21,1,0,0,6,33,0,
+2,20,0,0,3,0,10,12,0,3,16,9,14,2,0,0,
+32,4,1,12,24,0,5,28,8,41,16,11,2,23,0,91,
+0,18,5,15,16,0,3,88,3,11,0,2,38,0,15,55,
+11,0,12,2,12,25,29,0,4,4,22,51,15,53,18,0,
+0,2,10,29,0,37,5,14,3,0,7,13,0,34,71,7,
+1,47,13,10,14,10,6,0,13,0,3,2,2,7,7,0,
+8,22,39,0,35,29,17,15,54,18,33,2,14,24,102,4,
+0,1,0,37,33,2,3,0,3,8,6,22,20,30,0,8,
+12,2,27,7,4,1,2,17,2,1,79,19,1,5,36,26,
+77,96,18,51,8,15,0,64,16,15,1,4,0,3,8,2,
+6,4,12,1,5,33,1,5,0,13,2,83,71,41,1,7,
+2,17,2,184,0,26,5,25,102,4,0,3,17,10,17,0,
+5,1,16,47,4,2,105,0,4,5,3,12,14,0,4,37,
+0,0,1,20,8,26,1,3,20,75,4,0,18,0,0,11,
+2,0,0,0,1,0,50,4,31,3,0,0,32,1,0,22,
+5,22,3,23,38,2,0,0,0,0,68,14,4,0,32,21,
+7,91,8,7,0,40,13,8,19,14,1,47,6,62,3,36,
+23,7,16,8,2,26,49,14,18,13,0,2,9,24,92,14,
+37,18,28,30,1,1,0,36,2,7,3,15,11,55,0,6,
+2,32,2,28,7,3,10,4,9,0,0,12,16,19,51,21,
+1,1,7,10,8,3,11,2,8,21,2,3,33,23,10,97,
+13,57,19,0,6,0,13,3,0,15,0,14,58,15,17,2,
+5,2,0,38,11,0,0,15,5,0,2,21,6,0,3,0,
+29,5,1,4,37,3,87,26,38,2,0,6,3,11,0,9,
+0,10,6,6,4,20,7,27,18,23,25,9,19,6,5,5,
+9,4,7,19,6,9,11,0,0,8,52,42,13,15,0,45,
+2,105,13,7,18,17,46,0,1,7,14,10,44,23,17,28,
+0,4,19,5,3,11,32,0,136,0,28,10,2,29,4,2,
+41,4,9,19,0,11,3,3,0,40,13,4,0,3,3,49,
+74,54,12,4,0,39,3,53,0,5,10,43,5,8,120,4,
+4,13,2,5,83,13,28,2,25,5,6,66,3,1,4,52,
+2,21,1,0,24,17,37,22,0,8,11,0,15,3,21,9,
+0,29,5,69,22,87,4,12,3,27,5,30,3,7,3,25,
+4,45,8,61,29,43,28,5,3,12,5,0,28,0,84,19,
+0,100,28,53,8,56,8,4,2,62,0,30,16,8,5,8,
+9,50,8,27,7,0,0,0,0,80,0,13,7,94,34,0,
+42,6,79,0,0,11,11,25,2,3,10,2,23,30,1,12,
+10,10,7,110,0,1,0,1,7,8,0,0,10,4,36,37,
+1,32,9,34,2,26,5,11,32,7,0,8,4,0,37,1,
+24,8,17,54,25,11,3,0,4,18,1,12,2,35,14,1,
+11,28,3,5,0,13,32,5,0,14,2,11,7,5,51,4,
+7,10,5,0,17,38,4,0,0,59,3,12,8,17,0,29,
+24,148,0,34,39,15,48,25,29,16,33,0,22,4,8,38,
+1,14,8,181,7,14,24,12,7,5,9,25,23,12,0,3,
+0,9,0,2,2,25,0,37,52,61,5,6,44,15,4,4,
+5,4,0,43,22,0,2,5,8,9,7,3,7,21,39,0,
+109,4,22,88,17,29,92,70,5,25,10,38,28,21,52,14,
+14,5,0,1,0,1,7,28,11,11,45,176,19,9,6,15,
+65,1,65,5,97,109,1,19,0,1,52,157,4,39,16,0,
+29,6,2,3,6,7,14,0,41,119,20,25,3,1,5,0,
+41,36,6,47,0,81,5,3,42,79,7,6,0,7,16,3,
+8,49,3,3,52,7,1,59,102,0,125,0,33,0,6,58,
+20,22,12,30,99,19,63,2,2,42,3,26,0,4,3,36,
+0,1,57,37,22,0,87,9,58,9,7,5,16,0,4,2,
+61,4,4,3,9,0,3,21,2,93,88,0,0,2,1,7,
+10,5,14,16,42,5,2,8,9,5,11,5,5,0,0,86,
+0,0,14,0,2,3,44,70,2,60,80,1,32,61,13,5,
+11,128,25,12,32,44,31,6,0,3,5,0,17,3,121,15,
+45,20,2,4,62,27,18,4,8,58,98,14,0,28,60,43,
+46,27,20,69,119,24,4,5,4,111,12,140,8,10,29,11,
+0,50,23,18,53,1,13,0,1,0,1,2,30,10,17,3,
+74,0,57,28,1,17,41,20,0,10,4,0,0,7,0,0,
+25,86,18,12,80,62,27,0,72,4,74,0,2,5,42,0,
+7,0,11,2,42,32,0,1,6,31,19,0,0,2,7,1,
+6,16,17,29,15,4,53,0,12,30,12,14,7,4,59,16,
+0,49,54,0,43,11,19,9,127,3,5,0,134,7,19,3,
+3,0,0,25,5,6,3,38,10,2,97,0,11,4,1,24,
+6,23,93,29,3,36,9,0,0,4,1,12,0,0,18,18,
+0,1,89,3,2,3,2,37,0,5,28,5,1,21,9,22,
+5,155,4,36,39,12,10,12,16,16,182,13,4,4,40,9,
+3,0,28,44,5,2,58,15,13,7,26,12,48,0,30,8,
+2,39,11,30,11,5,15,22,30,0,15,0,85,4,130,0,
+14,25,15,3,3,10,2,2,17,0,19,0,4,0,156,51,
+0,19,9,140,102,4,50,11,5,3,4,2,24,24,10,5,
+33,4,0,29,0,37,6,5,22,0,25,31,102,22,11,6,
+38,17,36,8,2,1,99,8,56,71,68,23,3,12,3,0,
+0,0,22,123,83,5,28,25,3,20,0,8,16,4,1,18,
+0,1,2,0,9,39,25,61,198,13,58,3,11,1,3,11,
+7,5,6,7,19,102,1,14,16,24,68,35,13,6,7,97,
+65,9,17,8,0,29,0,11,14,29,0,2,2,27,55,28,
+9,15,8,1,10,15,4,3,17,1,0,6,67,0,14,4,
+90,0,8,88,26,6,55,32,8,4,1,17,3,9,5,3,
+17,211,59,13,20,60,37,0,0,5,10,39,44,6,12,47,
+32,14,1,105,1,3,13,27,8,3,10,98,152,3,4,9,
+45,17,9,4,3,18,65,0,82,73,1,10,4,8,9,0,
+3,1,20,14,0,93,9,3,0,15,2,13,0,33,11,13,
+2,30,39,47,8,1,32,100,39,17,3,10,61,19,0,2,
+7,0,101,5,3,2,0,4,0,6,8,52,9,2,2,38,
+17,0,0,97,108,32,0,1,28,38,18,10,18,10,26,178,
+29,173,16,0,9,15,84,69,17,21,7,21,20,28,77,16,
+3,0,1,14,77,49,1,1,2,9,9,7,16,39,7,1,
+2,4,10,16,6,0,1,12,19,0,0,60,74,32,9,6,
+56,6,1,6,10,1,10,1,1,27,52,0,28,46,25,164,
+3,3,0,5,1,11,3,29,11,15,16,27,7,28,0,4,
+4,27,7,3,19,2,2,2,3,1,51,11,14,5,20,125,
+2,8,2,8,47,0,56,54,21,154,10,4,7,3,21,0,
+65,1,6,35,1,16,12,45,32,60,7,3,16,109,1,0,
+8,0,8,0,1,5,12,20,0,82,3,81,48,8,30,0,
+8,3,1,12,0,45,3,22,2,1,4,0,85,2,11,7,
+94,0,32,14,12,18,5,0,121,2,5,2,3,199,20,30,
+51,42,23,8,35,13,1,15,0,6,2,5,17,9,1,49,
+0,1,49,40,26,45,5,21,45,19,8,9,0,146,3,14,
+1,4,2,52,6,10,0,0,0,16,0,0,12,6,2,3,
+13,97,25,1,1,58,86,22,12,0,7,2,20,0,18,1,
+3,1,22,6,45,3,72,77,44,4,1,6,2,24,2,1,
+30,43,3,5,5,8,11,1,8,48,6,36,15,18,105,96,
+59,12,2,2,5,1,12,1,19,0,70,0,17,0,24,1,
+2,6,117,13,29,1,23,7,61,26,6,0,109,0,5,47,
+13,92,61,22,0,30,4,9,2,4,172,41,0,3,50,5,
+23,38,22,2,85,15,6,4,2,25,0,8,8,10,10,1,
+26,0,1,21,18,86,21,15,9,46,84,4,43,29,24,16,
+156,6,3,1,2,13,1,8,2,10,61,5,6,10,0,92,
+12,25,48,27,13,51,30,54,57,0,10,11,7,51,2,119,
+0,2,47,8,29,29,21,3,29,0,25,2,101,4,21,4,
+30,14,14,36,2,6,1,1,0,29,0,31,0,12,4,26,
+2,3,41,0,15,1,44,3,2,7,115,24,12,5,2,51,
+7,1,4,2,7,104,29,21,6,5,14,5,0,42,0,37,
+3,101,11,2,30,5,8,34,6,69,0,5,16,16,13,3,
+34,0,1,55,2,46,10,18,32,3,2,3,0,5,7,1,
+6,41,0,6,81,36,1,7,4,3,11,5,47,2,43,0,
+0,1,9,4,14,34,16,12,27,2,107,0,4,60,154,14,
+55,0,1,0,4,55,3,56,40,41,0,47,26,121,3,0,
+67,33,5,2,1,44,91,29,5,69,5,4,61,2,10,3,
+6,2,2,13,9,24,0,15,1,4,0,36,61,3,19,35,
+34,4,0,1,91,0,80,6,3,0,7,3,6,4,16,1,
+27,83,1,0,4,22,12,0,0,0,4,4,15,5,73,0,
+6,8,5,1,3,25,71,97,37,9,13,110,13,70,10,8,
+4,34,3,1,3,55,23,140,0,3,0,3,1,0,10,5,
+17,3,42,15,9,0,27,8,59,13,11,15,75,13,2,25,
+19,26,46,0,23,4,1,0,109,9,2,21,19,37,1,0,
+58,28,75,12,32,15,0,97,0,1,17,3,1,28,12,7,
+39,28,34,25,33,22,3,44,32,13,7,0,15,2,178,4,
+6,13,0,44,1,0,22,0,0,52,15,3,94,12,12,34,
+34,24,105,7,0,1,5,11,88,48,65,21,46,105,5,28,
+0,34,22,36,2,82,0,7,117,1,29,27,17,24,2,0,
+153,33,16,9,2,0,11,5,5,3,76,33,20,2,12,16,
+2,30,109,6,6,11,84,49,5,2,23,0,18,174,18,22,
+80,3,44,9,26,6,124,38,50,68,17,9,23,50,5,114,
+1,0,0,0,19,14,41,26,13,2,2,1,44,2,9,76,
+10,13,36,1,5,0,1,34,20,5,5,5,2,34,1,76,
+7,48,3,4,6,1,197,0,33,12,0,1,10,61,92,13,
+4,1,24,25,4,10,3,4,4,26,1,9,7,24,5,24,
+1,46,7,10,65,16,31,1,6,66,6,9,9,14,0,28,
+62,7,33,2,18,25,3,0,7,14,52,110,18,116,7,145,
+4,15,17,69,1,5,0,22,131,6,57,20,39,3,5,0,
+2,58,8,114,1,8,16,19,2,7,3,12,1,28,9,33,
+5,29,1,30,8,2,19,21,78,103,17,2,99,71,36,16,
+9,18,16,62,0,16,9,7,68,1,22,0,2,12,24,0,
+19,15,110,0,20,12,16,110,60,4,147,1,5,56,17,7,
+0,3,19,15,7,0,0,41,0,0,6,5,21,26,16,0,
+5,11,44,38,0,1,6,40,23,93,4,63,2,9,56,5,
+6,32,9,6,7,23,8,9,9,73,0,5,37,27,120,1,
+57,41,176,0,1,6,57,36,9,93,89,0,1,5,6,78,
+124,34,12,0,5,7,8,15,1,46,0,15,18,103,0,41,
+5,24,4,29,4,55,1,155,8,38,53,17,2,52,0,236,
+2,7,13,17,13,0,28,6,40,33,200,3,22,13,5,0,
+0,15,13,1,71,82,1,111,24,34,28,0,25,15,6,33,
+0,16,29,141,1,2,6,0,1,99,6,3,1,38,0,37,
+0,31,66,42,0,0,47,0,3,1,115,26,8,22,19,2,
+2,13,27,11,35,14,31,7,18,15,6,12,0,38,5,18,
+195,15,12,0,7,42,26,10,38,30,33,13,63,48,10,8,
+3,4,9,3,2,40,17,0,7,4,38,7,7,46,9,37,
+41,2,4,5,6,0,5,5,17,2,78,7,4,36,36,0,
+42,23,5,12,21,0,8,229,34,52,29,0,11,0,1,6,
+23,165,11,9,0,20,6,3,24,14,15,21,48,95,24,39,
+20,48,7,64,61,83,8,7,4,23,44,82,15,9,12,4,
+7,16,7,15,0,2,7,49,10,18,2,24,58,0,79,166,
+35,13,8,0,69,4,40,24,72,20,30,12,17,1,4,9,
+9,75,7,21,8,86,7,0,0,138,0,54,13,44,151,42,
+85,82,67,34,0,2,9,50,39,107,7,192,2,5,8,2,
+52,1,10,7,6,69,12,34,15,0,11,6,45,11,8,29,
+20,19,190,12,8,137,3,14,3,50,9,7,19,17,4,17,
+26,34,0,7,7,21,1,4,85,185,5,62,2,0,62,63,
+117,0,44,178,2,18,2,3,31,32,1,80,172,34,1,6,
+1,4,12,1,42,5,40,5,8,2,4,47,4,0,0,38,
+5,27,25,6,80,22,61,82,1,60,9,20,0,5,35,7,
+1,0,6,9,3,0,41,21,21,0,24,20,45,0,1,0,
+26,11,1,9,13,0,14,41,19,9,0,30,74,0,16,0,
+16,47,5,2,97,38,5,0,46,18,2,6,10,51,0,2,
+0,37,1,4,5,20,4,2,14,141,1,47,68,1,8,16,
+4,27,7,38,8,0,20,0,5,45,53,1,1,4,15,1,
+0,0,3,0,70,25,39,48,27,0,2,3,9,4,2,5,
+3,0,10,10,8,2,6,89,4,1,87,3,99,41,33,34,
+26,4,123,6,2,5,3,20,79,1,0,155,10,2,71,1,
+15,9,20,33,6,2,18,0,88,0,2,3,38,21,5,36,
+56,1,35,7,0,18,0,0,7,12,3,2,20,5,117,32,
+11,6,33,17,49,112,9,67,147,24,31,14,2,0,184,56,
+4,100,1,0,77,9,11,212,5,25,146,43,66,9,0,94,
+1,5,16,16,14,11,66,7,85,1,4,5,47,11,84,0,
+32,10,14,6,50,11,1,9,12,66,41,137,3,26,13,8,
+28,31,7,9,59,5,13,2,116,8,19,18,4,21,6,14,
+51,5,57,6,2,0,0,1,46,12,19,5,80,13,35,0,
+18,156,38,33,18,1,146,11,0,10,12,1,3,1,63,6,
+48,24,3,22,53,21,64,33,85,89,0,6,24,3,27,13,
+9,1,32,35,30,15,1,2,47,13,4,63,33,0,1,0,
+48,0,12,32,30,39,0,25,17,4,27,53,11,2,19,0,
+3,7,45,43,4,16,37,37,62,59,5,1,0,83,7,37,
+8,3,7,30,31,8,0,0,2,5,42,39,13,1,2,19,
+15,11,0,18,20,4,1,0,0,45,5,3,0,4,1,11,
+9,13,167,1,11,2,17,72,42,46,0,20,54,11,86,4,
+21,5,2,4,3,0,142,4,7,81,0,55,19,61,19,158,
+8,37,25,95,9,1,28,1,1,88,2,44,0,39,21,24,
+31,4,37,17,121,107,2,7,11,2,13,52,127,2,12,51,
+6,1,1,115,0,7,0,25,123,25,46,46,2,2,0,8,
+0,18,12,34,1,3,19,1,11,33,82,15,99,0,9,77,
+26,0,80,10,16,15,9,0,26,75,55,33,26,23,158,0,
+37,74,50,61,10,0,17,81,4,6,19,2,23,16,2,30,
+11,1,39,137,9,0,11,6,55,1,27,56,15,42,6,37,
+9,35,17,68,20,0,1,2,31,93,24,38,64,1,4,11,
+3,3,2,3,25,0,17,80,13,13,0,75,4,30,7,14,
+2,0,0,5,85,34,6,26,25,46,38,3,0,6,7,128,
+103,23,33,22,45,32,27,0,26,2,47,80,13,115,3,0,
+2,0,70,181,1,227,0,31,4,19,234,3,0,76,7,9,
+0,10,1,10,16,0,0,86,13,74,109,1,0,26,19,9,
+1,46,0,89,1,143,57,37,7,0,43,127,55,89,13,5,
+1,3,27,26,15,6,26,90,61,3,0,16,0,7,14,34,
+22,0,19,2,111,80,44,52,2,10,127,6,44,15,24,11,
+2,4,0,77,13,8,21,2,35,9,2,29,66,45,24,1,
+0,7,10,2,2,2,16,46,174,14,101,3,1,6,88,0,
+100,50,48,51,10,5,48,0,18,88,28,0,69,26,1,10,
+10,20,10,1,2,36,13,142,91,3,21,186,0,12,11,3,
+4,71,3,18,8,48,38,94,1,16,2,2,8,6,23,147,
+0,157,2,52,3,156,0,68,34,0,2,20,83,29,42,4,
+14,0,64,0,3,1,6,4,185,33,12,28,67,0,2,6,
+45,10,0,2,20,86,40,10,61,9,5,48,3,18,0,1,
+1,7,37,4,0,1,0,16,165,8,1,92,2,70,1,0,
+74,7,2,12,75,31,0,3,3,27,0,1,40,0,10,4,
+179,137,92,26,76,43,0,6,0,9,129,7,40,2,82,29,
+8,31,146,3,44,90,3,12,1,73,10,6,35,95,16,10,
+0,91,0,81,0,6,3,113,140,46,23,34,7,5,1,8,
+3,31,20,139,64,9,2,50,50,16,0,0,11,5,37,31,
+2,4,15,4,6,32,7,6,19,71,0,15,179,0,30,110,
+8,2,0,33,7,29,35,1,0,37,3,3,102,1,1,37,
+125,0,1,17,2,14,1,133,68,18,1,67,93,87,28,45,
+23,9,20,58,16,31,59,4,17,71,0,18,2,1,58,81,
+1,7,6,18,7,0,72,52,49,1,17,89,0,83,9,253,
+92,1,2,66,5,100,8,73,3,3,0,22,24,34,19,24,
+32,15,92,9,91,50,0,31,11,31,24,0,9,3,121,22,
+22,24,44,124,14,35,73,5,0,66,72,8,14,42,28,8,
+17,102,35,65,1,1,14,123,20,1,73,1,3,35,72,12,
+15,2,7,138,1,62,79,20,3,26,0,3,5,1,185,3,
+9,3,10,19,0,4,1,52,22,19,60,16,11,7,19,14,
+29,101,16,80,159,1,0,65,1,6,112,108,4,11,171,33,
+28,2,12,9,23,10,4,7,10,125,187,6,8,0,0,73,
+42,6,77,91,5,64,113,3,0,12,31,6,50,27,23,131,
+0,0,6,76,4,5,35,20,54,44,6,3,9,0,0,99,
+0,20,38,106,88,16,4,0,8,12,4,18,234,1,113,0,
+45,62,75,32,13,0,146,3,8,2,6,16,0,3,1,54,
+99,97,3,18,35,7,18,101,1,31,16,210,22,150,9,27,
+3,3,11,7,13,2,1,0,3,14,50,6,6,6,6,3,
+0,13,0,0,8,1,36,11,12,187,15,7,17,3,18,63,
+4,1,15,59,54,0,111,12,11,133,32,53,79,2,68,29,
+0,0,86,0,41,3,24,4,12,35,206,11,18,2,0,7,
+91,65,22,34,0,0,39,0,13,29,114,123,122,15,5,26,
+0,0,42,68,7,15,1,0,3,0,0,8,45,17,1,89,
+95,30,2,32,1,5,71,16,3,13,16,8,62,1,2,54,
+42,14,150,39,8,39,18,64,88,0,106,98,71,13,19,13,
+18,4,1,103,17,1,0,26,10,21,8,27,44,165,7,18,
+0,0,85,0,211,19,0,11,0,13,0,1,0,85,16,6,
+7,4,2,0,1,109,120,132,0,11,29,97,0,14,68,93,
+3,11,2,16,117,22,3,145,10,18,50,33,37,10,1,19,
+71,106,4,8,13,90,4,82,13,60,59,8,14,32,35,8,
+4,61,0,70,14,9,21,6,200,7,75,36,20,48,1,18,
+13,2,38,1,0,94,11,0,1,102,28,20,22,25,13,2,
+44,69,219,56,4,5,4,8,52,49,29,37,9,36,43,56,
+9,26,63,253,156,0,159,101,4,32,150,8,1,24,91,8,
+13,0,62,0,0,0,209,99,36,31,24,71,119,71,0,16,
+37,10,29,1,217,1,9,1,20,3,2,7,85,5,6,5,
+4,4,85,49,126,2,100,7,5,229,10,58,99,54,14,33,
+11,12,41,15,45,19,5,5,0,105,69,5,10,4,61,34,
+0,8,3,182,9,0,61,41,0,9,0,5,13,38,46,0,
+22,6,0,1,9,106,36,0,1,0,56,98,5,138,1,4,
+70,0,5,17,34,25,42,14,58,0,0,0,7,14,0,19,
+7,0,4,80,43,3,1,9,66,13,3,13,87,22,126,14,
+1,217,9,2,91,2,54,58,3,0,34,29,1,6,31,24,
+60,33,73,3,80,14,1,82,23,0,44,205,32,28,0,64,
+50,154,16,18,69,0,8,2,2,37,53,70,6,7,19,25,
+7,65,57,97,34,213,0,2,1,0,17,70,8,3,147,8,
+2,35,7,122,0,81,32,0,0,13,28,253,171,50,51,110,
+21,26,9,0,0,0,5,29,3,10,134,0,177,248,195,0,
+3,75,8,85,0,12,66,110,0,37,12,0,157,46,4,3,
+60,0,32,14,1,33,0,0,85,39,12,8,10,0,38,56,
+3,7,27,35,2,15,42,49,11,26,0,113,6,9,0,23,
+2,15,10,53,12,2,68,0,11,82,27,24,67,70,12,6,
+127,21,3,0,0,0,54,2,27,66,1,137,0,2,9,54,
+90,1,9,10,3,1,15,8,0,8,82,107,15,7,0,0,
+0,3,131,2,6,24,34,70,41,12,8,62,138,5,39,114,
+5,234,115,26,18,166,5,21,0,133,44,23,13,188,5,5,
+0,17,1,7,13,13,2,17,30,84,26,46,155,26,0,37,
+55,1,0,0,111,0,2,10,0,16,2,6,56,15,120,50,
+187,0,16,1,131,72,0,29,21,179,34,15,3,2,11,20,
+218,19,0,66,8,6,54,133,0,0,11,151,1,3,1,2,
+9,12,41,64,5,241,7,73,10,20,11,6,58,2,28,237,
+20,1,5,9,30,11,41,75,39,23,20,0,1,35,50,4,
+4,13,44,23,4,5,63,9,22,14,3,0,99,7,0,31,
+20,3,26,7,52,98,198,20,28,2,4,0,0,13,2,1,
+2,16,9,10,6,0,21,12,174,3,81,24,171,9,42,0,
+44,2,5,9,52,8,16,73,16,28,12,5,0,24,35,1,
+48,172,6,0,43,121,79,31,43,51,1,10,58,63,29,6,
+18,62,11,1,53,10,71,61,161,42,4,36,154,82,56,8,
+5,2,32,35,100,13,10,159,8,104,10,0,7,12,11,77,
+2,88,1,53,70,0,79,8,80,109,139,0,38,131,10,4,
+7,2,23,61,1,0,18,51,9,5,18,172,5,110,4,10,
+14,12,0,1,30,9,79,218,48,51,35,75,0,93,1,40,
+79,72,124,6,0,0,11,19,43,1,5,94,1,26,191,3,
+31,9,0,3,0,7,20,15,1,54,6,0,34,6,52,43,
+27,5,147,1,0,30,162,50,14,35,0,39,2,37,139,25,
+50,162,20,12,25,14,4,3,63,4,0,20,0,11,44,1,
+1,20,5,4,0,68,49,0,145,6,36,0,29,3,42,115,
+0,15,3,2,2,60,0,53,1,0,105,6,0,63,49,11,
+7,5,10,56,1,11,8,5,4,9,92,1,31,197,51,2,
+0,2,3,33,21,2,0,16,4,6,11,6,26,12,12,77,
+16,5,24,10,114,3,10,70,4,19,17,0,3,0,4,81,
+62,5,3,40,51,117,2,1,44,116,3,2,0,97,30,5,
+4,0,13,1,3,12,21,20,102,1,54,1,5,126,15,12,
+18,34,234,179,166,0,1,25,0,70,7,32,187,20,3,0,
+57,9,65,1,78,10,82,31,0,3,96,2,15,13,19,0,
+10,7,1,6,86,91,1,93,23,1,114,0,245,90,4,180,
+14,39,16,3,68,1,5,74,1,7,136,20,5,14,4,31,
+54,0,33,32,7,16,4,5,25,50,0,7,128,23,0,160,
+29,46,112,0,5,19,104,41,70,6,7,237,0,9,18,13,
+43,250,34,111,12,89,9,140,34,24,26,25,58,17,0,128,
+20,36,83,44,34,250,0,61,0,0,110,13,107,177,14,0,
+66,77,1,39,9,2,28,21,0,8,77,86,93,6,23,156,
+34,15,11,18,7,37,4,14,96,10,23,0,95,80,3,61,
+7,10,39,18,49,67,3,105,18,5,132,61,7,41,1,2,
+38,40,3,92,4,0,90,9,0,87,34,22,2,5,130,248,
+3,0,178,0,94,15,71,29,26,6,1,0,0,22,93,97,
+86,63,6,13,20,10,1,52,5,93,3,57,40,2,0,1,
+6,20,7,8,38,0,0,3,7,15,12,3,5,8,25,48,
+14,89,76,77,72,0,71,20,20,3,0,0,42,42,11,18,
+1,40,18,9,80,3,136,20,35,2,19,30,171,159,4,2,
+94,18,0,1,33,91,44,5,0,10,0,3,37,9,115,15,
+27,136,22,4,40,33,26,15,7,0,37,28,4,9,44,32,
+17,35,5,1,25,21,10,1,20,31,0,5,11,1,26,183,
+1,5,37,111,9,79,28,86,21,30,5,25,5,35,9,65,
+6,0,97,45,2,117,8,44,7,11,225,5,70,99,157,0,
+1,2,4,132,15,44,0,115,28,24,0,12,22,0,42,3,
+25,89,40,244,33,82,26,156,49,58,52,0,47,2,117,24,
+35,66,45,15,82,66,67,13,8,80,68,11,22,2,0,10,
+1,47,30,1,203,68,19,76,157,34,110,33,21,135,6,51,
+31,12,24,177,10,0,2,37,0,34,23,36,46,7,4,11,
+5,5,17,21,226,7,33,7,22,149,52,0,78,59,5,52,
+0,148,41,57,71,16,2,11,165,117,5,18,87,50,58,31,
+2,1,12,49,2,0,1,42,2,94,0,7,72,94,4,130,
+172,28,2,44,0,7,38,87,6,52,28,8,1,38,20,36,
+0,13,184,40,0,59,147,0,20,80,7,165,16,1,18,36,
+0,0,12,59,97,45,0,70,93,70,165,12,111,20,0,82,
+36,0,202,23,35,49,149,4,1,1,128,15,1,49,100,11,
+6,13,14,28,24,9,15,11,37,204,10,0,15,17,15,12,
+39,0,17,16,80,97,84,4,16,70,58,121,75,148,67,5,
+21,0,12,51,4,9,3,18,5,105,71,173,166,18,83,174,
+5,11,208,19,123,0,29,0,4,0,88,23,109,61,66,97,
+1,59,8,29,53,1,31,19,197,152,4,41,28,10,2,60,
+112,2,5,58,9,193,45,80,10,57,9,36,104,131,1,212,
+28,11,142,0,224,70,14,38,6,1,9,85,31,72,5,61,
+8,77,9,8,7,38,0,21,0,63,53,0,8,4,9,3,
+0,18,13,86,73,5,2,0,71,21,0,14,89,88,2,37,
+41,19,25,1,69,28,18,132,2,4,3,29,0,82,26,8,
+19,63,26,3,0,16,93,37,22,0,33,2,27,3,62,12,
+};
+
+/* The hash function */
+__private_extern__ ub4 phash(key, len)
+char *key;
+int   len;
+{
+  ub4 rsl, val = lookup(key, len, 0x5384540f);
+  rsl = ((val>>17)^scramble[tab[val&0x1fff]]);
+  return rsl;
+}
+
diff --git a/runtime/runtime.h b/runtime/runtime.h
new file mode 100644 (file)
index 0000000..fd98fc5
--- /dev/null
@@ -0,0 +1,483 @@
+/*
+ * Copyright (c) 1999-2007 Apple Inc.  All Rights Reserved.
+ * 
+ * @APPLE_LICENSE_HEADER_START@
+ * 
+ * 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@
+ */
+
+#ifndef _OBJC_RUNTIME_H
+#define _OBJC_RUNTIME_H
+
+#import <objc/objc.h>
+
+#import <sys/types.h>
+#import <stdarg.h>
+#import <stdint.h>
+#import <stddef.h>
+#import <AvailabilityMacros.h>
+
+
+/* Types */
+
+typedef struct objc_method *Method;
+typedef struct objc_ivar *Ivar;
+typedef struct objc_category *Category;
+typedef struct objc_property *objc_property_t;
+
+struct objc_class {
+    Class isa;
+
+#if !__OBJC2__
+    Class super_class                                        OBJC2_UNAVAILABLE;
+    const char *name                                         OBJC2_UNAVAILABLE;
+    long version                                             OBJC2_UNAVAILABLE;
+    long info                                                OBJC2_UNAVAILABLE;
+    long instance_size                                       OBJC2_UNAVAILABLE;
+    struct objc_ivar_list *ivars                             OBJC2_UNAVAILABLE;
+    struct objc_method_list **methodLists                    OBJC2_UNAVAILABLE;
+    struct objc_cache *cache                                 OBJC2_UNAVAILABLE;
+    struct objc_protocol_list *protocols                     OBJC2_UNAVAILABLE;
+#endif
+
+} OBJC2_UNAVAILABLE;
+/* Use `Class` instead of `struct objc_class *` */
+
+#ifdef __OBJC__
+@class Protocol;
+#else
+typedef struct objc_object Protocol;
+#endif
+
+struct objc_method_description {
+       SEL name;
+       char *types;
+};
+struct objc_method_description_list {
+        int count;
+        struct objc_method_description list[1];
+};
+
+struct objc_protocol_list {
+    struct objc_protocol_list *next;
+    long count;
+    Protocol *list[1];
+};
+
+
+/* Functions */
+
+OBJC_EXPORT id object_copy(id obj, size_t size);
+OBJC_EXPORT id object_dispose(id obj);
+
+OBJC_EXPORT Class object_getClass(id obj) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT Class object_setClass(id obj, Class cls) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+OBJC_EXPORT const char *object_getClassName(id obj);
+OBJC_EXPORT void *object_getIndexedIvars(id obj);
+
+OBJC_EXPORT id object_getIvar(id obj, Ivar ivar) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT void object_setIvar(id obj, Ivar ivar, id value) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+OBJC_EXPORT Ivar object_setInstanceVariable(id obj, const char *name, void *value);
+OBJC_EXPORT Ivar object_getInstanceVariable(id obj, const char *name, void **outValue);
+
+OBJC_EXPORT id objc_getClass(const char *name);
+OBJC_EXPORT id objc_getMetaClass(const char *name);
+OBJC_EXPORT id objc_lookUpClass(const char *name);
+OBJC_EXPORT id objc_getRequiredClass(const char *name);
+OBJC_EXPORT Class objc_getFutureClass(const char *name) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT void objc_setFutureClass(Class cls, const char *name) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT int objc_getClassList(Class *buffer, int bufferCount);
+
+OBJC_EXPORT Protocol *objc_getProtocol(const char *name)
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT Protocol **objc_copyProtocolList(unsigned int *outCount)
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+OBJC_EXPORT const char *class_getName(Class cls) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT BOOL class_isMetaClass(Class cls) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT Class class_getSuperclass(Class cls) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT Class class_setSuperclass(Class cls, Class newSuper) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER OBJC2_UNAVAILABLE;
+
+OBJC_EXPORT int class_getVersion(Class cls);
+OBJC_EXPORT void class_setVersion(Class cls, int version);
+
+OBJC_EXPORT size_t class_getInstanceSize(Class cls) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+OBJC_EXPORT Ivar class_getInstanceVariable(Class cls, const char *name);
+OBJC_EXPORT Ivar class_getClassVariable(Class cls, const char *name) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT Ivar *class_copyIvarList(Class cls, unsigned int *outCount) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+OBJC_EXPORT Method class_getInstanceMethod(Class cls, SEL name);
+OBJC_EXPORT Method class_getClassMethod(Class cls, SEL name);
+OBJC_EXPORT IMP class_getMethodImplementation(Class cls, SEL name) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT IMP class_getMethodImplementation_stret(Class cls, SEL name) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT BOOL class_respondsToSelector(Class cls, SEL sel) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT Method *class_copyMethodList(Class cls, unsigned int *outCount) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+OBJC_EXPORT BOOL class_conformsToProtocol(Class cls, Protocol *protocol) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT Protocol **class_copyProtocolList(Class cls, unsigned int *outCount)
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+OBJC_EXPORT objc_property_t class_getProperty(Class cls, const char *name)
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT objc_property_t *class_copyPropertyList(Class cls, unsigned int *outCount)
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+OBJC_EXPORT const char *class_getIvarLayout(Class cls)
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT const char *class_getWeakIvarLayout(Class cls)
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+OBJC_EXPORT id class_createInstance(Class cls, size_t extraBytes);
+
+OBJC_EXPORT Class objc_allocateClassPair(Class superclass, const char *name, 
+                                         size_t extraBytes) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT void objc_registerClassPair(Class cls) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT Class objc_duplicateClass(Class original, const char *name, 
+                                      size_t extraBytes) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT void objc_disposeClassPair(Class cls) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+OBJC_EXPORT BOOL class_addMethod(Class cls, SEL name, IMP imp, 
+                                 const char *types) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT IMP class_replaceMethod(Class cls, SEL name, IMP imp, 
+                                    const char *types) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT BOOL class_addIvar(Class cls, const char *name, size_t size, 
+                               uint8_t alignment, const char *types) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT BOOL class_addProtocol(Class cls, Protocol *protocol) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT void class_setIvarLayout(Class cls, const char *layout)
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT void class_setWeakIvarLayout(Class cls, const char *layout)
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+
+OBJC_EXPORT SEL method_getName(Method m) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT IMP method_getImplementation(Method m) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT const char *method_getTypeEncoding(Method m) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+OBJC_EXPORT unsigned int method_getNumberOfArguments(Method m);
+OBJC_EXPORT char *method_copyReturnType(Method m) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT char *method_copyArgumentType(Method m, unsigned int index) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT void method_getReturnType(Method m, char *dst, size_t dst_len) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT void method_getArgumentType(Method m, unsigned int index, 
+                                        char *dst, size_t dst_len) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT struct objc_method_description *method_getDescription(Method m) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+OBJC_EXPORT IMP method_setImplementation(Method m, IMP imp) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT void method_exchangeImplementations(Method m1, Method m2) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+OBJC_EXPORT const char *ivar_getName(Ivar v) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT const char *ivar_getTypeEncoding(Ivar v) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT ptrdiff_t ivar_getOffset(Ivar v) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+OBJC_EXPORT const char *property_getName(objc_property_t property) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT const char *property_getAttributes(objc_property_t property) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+OBJC_EXPORT BOOL protocol_conformsToProtocol(Protocol *proto, Protocol *other)
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT BOOL protocol_isEqual(Protocol *proto, Protocol *other)
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT const char *protocol_getName(Protocol *p)
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT struct objc_method_description protocol_getMethodDescription(Protocol *p, SEL aSel, BOOL isRequiredMethod, BOOL isInstanceMethod)
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT struct objc_method_description *protocol_copyMethodDescriptionList(Protocol *p, BOOL isRequiredMethod, BOOL isInstanceMethod, unsigned int *outCount)
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT objc_property_t protocol_getProperty(Protocol *proto, const char *name, BOOL isRequiredProperty, BOOL isInstanceProperty)
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT objc_property_t *protocol_copyPropertyList(Protocol *proto, unsigned int *outCount)
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT Protocol **protocol_copyProtocolList(Protocol *proto, unsigned int *outCount)
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+OBJC_EXPORT const char **objc_copyImageNames(unsigned int *outCount) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT const char *class_getImageName(Class cls) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT const char **objc_copyClassNamesForImage(const char *image, 
+                                                     unsigned int *outCount) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+OBJC_EXPORT const char *sel_getName(SEL sel);
+OBJC_EXPORT SEL sel_getUid(const char *str);
+OBJC_EXPORT SEL sel_registerName(const char *str);
+OBJC_EXPORT BOOL sel_isEqual(SEL lhs, SEL rhs) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+OBJC_EXPORT void objc_enumerationMutation(id) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+OBJC_EXPORT void objc_setEnumerationMutationHandler(void (*handler)(id)) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+OBJC_EXPORT void objc_setForwardHandler(void *fwd, void *fwd_stret) 
+     AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+#define _C_ID       '@'
+#define _C_CLASS    '#'
+#define _C_SEL      ':'
+#define _C_CHR      'c'
+#define _C_UCHR     'C'
+#define _C_SHT      's'
+#define _C_USHT     'S'
+#define _C_INT      'i'
+#define _C_UINT     'I'
+#define _C_LNG      'l'
+#define _C_ULNG     'L'
+#define _C_LNG_LNG  'q'
+#define _C_ULNG_LNG 'Q'
+#define _C_FLT      'f'
+#define _C_DBL      'd'
+#define _C_BFLD     'b'
+#define _C_BOOL     'B'
+#define _C_VOID     'v'
+#define _C_UNDEF    '?'
+#define _C_PTR      '^'
+#define _C_CHARPTR  '*'
+#define _C_ATOM     '%'
+#define _C_ARY_B    '['
+#define _C_ARY_E    ']'
+#define _C_UNION_B  '('
+#define _C_UNION_E  ')'
+#define _C_STRUCT_B '{'
+#define _C_STRUCT_E '}'
+#define _C_VECTOR   '!'
+#define _C_CONST    'r'
+
+
+/* Obsolete types */
+
+#if !__OBJC2__
+
+#define CLS_GETINFO(cls,infomask)        ((cls)->info & (infomask))
+#define CLS_SETINFO(cls,infomask)        ((cls)->info |= (infomask))
+
+// class is not a metaclass
+#define CLS_CLASS               0x1
+// class is a metaclass
+#define CLS_META                0x2
+// class's +initialize method has completed
+#define CLS_INITIALIZED         0x4
+// class is posing
+#define CLS_POSING              0x8
+// unused
+#define CLS_MAPPED              0x10
+// class and subclasses need cache flush during image loading
+#define CLS_FLUSH_CACHE         0x20
+// method cache should grow when full
+#define CLS_GROW_CACHE          0x40
+// unused
+#define CLS_NEED_BIND           0x80
+// methodLists is array of method lists
+#define CLS_METHOD_ARRAY        0x100
+// the JavaBridge constructs classes with these markers
+#define CLS_JAVA_HYBRID         0x200
+#define CLS_JAVA_CLASS          0x400
+// thread-safe +initialize
+#define CLS_INITIALIZING        0x800
+// bundle unloading
+#define CLS_FROM_BUNDLE         0x1000
+// C++ ivar support
+#define CLS_HAS_CXX_STRUCTORS   0x2000
+// Lazy method list arrays
+#define CLS_NO_METHOD_ARRAY     0x4000
+// +load implementation
+#define CLS_HAS_LOAD_METHOD     0x8000
+// objc_allocateClassPair API
+#define CLS_CONSTRUCTING        0x10000
+// class compiled with bigger class structure
+#define CLS_EXT                 0x20000
+
+
+struct objc_category {
+    char *category_name                                      OBJC2_UNAVAILABLE;
+    char *class_name                                         OBJC2_UNAVAILABLE;
+    struct objc_method_list *instance_methods                OBJC2_UNAVAILABLE;
+    struct objc_method_list *class_methods                   OBJC2_UNAVAILABLE;
+    struct objc_protocol_list *protocols                     OBJC2_UNAVAILABLE;
+}                                                            OBJC2_UNAVAILABLE;
+
+
+struct objc_ivar {
+    char *ivar_name                                          OBJC2_UNAVAILABLE;
+    char *ivar_type                                          OBJC2_UNAVAILABLE;
+    int ivar_offset                                          OBJC2_UNAVAILABLE;
+#ifdef __LP64__
+    int space                                                OBJC2_UNAVAILABLE;
+#endif
+}                                                            OBJC2_UNAVAILABLE;
+
+struct objc_ivar_list {
+    int ivar_count                                           OBJC2_UNAVAILABLE;
+#ifdef __LP64__
+    int space                                                OBJC2_UNAVAILABLE;
+#endif
+    /* variable length structure */
+    struct objc_ivar ivar_list[1]                            OBJC2_UNAVAILABLE;
+}                                                            OBJC2_UNAVAILABLE;
+
+
+struct objc_method {
+    SEL method_name                                          OBJC2_UNAVAILABLE;
+    char *method_types                                       OBJC2_UNAVAILABLE;
+    IMP method_imp                                           OBJC2_UNAVAILABLE;
+}                                                            OBJC2_UNAVAILABLE;
+
+struct objc_method_list {
+    struct objc_method_list *obsolete                        OBJC2_UNAVAILABLE;
+
+    int method_count                                         OBJC2_UNAVAILABLE;
+#ifdef __LP64__
+    int space                                                OBJC2_UNAVAILABLE;
+#endif
+    /* variable length structure */
+    struct objc_method method_list[1]                        OBJC2_UNAVAILABLE;
+}                                                            OBJC2_UNAVAILABLE;
+
+
+typedef struct objc_symtab *Symtab                           OBJC2_UNAVAILABLE;
+
+struct objc_symtab {
+    unsigned long sel_ref_cnt                                OBJC2_UNAVAILABLE;
+    SEL *refs                                                OBJC2_UNAVAILABLE;
+    unsigned short cls_def_cnt                               OBJC2_UNAVAILABLE;
+    unsigned short cat_def_cnt                               OBJC2_UNAVAILABLE;
+    void *defs[1] /* variable size */                        OBJC2_UNAVAILABLE;
+}                                                            OBJC2_UNAVAILABLE;
+
+
+typedef struct objc_cache *Cache                             OBJC2_UNAVAILABLE;
+
+#define CACHE_BUCKET_NAME(B)  ((B)->method_name)
+#define CACHE_BUCKET_IMP(B)   ((B)->method_imp)
+#define CACHE_BUCKET_VALID(B) (B)
+#ifndef __LP64__
+#define CACHE_HASH(sel, mask) (((uintptr_t)(sel)>>2) & (mask))
+#else
+#define CACHE_HASH(sel, mask) (((unsigned int)((uintptr_t)(sel)>>3)) & (mask))
+#endif
+struct objc_cache {
+    unsigned int mask /* total = mask + 1 */                 OBJC2_UNAVAILABLE;
+    unsigned int occupied                                    OBJC2_UNAVAILABLE;
+    Method buckets[1]                                        OBJC2_UNAVAILABLE;
+} /* GrP fixme should be OBJC2_UNAVAILABLE, but isn't because of spurious warnings in [super ...] calls */;
+
+
+typedef struct objc_module *Module                           OBJC2_UNAVAILABLE;
+
+struct objc_module {
+    unsigned long version                                    OBJC2_UNAVAILABLE;
+    unsigned long size                                       OBJC2_UNAVAILABLE;
+    const char *name                                         OBJC2_UNAVAILABLE;
+    Symtab symtab                                            OBJC2_UNAVAILABLE;
+}                                                            OBJC2_UNAVAILABLE;
+
+#else
+
+struct objc_method_list;
+
+#endif
+
+
+/* Obsolete functions */
+
+OBJC_EXPORT BOOL sel_isMapped(SEL sel)                       OBJC2_UNAVAILABLE;
+
+OBJC_EXPORT id object_copyFromZone(id anObject, size_t nBytes, void *z) OBJC2_UNAVAILABLE;
+OBJC_EXPORT id object_realloc(id anObject, size_t nBytes)    OBJC2_UNAVAILABLE;
+OBJC_EXPORT id object_reallocFromZone(id anObject, size_t nBytes, void *z) OBJC2_UNAVAILABLE;
+
+#define OBSOLETE_OBJC_GETCLASSES 1
+OBJC_EXPORT void *objc_getClasses(void)                      OBJC2_UNAVAILABLE;
+OBJC_EXPORT void objc_addClass(Class myClass)                OBJC2_UNAVAILABLE;
+OBJC_EXPORT void objc_setClassHandler(int (*)(const char *)) OBJC2_UNAVAILABLE;
+OBJC_EXPORT void objc_setMultithreaded (BOOL flag)           OBJC2_UNAVAILABLE;
+
+OBJC_EXPORT id class_createInstanceFromZone(Class, size_t idxIvars, void *z) OBJC2_UNAVAILABLE;
+
+OBJC_EXPORT void class_addMethods(Class, struct objc_method_list *) OBJC2_UNAVAILABLE;
+OBJC_EXPORT void class_removeMethods(Class, struct objc_method_list *) OBJC2_UNAVAILABLE;
+
+OBJC_EXPORT Class class_poseAs(Class imposter, Class original) OBJC2_UNAVAILABLE;
+
+OBJC_EXPORT unsigned int method_getSizeOfArguments(Method m) OBJC2_UNAVAILABLE;
+OBJC_EXPORT unsigned method_getArgumentInfo(struct objc_method *m, int arg, const char **type, int *offset) OBJC2_UNAVAILABLE;
+
+OBJC_EXPORT BOOL class_respondsToMethod(Class, SEL)          OBJC2_UNAVAILABLE;
+OBJC_EXPORT IMP class_lookupMethod(Class, SEL)               OBJC2_UNAVAILABLE;
+OBJC_EXPORT Class objc_getOrigClass(const char *name)        OBJC2_UNAVAILABLE;
+#define OBJC_NEXT_METHOD_LIST 1
+OBJC_EXPORT struct objc_method_list *class_nextMethodList(Class, void **) OBJC2_UNAVAILABLE;
+// usage for nextMethodList
+//
+// void *iterator = 0;
+// struct objc_method_list *mlist;
+// while ( mlist = class_nextMethodList( cls, &iterator ) )
+//    ;
+
+OBJC_EXPORT id (*_alloc)(Class, size_t)                      OBJC2_UNAVAILABLE;
+OBJC_EXPORT id (*_copy)(id, size_t)                          OBJC2_UNAVAILABLE;
+OBJC_EXPORT id (*_realloc)(id, size_t)                       OBJC2_UNAVAILABLE;
+OBJC_EXPORT id (*_dealloc)(id)                               OBJC2_UNAVAILABLE;
+OBJC_EXPORT id (*_zoneAlloc)(Class, size_t, void *)          OBJC2_UNAVAILABLE;
+OBJC_EXPORT id (*_zoneRealloc)(id, size_t, void *)           OBJC2_UNAVAILABLE;
+OBJC_EXPORT id (*_zoneCopy)(id, size_t, void *)              OBJC2_UNAVAILABLE;
+OBJC_EXPORT void (*_error)(id, const char *, va_list)        OBJC2_UNAVAILABLE;
+
+#endif
diff --git a/runtime/standard.h b/runtime/standard.h
new file mode 100644 (file)
index 0000000..7d471e2
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+------------------------------------------------------------------------------
+Standard definitions and types, Bob Jenkins
+------------------------------------------------------------------------------
+*/
+#ifndef STANDARD
+# define STANDARD
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <string.h>
+
+typedef  uint64_t  ub8;
+#define UB8MAXVAL 0xffffffffffffffffLL
+#define UB8BITS 64
+typedef    int64_t  sb8;
+#define SB8MAXVAL 0x7fffffffffffffffLL
+typedef  uint32_t  ub4;   /* unsigned 4-byte quantities */
+#define UB4MAXVAL 0xffffffff
+typedef    int32_t  sb4;
+#define UB4BITS 32
+#define SB4MAXVAL 0x7fffffff
+typedef  uint16_t  ub2;
+#define UB2MAXVAL 0xffff
+#define UB2BITS 16
+typedef    int16_t  sb2;
+#define SB2MAXVAL 0x7fff
+typedef  uint8_t ub1;
+#define UB1MAXVAL 0xff
+#define UB1BITS 8
+typedef    int8_t sb1;   /* signed 1-byte quantities */
+#define SB1MAXVAL 0x7f
+typedef                 int  word;  /* fastest type available */
+
+#define bis(target,mask)  ((target) |=  (mask))
+#define bic(target,mask)  ((target) &= ~(mask))
+#define bit(target,mask)  ((target) &   (mask))
+#ifndef min
+# define min(a,b) (((a)<(b)) ? (a) : (b))
+#endif /* min */
+#ifndef max
+# define max(a,b) (((a)<(b)) ? (b) : (a))
+#endif /* max */
+#ifndef align
+# define align(a) (((ub4)a+(sizeof(void *)-1))&(~(sizeof(void *)-1)))
+#endif /* align */
+#ifndef abs
+# define abs(a)   (((a)>0) ? (a) : -(a))
+#endif
+#define TRUE  1
+#define FALSE 0
+
+#endif /* STANDARD */