class_5.test   [plain text]


FrT;@1|>>0|$15|HeaderDoc::Test%26|$4|CODE$7|COMMENT$7|CPPCODE$15|EXPECTED_RESULT$23|EXPECTED_RESULT_ALLDECS$7|FAILMSG$8|FILENAME$4|LANG$4|NAME$6|RESULT$14|RESULT_ALLDECS$7|SUBLANG$4|TYPE$21561|class OSMetaClass : private OSMetaClassBase
{

private:
    // Can never be allocated must be created at compile time
    static void *operator new(size_t size);

    struct ExpansionData { };
    
/*! @var reserved Reserved for future use.  (Internal use only)  */
    ExpansionData *reserved;

/*! @var superClass Handle to the superclass' meta class. */
    const OSMetaClass *superClassLink;

/*! @var className OSSymbol of the class' name. */
    const OSSymbol *className;

/*! @var classSize How big is a single instancde of this class. */
    unsigned int classSize;

/*! @var instanceCount Roughly number of instances of the object.  Used primarily as a code in use flag. */
    mutable unsigned int instanceCount;

/*! @function OSMetaClass
    @abstract Private the default constructor */
    OSMetaClass();

    // Called by postModLoad
/*! @function logError
    @abstract Given an error code log an error string using printf */
    static void logError(OSReturn result);

public:

/*! @function getMetaClassWithName
    @abstract Lookup a meta-class in the runtime type information system
    @param name Name of the desired class's meta-class. 
    @result pointer to a meta-class object if found, 0 otherwise. */

    static const OSMetaClass *getMetaClassWithName(const OSSymbol *name);

protected:
/*! @function retain
    @abstract Implement abstract but should no dynamic allocation is allowed */
    virtual void retain() const;

/*! @function release
    @abstract Implement abstract but should no dynamic allocation is allowed */
    virtual void release() const;

/*! @function release
    @abstract Implement abstract but should no dynamic allocation is allowed 
    @param when ignored. */
    virtual void release(int when) const;

/*! @function taggedRetain
    @abstract Retain a tagged reference in this object.
*/
    virtual void taggedRetain(const void *tag = 0) const;

/*! @function release
    @abstract Release a tagged reference to this object
*/
    virtual void taggedRelease(const void *tag = 0) const;

/*! @function release
    @abstract Release a tagged reference to this object
*/
    virtual void taggedRelease(const void *tag, const int when) const;

/*! @function getRetainCount
    @abstract Implement abstract but should no dynamic allocation is allowed */
    virtual int getRetainCount() const;

    virtual const OSMetaClass * getMetaClass() const;

/*! @function OSMetaClass
    @abstract Constructor for OSMetaClass objects
    @discussion This constructor is protected and cannot not be used to instantiate an OSMetaClass object, i.e. OSMetaClass is an abstract class.  This function stores the currently constructing OSMetaClass instance away for later processing.  See preModLoad and postModLoad.
    @param inClassName cString of the name of the class this meta-class represents.
    @param inSuperClassName cString of the name of the super class.
    @param inClassSize sizeof the class. */
    OSMetaClass(const char *inClassName,
		const OSMetaClass *inSuperClass,
		unsigned int inClassSize);

/*! @function ~OSMetaClass
    @abstract Destructor for OSMetaClass objects
    @discussion If this function is called it means that the object code that implemented this class is actually in the process of unloading.  The destructor removes all reference's to the subclass from the runtime type information system. */
    virtual ~OSMetaClass();

    // Needs to be overriden as NULL as all OSMetaClass objects are allocated
    // statically at compile time, don't accidently try to free them.
    void operator delete(void *, size_t) { };

public:
    static const OSMetaClass * const metaClass;

/*! @function preModLoad
    @abstract Prepare the runtime type system for the load of a module.
    @discussion Prepare the runtime type information system for the loading of new all meta-classes constructed between now and the next postModLoad.  preModLoad grab's a lock so that the runtime type information system loading can be protected, the lock is released by the postModLoad function.  Any OSMetaClass that is constructed between the bracketing pre and post calls will be assosiated with the module name.
    @param kmodName globally unique cString name of the kernel module being loaded. 
    @result If success full return a handle to be used in later calls 0 otherwise. */
    static void *preModLoad(const char *kmodName);

/*! @function checkModLoad
    @abstract Check if the current load attempt is still OK.
    @param loadHandle Handle returned when a successful call to preModLoad is made.
    @result true if no error's are outstanding and the system is primed to recieve more objects. */
    static bool checkModLoad(void *loadHandle);

/*! @function postModLoad
    @abstract Finish postprocessing on a kernel module's meta-classes.
    @discussion As the order of static object construction is undefined it is necessary to process the constructors in two phases.  These phases rely on global information that is created be the preparation step, preModLoad, which also guarantees single threading between multiple modules.  Phase one was the static construction of each meta-class object one by one withing the context prepared by the preModLoad call.  postModLoad is the second phase of processing.  Inserts links all of the super class inheritance chains up, inserts the meta-classes into the global register of classes and records for each meta-class which kernel module caused it's construction.  Finally it cleans up the temporary storage and releases the single threading lock and returns whatever error has been recorded in during the construction phase or the post processing phase. 
    @param loadHandle Handle returned when a successful call to preModLoad is made.
    @result Error code of the first error encountered. */
    static OSReturn postModLoad(void *loadHandle);

/*! @function modHasInstance
    @abstract Do any of the objects represented by OSMetaClass and associated with the given kernel module name have instances?
    @discussion Check all meta-classes associated with the module name and check their instance counts.  This function is used to check to see if a module can be unloaded.  Obviously if an instance is still outstanding it isn't safe to unload the code that relies on that object.
    @param kmodName cString of the kernel module name.
    @result true if there are any current instances of any class in the module.
*/
    static bool modHasInstance(const char *kmodName);

/*! @function reportModInstances
    @abstract Log any object that has instances in a module.
    @discussion When a developer ask for a module to be unloaded but the unload fails due to outstanding instances.  This function will report which classes still have instances.  It is intended mostly for developers to find problems with unloading classes and will be called automatically by 'verbose' unloads.
    @param kmodName cString of the kernel module name. */
    static void reportModInstances(const char *kmodName);

/*! @function considerUnloads
    @abstract Schedule module unloading.
    @discussion Schedule unused modules to be unloaded; called when IOKit matching goes idle. */

    static void considerUnloads();

/*! @function allocClassWithName
    @abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
    @param name Name of the desired class. 
    @result pointer to an new object, 0 if not found or so memory. */
    static OSObject *allocClassWithName(const OSSymbol *name);

/*! @function allocClassWithName
    @abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
    @param name Name of the desired class. 
    @result pointer to an new object, 0 if not found or so memory. */
    static OSObject *allocClassWithName(const OSString *name);

/*! @function allocClassWithName
    @abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
    @param name Name of the desired class. 
    @result pointer to an new object, 0 if not found or so memory. */
    static OSObject *allocClassWithName(const char *name);

/*! @function checkMetaCastWithName
    @abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
    @param name Name of the desired class or super class. 
    @param in object to be introspected. 
    @result in parameter if cast valid, 0 otherwise. */
    static OSMetaClassBase *
	checkMetaCastWithName(const OSSymbol *name, const OSMetaClassBase *in);

/*! @function checkMetaCastWithName
    @abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
    @param name Name of the desired class or super class.
    @param in object to be introspected.
    @result in parameter if cast valid, 0 otherwise. */
    static OSMetaClassBase *
	checkMetaCastWithName(const OSString *name, const OSMetaClassBase *in);

/*! @function checkMetaCastWithName
    @abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
    @param name Name of the desired class or super class.
    @param in object to be introspected.
    @result in parameter if cast valid, 0 otherwise. */
    static OSMetaClassBase *
	checkMetaCastWithName(const char *name, const OSMetaClassBase *in);


/*! @function instanceConstructed
    @abstract Counts the instances of the class behind this metaclass.
    @discussion Every non-abstract class that inherits from OSObject has a default constructor that calls it's own meta-class' instanceConstructed function.  This constructor is defined by the OSDefineMetaClassAndStructors macro (qv) that all OSObject subclasses must use.  Also if the instance count goes from 0 to 1, ie the first instance, then increment the instance count of the super class */
    void instanceConstructed() const;

/*! @function instanceDestructed
    @abstract Removes one instance of the class behind this metaclass.
    @discussion OSObject's free function calls this method just before it does a 'delete this' on itself.  If the instance count transitions from 1 to 0, i.e. the last object, then one instance of the superclasses is also removed. */
    void instanceDestructed() const;


/*! @function checkMetaCast
    @abstract Ask a OSMetaClass instance if the given object is either an instance of it or an instance of a subclass of it.
    @param check Pointer of object to introspect.
    @result check parameter if cast valid, 0 otherwise. */
    OSMetaClassBase *checkMetaCast(const OSMetaClassBase *check) const;


/*! @function getInstanceCount
    @abstract How many instances of the class have been created.
    @result Count of the number of instances. */
    unsigned int getInstanceCount() const;


/*! @function getSuperClass
    @abstract 'Get'ter for the super class.
    @result Pointer to superclass, chain ends with 0 for OSObject. */
    const OSMetaClass *getSuperClass() const;
	
/*! @function getKmodName
    @abstract 'Get'ter for the name of the kmod.
    @result OSSymbol representing the kmod name. */
	const OSSymbol *getKmodName() const;

/*! @function getClassName
    @abstract 'Get'ter for class name.
    @result cString of the class name. */
    const char *getClassName() const;

/*! @function getClassSize
    @abstract 'Get'ter for sizeof(class).
    @result sizeof of class that this OSMetaClass instance represents. */
    unsigned int getClassSize() const;

/*! @function alloc
    @abstract Allocate an instance of the class that this OSMetaClass instance represents.
    @discussion This alloc function is analogous to the old ObjC class alloc method.  Typically not used by clients as the static function allocClassWithName is more generally useful.  Infact that function is implemented in terms of this  virtual function.  All subclass's of OSMetaClass must implement this function but that is what the OSDefineMetaClassAndStructor's families of macros does for the developer automatically. 
    @result Pointer to a new object with a retain count of 1. */
    virtual OSObject *alloc() const = 0;

/*! @function OSDeclareCommonStructors
    @abstract Basic helper macro for the OSDeclare for Default and Abstract macros, qv.  DO NOT USE.
    @param className Name of class. NO QUOTES. */
#define OSDeclareCommonStructors(className)				\
    private:								\
	static const OSMetaClass * const superClass;			\
    public:								\
	static const OSMetaClass * const metaClass;			\
        static class MetaClass : public OSMetaClass {			\
        public:								\
            MetaClass();						\
            virtual OSObject *alloc() const;				\
        } gMetaClass;							\
        friend class className ::MetaClass;				\
        virtual const OSMetaClass * getMetaClass() const;		\
    protected:								\
	className (const OSMetaClass *);				\
	virtual ~ className ()


/*! @function OSDeclareDefaultStructors
    @abstract One of the macro's used in the class declaration of all subclasses of OSObject, declares runtime type information data and interfaces. 
    @discussion Macro used in the class declaration all subclasses of OSObject, declares runtime type information data and interfaces.  By convention it should be 'called' immediately after the opening brace in a class declaration.  It leaves the current privacy state as 'protected:'.
    @param className Name of class. NO QUOTES. */
#define OSDeclareDefaultStructors(className)				\
	OSDeclareCommonStructors(className);				\
    public:								\
	className ();							\
    protected:


/*! @function OSDeclareAbstractStructors
    @abstract One of the macro's used in the class declaration of all subclasses of OSObject, declares runtime type information data and interfaces. 
    @discussion This macro is used when the class being declared has one or more '= 0' pure virtual methods and thus it is illegal to create an instance of this class.  It leaves the current privacy state as 'protected:'.
    @param className Name of class. NO QUOTES. */
#define OSDeclareAbstractStructors(className)				\
	OSDeclareCommonStructors(className);				\
    private:								\
	className (); /* Make primary constructor private in abstract */ \
    protected:

/*! @function OSDefineMetaClassWithInit
    @abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
    @param className Name of class. NO QUOTES and NO MACROS.
    @param superClassName Name of super class. NO QUOTES and NO MACROS.
    @param init Name of a function to call after the OSMetaClass is constructed. */
#define OSDefineMetaClassWithInit(className, superClassName, init)	\
    /* Class global data */						\
    className ::MetaClass className ::gMetaClass;			\
    const OSMetaClass * const className ::metaClass = 			\
        & className ::gMetaClass;					\
    const OSMetaClass * const className ::superClass = 			\
        & superClassName ::gMetaClass;					\
    /* Class member functions */					\
    className :: className(const OSMetaClass *meta)			\
	    : superClassName (meta) { }					\
    className ::~ className() { }					\
    const OSMetaClass * className ::getMetaClass() const		\
        { return &gMetaClass; }						\
    /* The ::MetaClass constructor */					\
    className ::MetaClass::MetaClass()					\
        : OSMetaClass(#className, className::superClass, sizeof(className)) \
        { init; }

/*! @function OSDefineAbstractStructors
    @abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
    @param className Name of class. NO QUOTES and NO MACROS.
    @param superClassName Name of super class. NO QUOTES and NO MACROS. */
#define OSDefineAbstractStructors(className, superClassName)		\
    OSObject * className ::MetaClass::alloc() const { return 0; }

/*! @function OSDefineDefaultStructors
    @abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
    @param className Name of class. NO QUOTES and NO MACROS.
    @param superClassName Name of super class. NO QUOTES and NO MACROS. */
#define OSDefineDefaultStructors(className, superClassName)		\
    OSObject * className ::MetaClass::alloc() const			\
	{ return new className; }					\
    className :: className () : superClassName (&gMetaClass)		\
	{ gMetaClass.instanceConstructed(); }


/*! @function OSDefineMetaClassAndAbstractStructorsWithInit
    @abstract Primary definition macro for all abstract classes that a subclasses of OSObject.
    @discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that is an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.  Once the OSMetaClass has been constructed, at load time, call the init routine.  NB you can not rely on the order of execution of the init routines.
    @param className Name of class. NO QUOTES and NO MACROS.
    @param superClassName Name of super class. NO QUOTES and NO MACROS.
    @param init Name of a function to call after the OSMetaClass is constructed. */
#define OSDefineMetaClassAndAbstractStructorsWithInit(className, superClassName, init) \
    OSDefineMetaClassWithInit(className, superClassName, init)		\
    OSDefineAbstractStructors(className, superClassName)

/*! @function OSDefineMetaClassAndStructorsWithInit
    @abstract See OSDefineMetaClassAndStructors
    @discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that isn't an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.  Once the OSMetaClass has been constructed, at load time, call the init routine.  NB you can not rely on the order of execution of the init routines.
    @param className Name of class. NO QUOTES and NO MACROS.
    @param superClassName Name of super class. NO QUOTES and NO MACROS.
    @param init Name of a function to call after the OSMetaClass is constructed. */
#define OSDefineMetaClassAndStructorsWithInit(className, superClassName, init) \
    OSDefineMetaClassWithInit(className, superClassName, init)		\
    OSDefineDefaultStructors(className, superClassName)

/* Helpers */
/*! @function OSDefineMetaClass
    @abstract Define an OSMetaClass instance, used for backward compatiblility only.
    @param className Name of class. NO QUOTES and NO MACROS.
    @param superClassName Name of super class. NO QUOTES and NO MACROS. */
#define OSDefineMetaClass(className, superClassName)			\
    OSDefineMetaClassWithInit(className, superClassName, )

/*! @function OSDefineMetaClassAndStructors
    @abstract Define an OSMetaClass subclass and the runtime system routines.
    @discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that isn't an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.
    @param className Name of class. NO QUOTES and NO MACROS.
    @param superClassName Name of super class. NO QUOTES and NO MACROS. */
#define OSDefineMetaClassAndStructors(className, superClassName)	\
    OSDefineMetaClassAndStructorsWithInit(className, superClassName, )

/*! @function OSDefineMetaClassAndAbstractStructors
    @abstract Define an OSMetaClass subclass and the runtime system routines.
    @discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that is an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.
    @param className Name of class. NO QUOTES and NO MACROS.
    @param superClassName Name of super class. NO QUOTES and NO MACROS. */
#define OSDefineMetaClassAndAbstractStructors(className, superClassName) \
    OSDefineMetaClassAndAbstractStructorsWithInit (className, superClassName, )

    // Dynamic vtable patchup support routines and types
    void reservedCalled(int ind) const;

#define OSMetaClassDeclareReservedUnused(classname, index)		\
    private:								\
    APPLE_KEXT_PAD_METHOD void _RESERVED ## classname ## index ()

#define OSMetaClassDeclareReservedUsed(classname, index)

#define OSMetaClassDefineReservedUnused(classname, index)		\
void classname ::_RESERVED ## classname ## index () 			\
    { APPLE_KEXT_PAD_IMPL(index); }

#define OSMetaClassDefineReservedUsed(classname, index)

    // IOKit debug internal routines.
    static void printInstanceCounts();
    static void serializeClassDictionary(OSDictionary *dict);

private:
    // Obsolete APIs
    static OSDictionary *getClassDictionary();
    virtual bool serialize(OSSerialize *s) const;

    // Virtual Padding functions for MetaClass's
    OSMetaClassDeclareReservedUnused(OSMetaClass, 0);
    OSMetaClassDeclareReservedUnused(OSMetaClass, 1);
    OSMetaClassDeclareReservedUnused(OSMetaClass, 2);
    OSMetaClassDeclareReservedUnused(OSMetaClass, 3);
    OSMetaClassDeclareReservedUnused(OSMetaClass, 4);
    OSMetaClassDeclareReservedUnused(OSMetaClass, 5);
    OSMetaClassDeclareReservedUnused(OSMetaClass, 6);
    OSMetaClassDeclareReservedUnused(OSMetaClass, 7);
};
$175|/*!
    @class OSMetaClass : OSMetaClassBase
    @abstract An instance of a OSMetaClass represents one class then the kernel's runtime type information system is aware of.
*/
$0|$3739014|-=: TOP LEVEL COMMENT PARSE VALUES :=-
inHeader: 0
inClass: 1
inInterface: 0
inCPPHeader: 0
inOCCHeader: 0
inPerlScript: 0
inShellScript: 0
inPHPScript: 0
inJavaSource: 0
inFunctionGroup: 0
inGroup: 0
inFunction: 0
inPDefine: 0
inTypedef: 0
inUnion: 0
inStruct: 0
inConstant: 0
inVar: 0
inEnum: 0
inMethod: 0
inAvailabilityMacro: 0
inUnknown: 0
classType: unknown
inputCounter: 0
blockOffset: 0
fullpath: /test_suite_bogus_path/class_5.test
-=: BLOCKPARSE PARSER STATE KEYS :=-
$parserState->{FULLPATH} => /test_suite_bogus_path/class_5.test
$parserState->{ISFORWARDDECLARATION} => 0
$parserState->{NEXTTOKENNOCPP} => 0
$parserState->{availability} => 
$parserState->{backslashcount} => 0
$parserState->{basetype} => 
$parserState->{bracePending} => 0
$parserState->{callbackIsTypedef} => 0
$parserState->{callbackName} => 
$parserState->{callbackNamePending} => -1
$parserState->{categoryClass} => 
$parserState->{classNameFound} => 1
$parserState->{classtype} => class
$parserState->{forceClassDone} => 1
$parserState->{forceClassName} => OSMetaClass
$parserState->{forceClassSuper} =>  private OSMetaClassBase 
$parserState->{freezeStack} => ARRAY(OBJID)
$parserState->{freezereturn} => 1
$parserState->{frozensodname} => 
$parserState->{functionReturnsCallback} => 0
$parserState->{hollow} => HeaderDoc::ParseTree=HASH(OBJID)
$parserState->{inBrackets} => 0
$parserState->{inChar} => 0
$parserState->{inClass} => 1
$parserState->{inComment} => 0
$parserState->{inInlineComment} => 0
$parserState->{inMacro} => 0
$parserState->{inMacroLine} => 0
$parserState->{inOperator} => 0
$parserState->{inPrivateParamTypes} => 0
$parserState->{inString} => 0
$parserState->{inTemplate} => 0
$parserState->{initbsCount} => 0
$parserState->{inputCounter} => 268
$parserState->{kr_c_function} => 0
$parserState->{kr_c_name} => 
$parserState->{lang} => C
$parserState->{lastTreeNode} => HeaderDoc::ParseTree=HASH(OBJID)
$parserState->{lastsymbol} => ;
$parserState->{macroNoTrunc} => 1
$parserState->{name} => 
$parserState->{namePending} => 0
$parserState->{noInsert} => 0
$parserState->{occmethod} => 0
$parserState->{occmethodname} => 
$parserState->{occparmlabelfound} => 4
$parserState->{onlyComments} => 0
$parserState->{parsedParamList} => ARRAY(OBJID)
$parserState->{parsedParamParse} => 1
$parserState->{posstypes} => 
$parserState->{posstypesPending} => 0
$parserState->{pplStack} => ARRAY(OBJID)
$parserState->{preEqualsSymbol} => 
$parserState->{preTemplateSymbol} => 
$parserState->{preclasssodtype} => class
$parserState->{prekeywordsodname} => 
$parserState->{prekeywordsodtype} => 
$parserState->{returntype} => class OSMetaClass : private OSMetaClassBase  
$parserState->{seenBraces} => 0
$parserState->{seenMacroPart} => 0
$parserState->{seenTilde} => 0
$parserState->{simpleTDcontents} => 
$parserState->{simpleTypedef} => 0
$parserState->{sodclass} => class
$parserState->{sodname} => OSMetaClassBase
$parserState->{sodtype} =>  private
$parserState->{sodtypeclasstoken} => class
$parserState->{stackFrozen} => 0
$parserState->{startOfDec} => 1
$parserState->{storeDec} => 
$parserState->{temponlyComments} => 0
$parserState->{treePopTwo} => 0
$parserState->{typestring} => OSMetaClass
$parserState->{value} => 
$parserState->{valuepending} => 0
-=: BLOCKPARSE RETURN VALUES :=-
newcount: 268
typelist: class
namelist: OSMetaClass
posstypes:   OSMetaClassBase 
value: 
returntype: private
pridec: 
simpleTDcontents: 
bpavail: 
blockOffset: 124
conformsToList: 
functionContents: 
extendsClass: 
implementsClass: 
-=: LIST OF PARSED PARAMETERS :=-
-=: DUMP OF PARSE TREE :=-
+---class
+--- 
+---OSMetaClass
+--- 
+---:
+--- 
+---private
+--- 
+---OSMetaClassBase
+---[ NEWLINE ]
+---{
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---private
|   +---:
|   +---[ NEWLINE ]
|   +---    
|   +---//
|   |   +--- 
|   |   +---Can never be allocated must be created at compile time
|   |   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---*
|   +---operator
|   +--- 
|   +---new
|   +---(
|   |   +---size_t
|   |   +--- 
|   |   +---size
|   |   +---)
|   +---;
|   +--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---    
|   +-*-struct (HAS STATE)
|   +--- 
|   +---ExpansionData
|   +--- 
|   +---{
|   |   +--- 
|   |   +---}
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @var reserved Reserved for future use.  (Internal use only)  
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-ExpansionData (HAS STATE)
|   +--- 
|   +---*
|   +---reserved
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @var superClass Handle to the superclass' meta class. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-const (HAS STATE)
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---superClassLink
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @var className OSSymbol of the class' name. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-const (HAS STATE)
|   +--- 
|   +---OSSymbol
|   +--- 
|   +---*
|   +---className
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @var classSize How big is a single instancde of this class. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-unsigned (HAS STATE)
|   +--- 
|   +---int
|   +--- 
|   +---classSize
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @var instanceCount Roughly number of instances of the object.  Used primarily as a code in use flag. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-mutable (HAS STATE)
|   +--- 
|   +---unsigned
|   +--- 
|   +---int
|   +--- 
|   +---instanceCount
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function OSMetaClass
|   |   +---
@abstract Private the default constructor 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-OSMetaClass (HAS STATE)
|   +---(
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---    
|   +---//
|   |   +--- 
|   |   +---Called by postModLoad
|   |   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function logError
|   |   +---
@abstract Given an error code log an error string using printf 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---logError
|   +---(
|   |   +---OSReturn
|   |   +--- 
|   |   +---result
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---public
|   +---:
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function getMetaClassWithName
|   |   +---
@abstract Lookup a meta-class in the runtime type information system
|   |   +---
@param name Name of the desired class's meta-class. 
|   |   +---
@result pointer to a meta-class object if found, 0 otherwise. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---getMetaClassWithName
|   +---(
|   |   +---const
|   |   +--- 
|   |   +---OSSymbol
|   |   +--- 
|   |   +---*
|   |   +---name
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---protected
|   +---:
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function retain
|   |   +---
@abstract Implement abstract but should no dynamic allocation is allowed 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---retain
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function release
|   |   +---
@abstract Implement abstract but should no dynamic allocation is allowed 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---release
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function release
|   |   +---
@abstract Implement abstract but should no dynamic allocation is allowed 
|   |   +---
@param when ignored. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---release
|   +---(
|   |   +---int
|   |   +--- 
|   |   +---when
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function taggedRetain
|   |   +---
@abstract Retain a tagged reference in this object.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---taggedRetain
|   +---(
|   |   +---const
|   |   +--- 
|   |   +---void
|   |   +--- 
|   |   +---*
|   |   +---tag
|   |   +--- 
|   |   +---=
|   |   +--- 
|   |   +---0
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function release
|   |   +---
@abstract Release a tagged reference to this object
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---taggedRelease
|   +---(
|   |   +---const
|   |   +--- 
|   |   +---void
|   |   +--- 
|   |   +---*
|   |   +---tag
|   |   +--- 
|   |   +---=
|   |   +--- 
|   |   +---0
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function release
|   |   +---
@abstract Release a tagged reference to this object
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---taggedRelease
|   +---(
|   |   +---const
|   |   +--- 
|   |   +---void
|   |   +--- 
|   |   +---*
|   |   +---tag
|   |   +---,
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---int
|   |   +--- 
|   |   +---when
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function getRetainCount
|   |   +---
@abstract Implement abstract but should no dynamic allocation is allowed 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---int
|   +--- 
|   +---getRetainCount
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---    
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---getMetaClass
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function OSMetaClass
|   |   +---
@abstract Constructor for OSMetaClass objects
|   |   +---
@discussion This constructor is protected and cannot not be used to instantiate an OSMetaClass object, i.e. OSMetaClass is an abstract class.  This function stores the currently constructing OSMetaClass instance away for later processing.  See preModLoad and postModLoad.
|   |   +---
@param inClassName cString of the name of the class this meta-class represents.
|   |   +---
@param inSuperClassName cString of the name of the super class.
|   |   +---
@param inClassSize sizeof the class. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-OSMetaClass (HAS STATE)
|   +---(
|   |   +---const
|   |   +--- 
|   |   +---char
|   |   +--- 
|   |   +---*
|   |   +---inClassName
|   |   +---,
|   |   +---[ NEWLINE ]
|   |   +---                
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +---inSuperClass
|   |   +---,
|   |   +---[ NEWLINE ]
|   |   +---                
|   |   +---unsigned
|   |   +--- 
|   |   +---int
|   |   +--- 
|   |   +---inClassSize
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function ~OSMetaClass
|   |   +---
@abstract Destructor for OSMetaClass objects
|   |   +---
@discussion If this function is called it means that the object code that implemented this class is actually in the process of unloading.  The destructor removes all reference's to the subclass from the runtime type information system. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---~
|   +---OSMetaClass
|   +---(
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---    
|   +---//
|   |   +--- 
|   |   +---Needs to be overriden as NULL as all OSMetaClass objects are allocated
|   |   +---[ NEWLINE ]
|   +---    
|   +---//
|   |   +--- 
|   |   +---statically at compile time, don't accidently try to free them.
|   |   +---[ NEWLINE ]
|   +---    
|   +-*-void (HAS STATE)
|   +--- 
|   +---operator
|   +--- 
|   +---delete
|   +---(
|   |   +---void
|   |   +--- 
|   |   +---*
|   |   +---,
|   |   +--- 
|   |   +---size_t
|   |   +---)
|   +--- 
|   +---;
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---public
|   +---:
|   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---metaClass
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function preModLoad
|   |   +---
@abstract Prepare the runtime type system for the load of a module.
|   |   +---
@discussion Prepare the runtime type information system for the loading of new all meta-classes constructed between now and the next postModLoad.  preModLoad grab's a lock so that the runtime type information system loading can be protected, the lock is released by the postModLoad function.  Any OSMetaClass that is constructed between the bracketing pre and post calls will be assosiated with the module name.
|   |   +---
@param kmodName globally unique cString name of the kernel module being loaded. 
|   |   +---
@result If success full return a handle to be used in later calls 0 otherwise. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---*
|   +---preModLoad
|   +---(
|   |   +---const
|   |   +--- 
|   |   +---char
|   |   +--- 
|   |   +---*
|   |   +---kmodName
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function checkModLoad
|   |   +---
@abstract Check if the current load attempt is still OK.
|   |   +---
@param loadHandle Handle returned when a successful call to preModLoad is made.
|   |   +---
@result true if no error's are outstanding and the system is primed to recieve more objects. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---bool
|   +--- 
|   +---checkModLoad
|   +---(
|   |   +---void
|   |   +--- 
|   |   +---*
|   |   +---loadHandle
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function postModLoad
|   |   +---
@abstract Finish postprocessing on a kernel module's meta-classes.
|   |   +---
@discussion As the order of static object construction is undefined it is necessary to process the constructors in two phases.  These phases rely on global information that is created be the preparation step, preModLoad, which also guarantees single threading between multiple modules.  Phase one was the static construction of each meta-class object one by one withing the context prepared by the preModLoad call.  postModLoad is the second phase of processing.  Inserts links all of the super class inheritance chains up, inserts the meta-classes into the global register of classes and records for each meta-class which kernel module caused it's construction.  Finally it cleans up the temporary storage and releases the single threading lock and returns whatever error has been recorded in during the construction phase or the post processing phase. 
|   |   +---
@param loadHandle Handle returned when a successful call to preModLoad is made.
|   |   +---
@result Error code of the first error encountered. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---OSReturn
|   +--- 
|   +---postModLoad
|   +---(
|   |   +---void
|   |   +--- 
|   |   +---*
|   |   +---loadHandle
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function modHasInstance
|   |   +---
@abstract Do any of the objects represented by OSMetaClass and associated with the given kernel module name have instances?
|   |   +---
@discussion Check all meta-classes associated with the module name and check their instance counts.  This function is used to check to see if a module can be unloaded.  Obviously if an instance is still outstanding it isn't safe to unload the code that relies on that object.
|   |   +---
@param kmodName cString of the kernel module name.
|   |   +---
@result true if there are any current instances of any class in the module.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---bool
|   +--- 
|   +---modHasInstance
|   +---(
|   |   +---const
|   |   +--- 
|   |   +---char
|   |   +--- 
|   |   +---*
|   |   +---kmodName
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function reportModInstances
|   |   +---
@abstract Log any object that has instances in a module.
|   |   +---
@discussion When a developer ask for a module to be unloaded but the unload fails due to outstanding instances.  This function will report which classes still have instances.  It is intended mostly for developers to find problems with unloading classes and will be called automatically by 'verbose' unloads.
|   |   +---
@param kmodName cString of the kernel module name. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---reportModInstances
|   +---(
|   |   +---const
|   |   +--- 
|   |   +---char
|   |   +--- 
|   |   +---*
|   |   +---kmodName
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function considerUnloads
|   |   +---
@abstract Schedule module unloading.
|   |   +---
@discussion Schedule unused modules to be unloaded; called when IOKit matching goes idle. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---considerUnloads
|   +---(
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function allocClassWithName
|   |   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   |   +---
@param name Name of the desired class. 
|   |   +---
@result pointer to an new object, 0 if not found or so memory. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---allocClassWithName
|   +---(
|   |   +---const
|   |   +--- 
|   |   +---OSSymbol
|   |   +--- 
|   |   +---*
|   |   +---name
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function allocClassWithName
|   |   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   |   +---
@param name Name of the desired class. 
|   |   +---
@result pointer to an new object, 0 if not found or so memory. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---allocClassWithName
|   +---(
|   |   +---const
|   |   +--- 
|   |   +---OSString
|   |   +--- 
|   |   +---*
|   |   +---name
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function allocClassWithName
|   |   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   |   +---
@param name Name of the desired class. 
|   |   +---
@result pointer to an new object, 0 if not found or so memory. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---allocClassWithName
|   +---(
|   |   +---const
|   |   +--- 
|   |   +---char
|   |   +--- 
|   |   +---*
|   |   +---name
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function checkMetaCastWithName
|   |   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   |   +---
@param name Name of the desired class or super class. 
|   |   +---
@param in object to be introspected. 
|   |   +---
@result in parameter if cast valid, 0 otherwise. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---[ NEWLINE ]
|   +---        
|   +---checkMetaCastWithName
|   +---(
|   |   +---const
|   |   +--- 
|   |   +---OSSymbol
|   |   +--- 
|   |   +---*
|   |   +---name
|   |   +---,
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClassBase
|   |   +--- 
|   |   +---*
|   |   +---in
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function checkMetaCastWithName
|   |   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   |   +---
@param name Name of the desired class or super class.
|   |   +---
@param in object to be introspected.
|   |   +---
@result in parameter if cast valid, 0 otherwise. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---[ NEWLINE ]
|   +---        
|   +---checkMetaCastWithName
|   +---(
|   |   +---const
|   |   +--- 
|   |   +---OSString
|   |   +--- 
|   |   +---*
|   |   +---name
|   |   +---,
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClassBase
|   |   +--- 
|   |   +---*
|   |   +---in
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function checkMetaCastWithName
|   |   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   |   +---
@param name Name of the desired class or super class.
|   |   +---
@param in object to be introspected.
|   |   +---
@result in parameter if cast valid, 0 otherwise. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---[ NEWLINE ]
|   +---        
|   +---checkMetaCastWithName
|   +---(
|   |   +---const
|   |   +--- 
|   |   +---char
|   |   +--- 
|   |   +---*
|   |   +---name
|   |   +---,
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClassBase
|   |   +--- 
|   |   +---*
|   |   +---in
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function instanceConstructed
|   |   +---
@abstract Counts the instances of the class behind this metaclass.
|   |   +---
@discussion Every non-abstract class that inherits from OSObject has a default constructor that calls it's own meta-class' instanceConstructed function.  This constructor is defined by the OSDefineMetaClassAndStructors macro (qv) that all OSObject subclasses must use.  Also if the instance count goes from 0 to 1, ie the first instance, then increment the instance count of the super class 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-void (HAS STATE)
|   +--- 
|   +---instanceConstructed
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function instanceDestructed
|   |   +---
@abstract Removes one instance of the class behind this metaclass.
|   |   +---
@discussion OSObject's free function calls this method just before it does a 'delete this' on itself.  If the instance count transitions from 1 to 0, i.e. the last object, then one instance of the superclasses is also removed. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-void (HAS STATE)
|   +--- 
|   +---instanceDestructed
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function checkMetaCast
|   |   +---
@abstract Ask a OSMetaClass instance if the given object is either an instance of it or an instance of a subclass of it.
|   |   +---
@param check Pointer of object to introspect.
|   |   +---
@result check parameter if cast valid, 0 otherwise. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-OSMetaClassBase (HAS STATE)
|   +--- 
|   +---*
|   +---checkMetaCast
|   +---(
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClassBase
|   |   +--- 
|   |   +---*
|   |   +---check
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function getInstanceCount
|   |   +---
@abstract How many instances of the class have been created.
|   |   +---
@result Count of the number of instances. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-unsigned (HAS STATE)
|   +--- 
|   +---int
|   +--- 
|   +---getInstanceCount
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function getSuperClass
|   |   +---
@abstract 'Get'ter for the super class.
|   |   +---
@result Pointer to superclass, chain ends with 0 for OSObject. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-const (HAS STATE)
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---getSuperClass
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function getKmodName
|   |   +---
@abstract 'Get'ter for the name of the kmod.
|   |   +---
@result OSSymbol representing the kmod name. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---        
|   +-*-const (HAS STATE)
|   +--- 
|   +---OSSymbol
|   +--- 
|   +---*
|   +---getKmodName
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function getClassName
|   |   +---
@abstract 'Get'ter for class name.
|   |   +---
@result cString of the class name. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-const (HAS STATE)
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---getClassName
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function getClassSize
|   |   +---
@abstract 'Get'ter for sizeof(class).
|   |   +---
@result sizeof of class that this OSMetaClass instance represents. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-unsigned (HAS STATE)
|   +--- 
|   +---int
|   +--- 
|   +---getClassSize
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function alloc
|   |   +---
@abstract Allocate an instance of the class that this OSMetaClass instance represents.
|   |   +---
@discussion This alloc function is analogous to the old ObjC class alloc method.  Typically not used by clients as the static function allocClassWithName is more generally useful.  Infact that function is implemented in terms of this  virtual function.  All subclass's of OSMetaClass must implement this function but that is what the OSDefineMetaClassAndStructor's families of macros does for the developer automatically. 
|   |   +---
@result Pointer to a new object with a retain count of 1. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---alloc
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function OSDeclareCommonStructors
|   |   +---
@abstract Basic helper macro for the OSDeclare for Default and Abstract macros, qv.  DO NOT USE.
|   |   +---
@param className Name of class. NO QUOTES. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +-*-#define (HAS STATE)
|   |   +--- 
|   |   +---OSDeclareCommonStructors
|   |   +---(
|   |   +---className
|   |   +---)
|   |   +---                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---private
|   |   +---:
|   |   +---                                                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---static
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---superClass
|   |   +---;
|   |   +---                        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---public
|   |   +---:
|   |   +---                                                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---static
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---metaClass
|   |   +---;
|   |   +---                        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---static
|   |   +--- 
|   |   +---class
|   |   +--- 
|   |   +---MetaClass
|   |   +--- 
|   |   +---:
|   |   +--- 
|   |   +---public
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---{
|   |   +---                        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---public
|   |   +---:
|   |   +---                                                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---            
|   |   +---MetaClass
|   |   +---(
|   |   +---)
|   |   +---;
|   |   +---                                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---            
|   |   +---virtual
|   |   +--- 
|   |   +---OSObject
|   |   +--- 
|   |   +---*
|   |   +---alloc
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +---;
|   |   +---                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---}
|   |   +--- 
|   |   +---gMetaClass
|   |   +---;
|   |   +---                                                        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---friend
|   |   +--- 
|   |   +---class
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +---;
|   |   +---                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---virtual
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---getMetaClass
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +---;
|   |   +---                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---protected
|   |   +---:
|   |   +---                                                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---className
|   |   +--- 
|   |   +---(
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +---)
|   |   +---;
|   |   +---                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---virtual
|   |   +--- 
|   |   +---~
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---(
|   |   +---)
|   |   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function OSDeclareDefaultStructors
|   |   +---
@abstract One of the macro's used in the class declaration of all subclasses of OSObject, declares runtime type information data and interfaces. 
|   |   +---
@discussion Macro used in the class declaration all subclasses of OSObject, declares runtime type information data and interfaces.  By convention it should be 'called' immediately after the opening brace in a class declaration.  It leaves the current privacy state as 'protected:'.
|   |   +---
@param className Name of class. NO QUOTES. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +-*-#define (HAS STATE)
|   |   +--- 
|   |   +---OSDeclareDefaultStructors
|   |   +---(
|   |   +---className
|   |   +---)
|   |   +---                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---         
|   |   +---private
|   |   +---:
|   |   +---                                                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---static
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---superClass
|   |   +---;
|   |   +---                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---public
|   |   +---:
|   |   +---                                                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---static
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---metaClass
|   |   +---;
|   |   +---                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---static
|   |   +--- 
|   |   +---class
|   |   +--- 
|   |   +---MetaClass
|   |   +--- 
|   |   +---:
|   |   +--- 
|   |   +---public
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---{
|   |   +---                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---public
|   |   +---:
|   |   +---                                                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---            
|   |   +---MetaClass
|   |   +---(
|   |   +---)
|   |   +---;
|   |   +---                                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---            
|   |   +---virtual
|   |   +--- 
|   |   +---OSObject
|   |   +--- 
|   |   +---*
|   |   +---alloc
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +---;
|   |   +---                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---}
|   |   +--- 
|   |   +---gMetaClass
|   |   +---;
|   |   +---                                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---friend
|   |   +--- 
|   |   +---class
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +---;
|   |   +---                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---virtual
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---getMetaClass
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +---;
|   |   +---                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---protected
|   |   +---:
|   |   +---                                                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---className
|   |   +--- 
|   |   +---(
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +---)
|   |   +---;
|   |   +---                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---virtual
|   |   +--- 
|   |   +---~
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---(
|   |   +---)
|   |   +---;
|   |   +---                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---public
|   |   +---:
|   |   +---                                                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---className
|   |   +--- 
|   |   +---(
|   |   +---)
|   |   +---;
|   |   +---                                                        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---protected
|   |   +---:
|   |   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function OSDeclareAbstractStructors
|   |   +---
@abstract One of the macro's used in the class declaration of all subclasses of OSObject, declares runtime type information data and interfaces. 
|   |   +---
@discussion This macro is used when the class being declared has one or more '= 0' pure virtual methods and thus it is illegal to create an instance of this class.  It leaves the current privacy state as 'protected:'.
|   |   +---
@param className Name of class. NO QUOTES. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +-*-#define (HAS STATE)
|   |   +--- 
|   |   +---OSDeclareAbstractStructors
|   |   +---(
|   |   +---className
|   |   +---)
|   |   +---                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---         
|   |   +---private
|   |   +---:
|   |   +---                                                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---static
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---superClass
|   |   +---;
|   |   +---                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---public
|   |   +---:
|   |   +---                                                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---static
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---metaClass
|   |   +---;
|   |   +---                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---static
|   |   +--- 
|   |   +---class
|   |   +--- 
|   |   +---MetaClass
|   |   +--- 
|   |   +---:
|   |   +--- 
|   |   +---public
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---{
|   |   +---                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---public
|   |   +---:
|   |   +---                                                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---            
|   |   +---MetaClass
|   |   +---(
|   |   +---)
|   |   +---;
|   |   +---                                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---            
|   |   +---virtual
|   |   +--- 
|   |   +---OSObject
|   |   +--- 
|   |   +---*
|   |   +---alloc
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +---;
|   |   +---                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---}
|   |   +--- 
|   |   +---gMetaClass
|   |   +---;
|   |   +---                                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---friend
|   |   +--- 
|   |   +---class
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +---;
|   |   +---                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---virtual
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---getMetaClass
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +---;
|   |   +---                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---protected
|   |   +---:
|   |   +---                                                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---className
|   |   +--- 
|   |   +---(
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +---)
|   |   +---;
|   |   +---                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---virtual
|   |   +--- 
|   |   +---~
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---(
|   |   +---)
|   |   +---;
|   |   +---                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---private
|   |   +---:
|   |   +---                                                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---className
|   |   +--- 
|   |   +---(
|   |   +---)
|   |   +---;
|   |   +--- 
|   |   +---/*
|   |   |   +--- 
|   |   |   +---Make primary constructor private in abstract 
|   |   |   +---*/
|   |   +--- 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---protected
|   |   +---:
|   |   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function OSDefineMetaClassWithInit
|   |   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   |   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   |   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   |   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +-*-#define (HAS STATE)
|   |   +--- 
|   |   +---OSDefineMetaClassWithInit
|   |   +---(
|   |   +---className
|   |   +---,
|   |   +--- 
|   |   +---superClassName
|   |   +---,
|   |   +--- 
|   |   +---init
|   |   +---)
|   |   +---        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---/*
|   |   |   +--- 
|   |   |   +---Class global data 
|   |   |   +---*/
|   |   +---                                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---metaClass
|   |   +--- 
|   |   +---=
|   |   +---                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---&
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                                        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---superClass
|   |   +--- 
|   |   +---=
|   |   +---                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---&
|   |   +--- 
|   |   +---superClassName
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                                        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---/*
|   |   |   +--- 
|   |   |   +---Class member functions 
|   |   |   +---*/
|   |   +---                                        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +--- 
|   |   +---className
|   |   +---(
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +---meta
|   |   +---)
|   |   +---                        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---            
|   |   +---:
|   |   +--- 
|   |   +---superClassName
|   |   +--- 
|   |   +---(
|   |   +---meta
|   |   +---)
|   |   +--- 
|   |   +---{
|   |   +--- 
|   |   +---}
|   |   +---                                        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---~
|   |   +--- 
|   |   +---className
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---{
|   |   +--- 
|   |   +---}
|   |   +---                                        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---getMetaClass
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +---                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +--- 
|   |   +---return
|   |   +--- 
|   |   +---&
|   |   +---gMetaClass
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---                                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---/*
|   |   |   +--- 
|   |   |   +---The ::MetaClass constructor 
|   |   |   +---*/
|   |   +---                                        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +---::
|   |   +---MetaClass
|   |   +---(
|   |   +---)
|   |   +---                                        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---:
|   |   +--- 
|   |   +---OSMetaClass
|   |   +---(
|   |   +---#
|   |   +---className
|   |   +---,
|   |   +--- 
|   |   +---className
|   |   +---::
|   |   +---superClass
|   |   +---,
|   |   +--- 
|   |   +---sizeof
|   |   +---(
|   |   +---className
|   |   +---)
|   |   +---)
|   |   +--- 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +--- 
|   |   +---init
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function OSDefineAbstractStructors
|   |   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   |   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   |   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +-*-#define (HAS STATE)
|   |   +--- 
|   |   +---OSDefineAbstractStructors
|   |   +---(
|   |   +---className
|   |   +---,
|   |   +--- 
|   |   +---superClassName
|   |   +---)
|   |   +---                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---OSObject
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +---::
|   |   +---alloc
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---{
|   |   +--- 
|   |   +---return
|   |   +--- 
|   |   +---0
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function OSDefineDefaultStructors
|   |   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   |   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   |   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +-*-#define (HAS STATE)
|   |   +--- 
|   |   +---OSDefineDefaultStructors
|   |   +---(
|   |   +---className
|   |   +---,
|   |   +--- 
|   |   +---superClassName
|   |   +---)
|   |   +---                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---OSObject
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +---::
|   |   +---alloc
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +---                        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +--- 
|   |   +---return
|   |   +--- 
|   |   +---new
|   |   +--- 
|   |   +---className
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---                                        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---:
|   |   +--- 
|   |   +---superClassName
|   |   +--- 
|   |   +---(
|   |   +---&
|   |   +---gMetaClass
|   |   +---)
|   |   +---                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +--- 
|   |   +---gMetaClass
|   |   +---.
|   |   +---instanceConstructed
|   |   +---(
|   |   +---)
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function OSDefineMetaClassAndAbstractStructorsWithInit
|   |   +---
@abstract Primary definition macro for all abstract classes that a subclasses of OSObject.
|   |   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that is an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.  Once the OSMetaClass has been constructed, at load time, call the init routine.  NB you can not rely on the order of execution of the init routines.
|   |   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   |   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   |   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +-*-#define (HAS STATE)
|   |   +--- 
|   |   +---OSDefineMetaClassAndAbstractStructorsWithInit
|   |   +---(
|   |   +---className
|   |   +---,
|   |   +--- 
|   |   +---superClassName
|   |   +---,
|   |   +--- 
|   |   +---init
|   |   +---)
|   |   +--- 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---     
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---metaClass
|   |   +--- 
|   |   +---=
|   |   +---                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---&
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---superClass
|   |   +--- 
|   |   +---=
|   |   +---                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---&
|   |   +---  
|   |   +---superClassName
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---                                             
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +--- 
|   |   +---className
|   |   +---(
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +---meta
|   |   +---)
|   |   +---                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---            
|   |   +---:
|   |   +---  
|   |   +---superClassName
|   |   +--- 
|   |   +---(
|   |   +---meta
|   |   +---)
|   |   +--- 
|   |   +---{
|   |   +--- 
|   |   +---}
|   |   +---                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---~
|   |   +--- 
|   |   +---className
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---{
|   |   +--- 
|   |   +---}
|   |   +---                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---getMetaClass
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +---                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +--- 
|   |   +---return
|   |   +--- 
|   |   +---&
|   |   +---gMetaClass
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---                                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---                                             
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +---::
|   |   +---MetaClass
|   |   +---(
|   |   +---)
|   |   +---                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---:
|   |   +--- 
|   |   +---OSMetaClass
|   |   +---(
|   |   +---"
|   |   +---className
|   |   +---"
|   |   +---,
|   |   +--- 
|   |   +---className
|   |   +---::
|   |   +---superClass
|   |   +---,
|   |   +--- 
|   |   +---sizeof
|   |   +---(
|   |   +---className
|   |   +---)
|   |   +---)
|   |   +---  
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +---  
|   |   +---init
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---     
|   |   +---OSObject
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +---::
|   |   +---alloc
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---{
|   |   +--- 
|   |   +---return
|   |   +--- 
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function OSDefineMetaClassAndStructorsWithInit
|   |   +---
@abstract See OSDefineMetaClassAndStructors
|   |   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that isn't an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.  Once the OSMetaClass has been constructed, at load time, call the init routine.  NB you can not rely on the order of execution of the init routines.
|   |   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   |   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   |   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +-*-#define (HAS STATE)
|   |   +--- 
|   |   +---OSDefineMetaClassAndStructorsWithInit
|   |   +---(
|   |   +---className
|   |   +---,
|   |   +--- 
|   |   +---superClassName
|   |   +---,
|   |   +--- 
|   |   +---init
|   |   +---)
|   |   +--- 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---     
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---metaClass
|   |   +--- 
|   |   +---=
|   |   +---                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---&
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---superClass
|   |   +--- 
|   |   +---=
|   |   +---                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---&
|   |   +---  
|   |   +---superClassName
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---                                             
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +--- 
|   |   +---className
|   |   +---(
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +---meta
|   |   +---)
|   |   +---                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---            
|   |   +---:
|   |   +---  
|   |   +---superClassName
|   |   +--- 
|   |   +---(
|   |   +---meta
|   |   +---)
|   |   +--- 
|   |   +---{
|   |   +--- 
|   |   +---}
|   |   +---                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---~
|   |   +--- 
|   |   +---className
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---{
|   |   +--- 
|   |   +---}
|   |   +---                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---getMetaClass
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +---                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +--- 
|   |   +---return
|   |   +--- 
|   |   +---&
|   |   +---gMetaClass
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---                                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---                                             
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +---::
|   |   +---MetaClass
|   |   +---(
|   |   +---)
|   |   +---                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---:
|   |   +--- 
|   |   +---OSMetaClass
|   |   +---(
|   |   +---"
|   |   +---className
|   |   +---"
|   |   +---,
|   |   +--- 
|   |   +---className
|   |   +---::
|   |   +---superClass
|   |   +---,
|   |   +--- 
|   |   +---sizeof
|   |   +---(
|   |   +---className
|   |   +---)
|   |   +---)
|   |   +---  
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +---  
|   |   +---init
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---     
|   |   +---OSObject
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +---::
|   |   +---alloc
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +---                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +--- 
|   |   +---return
|   |   +--- 
|   |   +---new
|   |   +--- 
|   |   +---className
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---:
|   |   +---  
|   |   +---superClassName
|   |   +--- 
|   |   +---(
|   |   +---&
|   |   +---gMetaClass
|   |   +---)
|   |   +---                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +--- 
|   |   +---gMetaClass
|   |   +---.
|   |   +---instanceConstructed
|   |   +---(
|   |   +---)
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +--- 
|   |   +---Helpers 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function OSDefineMetaClass
|   |   +---
@abstract Define an OSMetaClass instance, used for backward compatiblility only.
|   |   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   |   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +-*-#define (HAS STATE)
|   |   +--- 
|   |   +---OSDefineMetaClass
|   |   +---(
|   |   +---className
|   |   +---,
|   |   +--- 
|   |   +---superClassName
|   |   +---)
|   |   +---                        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---     
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---metaClass
|   |   +--- 
|   |   +---=
|   |   +---                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---&
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---superClass
|   |   +--- 
|   |   +---=
|   |   +---                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---&
|   |   +---  
|   |   +---superClassName
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---                                             
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +--- 
|   |   +---className
|   |   +---(
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +---meta
|   |   +---)
|   |   +---                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---            
|   |   +---:
|   |   +---  
|   |   +---superClassName
|   |   +--- 
|   |   +---(
|   |   +---meta
|   |   +---)
|   |   +--- 
|   |   +---{
|   |   +--- 
|   |   +---}
|   |   +---                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---~
|   |   +--- 
|   |   +---className
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---{
|   |   +--- 
|   |   +---}
|   |   +---                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---getMetaClass
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +---                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +--- 
|   |   +---return
|   |   +--- 
|   |   +---&
|   |   +---gMetaClass
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---                                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---                                             
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +---::
|   |   +---MetaClass
|   |   +---(
|   |   +---)
|   |   +---                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---:
|   |   +--- 
|   |   +---OSMetaClass
|   |   +---(
|   |   +---"
|   |   +---className
|   |   +---"
|   |   +---,
|   |   +--- 
|   |   +---className
|   |   +---::
|   |   +---superClass
|   |   +---,
|   |   +--- 
|   |   +---sizeof
|   |   +---(
|   |   +---className
|   |   +---)
|   |   +---)
|   |   +---  
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +---  
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function OSDefineMetaClassAndStructors
|   |   +---
@abstract Define an OSMetaClass subclass and the runtime system routines.
|   |   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that isn't an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.
|   |   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   |   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +-*-#define (HAS STATE)
|   |   +--- 
|   |   +---OSDefineMetaClassAndStructors
|   |   +---(
|   |   +---className
|   |   +---,
|   |   +--- 
|   |   +---superClassName
|   |   +---)
|   |   +---        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---     
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---metaClass
|   |   +--- 
|   |   +---=
|   |   +---                           
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---&
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---superClass
|   |   +--- 
|   |   +---=
|   |   +---                           
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---&
|   |   +---   
|   |   +---superClassName
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---                                              
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +--- 
|   |   +---className
|   |   +---(
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +---meta
|   |   +---)
|   |   +---                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---            
|   |   +---:
|   |   +---   
|   |   +---superClassName
|   |   +--- 
|   |   +---(
|   |   +---meta
|   |   +---)
|   |   +--- 
|   |   +---{
|   |   +--- 
|   |   +---}
|   |   +---                                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---~
|   |   +--- 
|   |   +---className
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---{
|   |   +--- 
|   |   +---}
|   |   +---                                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---getMetaClass
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +---                  
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +--- 
|   |   +---return
|   |   +--- 
|   |   +---&
|   |   +---gMetaClass
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---                                                  
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---                                              
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +---::
|   |   +---MetaClass
|   |   +---(
|   |   +---)
|   |   +---                                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---:
|   |   +--- 
|   |   +---OSMetaClass
|   |   +---(
|   |   +---"
|   |   +---className
|   |   +---"
|   |   +---,
|   |   +--- 
|   |   +---className
|   |   +---::
|   |   +---superClass
|   |   +---,
|   |   +--- 
|   |   +---sizeof
|   |   +---(
|   |   +---className
|   |   +---)
|   |   +---)
|   |   +---   
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +---   
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---     
|   |   +---OSObject
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +---::
|   |   +---alloc
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +---                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +--- 
|   |   +---return
|   |   +--- 
|   |   +---new
|   |   +--- 
|   |   +---className
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---                                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---:
|   |   +---   
|   |   +---superClassName
|   |   +--- 
|   |   +---(
|   |   +---&
|   |   +---gMetaClass
|   |   +---)
|   |   +---                  
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +--- 
|   |   +---gMetaClass
|   |   +---.
|   |   +---instanceConstructed
|   |   +---(
|   |   +---)
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function OSDefineMetaClassAndAbstractStructors
|   |   +---
@abstract Define an OSMetaClass subclass and the runtime system routines.
|   |   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that is an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.
|   |   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   |   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +-*-#define (HAS STATE)
|   |   +--- 
|   |   +---OSDefineMetaClassAndAbstractStructors
|   |   +---(
|   |   +---className
|   |   +---,
|   |   +--- 
|   |   +---superClassName
|   |   +---)
|   |   +--- 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---     
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---metaClass
|   |   +--- 
|   |   +---=
|   |   +---                           
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---&
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---superClass
|   |   +--- 
|   |   +---=
|   |   +---                           
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---&
|   |   +---   
|   |   +---superClassName
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---                                              
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +--- 
|   |   +---className
|   |   +---(
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +---meta
|   |   +---)
|   |   +---                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---            
|   |   +---:
|   |   +---   
|   |   +---superClassName
|   |   +--- 
|   |   +---(
|   |   +---meta
|   |   +---)
|   |   +--- 
|   |   +---{
|   |   +--- 
|   |   +---}
|   |   +---                                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---~
|   |   +--- 
|   |   +---className
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---{
|   |   +--- 
|   |   +---}
|   |   +---                                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---getMetaClass
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +---                  
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +--- 
|   |   +---return
|   |   +--- 
|   |   +---&
|   |   +---gMetaClass
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---                                                  
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---                                              
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +---::
|   |   +---MetaClass
|   |   +---(
|   |   +---)
|   |   +---                                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---:
|   |   +--- 
|   |   +---OSMetaClass
|   |   +---(
|   |   +---"
|   |   +---className
|   |   +---"
|   |   +---,
|   |   +--- 
|   |   +---className
|   |   +---::
|   |   +---superClass
|   |   +---,
|   |   +--- 
|   |   +---sizeof
|   |   +---(
|   |   +---className
|   |   +---)
|   |   +---)
|   |   +---   
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +---   
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---     
|   |   +---OSObject
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +---::
|   |   +---alloc
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---{
|   |   +--- 
|   |   +---return
|   |   +--- 
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---    
|   +---//
|   |   +--- 
|   |   +---Dynamic vtable patchup support routines and types
|   |   +---[ NEWLINE ]
|   +---    
|   +-*-void (HAS STATE)
|   +--- 
|   +---reservedCalled
|   +---(
|   |   +---int
|   |   +--- 
|   |   +---ind
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +-*-#define (HAS STATE)
|   |   +--- 
|   |   +---OSMetaClassDeclareReservedUnused
|   |   +---(
|   |   +---classname
|   |   +---,
|   |   +--- 
|   |   +---index
|   |   +---)
|   |   +---                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---private
|   |   +---:
|   |   +---                                                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---APPLE_KEXT_PAD_METHOD
|   |   +--- 
|   |   +---void
|   |   +--- 
|   |   +---_RESERVED
|   |   +--- 
|   |   +---#
|   |   +---#
|   |   +--- 
|   |   +---classname
|   |   +--- 
|   |   +---#
|   |   +---#
|   |   +--- 
|   |   +---index
|   |   +--- 
|   |   +---(
|   |   +---)
|   |   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +-*-#define (HAS STATE)
|   |   +--- 
|   |   +---OSMetaClassDeclareReservedUsed
|   |   +---(
|   |   +---classname
|   |   +---,
|   |   +--- 
|   |   +---index
|   |   +---)
|   |   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +-*-#define (HAS STATE)
|   |   +--- 
|   |   +---OSMetaClassDefineReservedUnused
|   |   +---(
|   |   +---classname
|   |   +---,
|   |   +--- 
|   |   +---index
|   |   +---)
|   |   +---                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---void
|   |   +--- 
|   |   +---classname
|   |   +--- 
|   |   +---::
|   |   +---_RESERVED
|   |   +--- 
|   |   +---#
|   |   +---#
|   |   +--- 
|   |   +---classname
|   |   +--- 
|   |   +---#
|   |   +---#
|   |   +--- 
|   |   +---index
|   |   +--- 
|   |   +---(
|   |   +---)
|   |   +---                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---{
|   |   +--- 
|   |   +---APPLE_KEXT_PAD_IMPL
|   |   +---(
|   |   +---index
|   |   +---)
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +-*-#define (HAS STATE)
|   |   +--- 
|   |   +---OSMetaClassDefineReservedUsed
|   |   +---(
|   |   +---classname
|   |   +---,
|   |   +--- 
|   |   +---index
|   |   +---)
|   |   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---    
|   +---//
|   |   +--- 
|   |   +---IOKit debug internal routines.
|   |   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---printInstanceCounts
|   +---(
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---serializeClassDictionary
|   +---(
|   |   +---OSDictionary
|   |   +--- 
|   |   +---*
|   |   +---dict
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---private
|   +---:
|   +---[ NEWLINE ]
|   +---    
|   +---//
|   |   +--- 
|   |   +---Obsolete APIs
|   |   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---OSDictionary
|   +--- 
|   +---*
|   +---getClassDictionary
|   +---(
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---    
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---bool
|   +--- 
|   +---serialize
|   +---(
|   |   +---OSSerialize
|   |   +--- 
|   |   +---*
|   |   +---s
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---    
|   +---//
|   |   +--- 
|   |   +---Virtual Padding functions for MetaClass's
|   |   +---[ NEWLINE ]
|   +---                   
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---[ NEWLINE ]
|   +---    
|   +-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---_RESERVED
|   +---  
|   +---OSMetaClass
|   +---   
|   +---0
|   +--- 
|   +---(
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---                   
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---[ NEWLINE ]
|   +---    
|   +-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---_RESERVED
|   +---  
|   +---OSMetaClass
|   +---   
|   +---1
|   +--- 
|   +---(
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---                   
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---[ NEWLINE ]
|   +---    
|   +-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---_RESERVED
|   +---  
|   +---OSMetaClass
|   +---   
|   +---2
|   +--- 
|   +---(
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---                   
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---[ NEWLINE ]
|   +---    
|   +-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---_RESERVED
|   +---  
|   +---OSMetaClass
|   +---   
|   +---3
|   +--- 
|   +---(
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---                   
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---[ NEWLINE ]
|   +---    
|   +-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---_RESERVED
|   +---  
|   +---OSMetaClass
|   +---   
|   +---4
|   +--- 
|   +---(
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---                   
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---[ NEWLINE ]
|   +---    
|   +-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---_RESERVED
|   +---  
|   +---OSMetaClass
|   +---   
|   +---5
|   +--- 
|   +---(
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---                   
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---[ NEWLINE ]
|   +---    
|   +-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---_RESERVED
|   +---  
|   +---OSMetaClass
|   +---   
|   +---6
|   +--- 
|   +---(
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---                   
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---[ NEWLINE ]
|   +---    
|   +-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---_RESERVED
|   +---  
|   +---OSMetaClass
|   +---   
|   +---7
|   +--- 
|   +---(
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---}
+---;
+--- 
+---[ NEWLINE ]
-=: COMPUTED VALUE :=-
SUCCESS: 0
VALUE: 0
-=: CPP CHANGES :=-
$CPP_HASH{OSDeclareAbstractStructors} =>                                
         private:                                                                 
        static const OSMetaClass * const superClass;                         
    public:                                                                 
        static const OSMetaClass * const metaClass;                         
        static class MetaClass : public OSMetaClass {                         
        public:                                                                 
            MetaClass();                                                 
            virtual OSObject *alloc() const;                                 
        } gMetaClass;                                                         
        friend class className ::MetaClass;                                 
        virtual const OSMetaClass * getMetaClass() const;                 
    protected:                                                                 
        className (const OSMetaClass *);                                 
        virtual ~ className ();                                
    private:                                                                
        className ();  
    protected:
$CPP_HASH{OSDeclareCommonStructors} =>                                
    private:                                                                
        static const OSMetaClass * const superClass;                        
    public:                                                                
        static const OSMetaClass * const metaClass;                        
        static class MetaClass : public OSMetaClass {                        
        public:                                                                
            MetaClass();                                                
            virtual OSObject *alloc() const;                                
        } gMetaClass;                                                        
        friend class className ::MetaClass;                                
        virtual const OSMetaClass * getMetaClass() const;                
    protected:                                                                
        className (const OSMetaClass *);                                
        virtual ~ className ()
$CPP_HASH{OSDeclareDefaultStructors} =>                                
         private:                                                                 
        static const OSMetaClass * const superClass;                         
    public:                                                                 
        static const OSMetaClass * const metaClass;                         
        static class MetaClass : public OSMetaClass {                         
        public:                                                                 
            MetaClass();                                                 
            virtual OSObject *alloc() const;                                 
        } gMetaClass;                                                         
        friend class className ::MetaClass;                                 
        virtual const OSMetaClass * getMetaClass() const;                 
    protected:                                                                 
        className (const OSMetaClass *);                                 
        virtual ~ className ();                                
    public:                                                                
        className ();                                                        
    protected:
$CPP_HASH{OSDefineAbstractStructors} =>                
    OSObject * className ::MetaClass::alloc() const { return ; }
$CPP_HASH{OSDefineDefaultStructors} =>                
    OSObject * className ::MetaClass::alloc() const                        
        { return new className; }                                        
    className :: className () : superClassName (&gMetaClass)                
        { gMetaClass.instanceConstructed(); }
$CPP_HASH{OSDefineMetaClass} =>                        
     className ::MetaClass className ::gMetaClass;                         
    const OSMetaClass * const className ::metaClass =                          
        & className ::gMetaClass;                                         
    const OSMetaClass * const className ::superClass =                          
        &  superClassName ::gMetaClass;                                         
                                             
    className :: className(const OSMetaClass *meta)                         
            :  superClassName (meta) { }                                         
    className ::~ className() { }                                         
    const OSMetaClass * className ::getMetaClass() const                 
        { return &gMetaClass; }                                                 
                                             
    className ::MetaClass::MetaClass()                                         
        : OSMetaClass("className", className::superClass, sizeof(className))  
        {  ; }
$CPP_HASH{OSDefineMetaClassAndAbstractStructors} => 
     className ::MetaClass className ::gMetaClass;                          
    const OSMetaClass * const className ::metaClass =                           
        & className ::gMetaClass;                                          
    const OSMetaClass * const className ::superClass =                           
        &   superClassName ::gMetaClass;                                          
                                              
    className :: className(const OSMetaClass *meta)                          
            :   superClassName (meta) { }                                          
    className ::~ className() { }                                          
    const OSMetaClass * className ::getMetaClass() const                  
        { return &gMetaClass; }                                                  
                                              
    className ::MetaClass::MetaClass()                                          
        : OSMetaClass("className", className::superClass, sizeof(className))   
        {   ; }                 
     OSObject * className ::MetaClass::alloc() const { return ; }
$CPP_HASH{OSDefineMetaClassAndAbstractStructorsWithInit} => 
     className ::MetaClass className ::gMetaClass;                         
    const OSMetaClass * const className ::metaClass =                          
        & className ::gMetaClass;                                         
    const OSMetaClass * const className ::superClass =                          
        &  superClassName ::gMetaClass;                                         
                                             
    className :: className(const OSMetaClass *meta)                         
            :  superClassName (meta) { }                                         
    className ::~ className() { }                                         
    const OSMetaClass * className ::getMetaClass() const                 
        { return &gMetaClass; }                                                 
                                             
    className ::MetaClass::MetaClass()                                         
        : OSMetaClass("className", className::superClass, sizeof(className))  
        {  init; }                
     OSObject * className ::MetaClass::alloc() const { return ; }
$CPP_HASH{OSDefineMetaClassAndStructors} =>        
     className ::MetaClass className ::gMetaClass;                          
    const OSMetaClass * const className ::metaClass =                           
        & className ::gMetaClass;                                          
    const OSMetaClass * const className ::superClass =                           
        &   superClassName ::gMetaClass;                                          
                                              
    className :: className(const OSMetaClass *meta)                          
            :   superClassName (meta) { }                                          
    className ::~ className() { }                                          
    const OSMetaClass * className ::getMetaClass() const                  
        { return &gMetaClass; }                                                  
                                              
    className ::MetaClass::MetaClass()                                          
        : OSMetaClass("className", className::superClass, sizeof(className))   
        {   ; }                 
     OSObject * className ::MetaClass::alloc() const                          
        { return new className; }                                          
    className :: className () :   superClassName (&gMetaClass)                  
        { gMetaClass.instanceConstructed(); }
$CPP_HASH{OSDefineMetaClassAndStructorsWithInit} => 
     className ::MetaClass className ::gMetaClass;                         
    const OSMetaClass * const className ::metaClass =                          
        & className ::gMetaClass;                                         
    const OSMetaClass * const className ::superClass =                          
        &  superClassName ::gMetaClass;                                         
                                             
    className :: className(const OSMetaClass *meta)                         
            :  superClassName (meta) { }                                         
    className ::~ className() { }                                         
    const OSMetaClass * className ::getMetaClass() const                 
        { return &gMetaClass; }                                                 
                                             
    className ::MetaClass::MetaClass()                                         
        : OSMetaClass("className", className::superClass, sizeof(className))  
        {  init; }                
     OSObject * className ::MetaClass::alloc() const                         
        { return new className; }                                         
    className :: className () :  superClassName (&gMetaClass)                 
        { gMetaClass.instanceConstructed(); }
$CPP_HASH{OSDefineMetaClassWithInit} =>        
                                                    
    className ::MetaClass className ::gMetaClass;                        
    const OSMetaClass * const className ::metaClass =                         
        & className ::gMetaClass;                                        
    const OSMetaClass * const className ::superClass =                         
        & superClassName ::gMetaClass;                                        
                                            
    className :: className(const OSMetaClass *meta)                        
            : superClassName (meta) { }                                        
    className ::~ className() { }                                        
    const OSMetaClass * className ::getMetaClass() const                
        { return &gMetaClass; }                                                
                                            
    className ::MetaClass::MetaClass()                                        
        : OSMetaClass(#className, className::superClass, sizeof(className)) 
        { init; }
$CPP_HASH{OSMetaClassDeclareReservedUnused} =>                
    private:                                                                
    APPLE_KEXT_PAD_METHOD void _RESERVED ## classname ## index ()
$CPP_HASH{OSMetaClassDeclareReservedUsed} => 
$CPP_HASH{OSMetaClassDefineReservedUnused} =>                
void classname ::_RESERVED ## classname ## index ()                         
    { APPLE_KEXT_PAD_IMPL(index); }
$CPP_HASH{OSMetaClassDefineReservedUsed} => 
$CPP_ARG_HASH{OSDeclareAbstractStructors} => className
$CPP_ARG_HASH{OSDeclareCommonStructors} => className
$CPP_ARG_HASH{OSDeclareDefaultStructors} => className
$CPP_ARG_HASH{OSDefineAbstractStructors} => className, superClassName
$CPP_ARG_HASH{OSDefineDefaultStructors} => className, superClassName
$CPP_ARG_HASH{OSDefineMetaClass} => className, superClassName
$CPP_ARG_HASH{OSDefineMetaClassAndAbstractStructors} => className, superClassName
$CPP_ARG_HASH{OSDefineMetaClassAndAbstractStructorsWithInit} => className, superClassName, init
$CPP_ARG_HASH{OSDefineMetaClassAndStructors} => className, superClassName
$CPP_ARG_HASH{OSDefineMetaClassAndStructorsWithInit} => className, superClassName, init
$CPP_ARG_HASH{OSDefineMetaClassWithInit} => className, superClassName, init
$CPP_ARG_HASH{OSMetaClassDeclareReservedUnused} => classname, index
$CPP_ARG_HASH{OSMetaClassDeclareReservedUsed} => classname, index
$CPP_ARG_HASH{OSMetaClassDefineReservedUnused} => classname, index
$CPP_ARG_HASH{OSMetaClassDefineReservedUsed} => classname, index
-=: FOUND MATCH :=-
1
-=: NAMED OBJECTS :=-
TREE COUNT: 0
INDEX GROUP: 
IS BLOCK: 
OBJECT TYPE: HeaderDoc::Header
NAME: class 5
APIUID: //test_ref/doc/header/class_5.test
ABSTRACT: ""
DISCUSSION: "<p></p>"
UPDATED: ""
COPYRIGHT: ""
HTMLMETA: ""
PRIVATEDECLARATION: ""
GROUP: ""
INDEXGROUP: ""
THROWS: ""
XMLTHROWS: ""
UPDATED: ""
LINKAGESTATE: ""
ACCESSCONTROL: ""
AVAILABILITY: ""
LINKUID: ""
ORIGCLASS: ""
ISDEFINE: ""
ISTEMPLATE: ""
VALUE: "UNKNOWN"
RETURNTYPE: ""
LINENUM: ""
CLASS: "HeaderDoc::Header"
MASTERENUM: ""
APIREFSETUPDONE: "1"
TPCDONE: ""
NOREGISTERUID: ""
SUPPRESSCHILDREN: ""
NAMELINE_DISCUSSION: ""
HIDEDOC: ""
HIDESINGLETONS: ""
HIDECONTENTS: ""
MAINOBJECT: ""
LIST ATTRIBUTES: 
SHORT ATTRIBUTES: <p></p>
LONG ATTRIBUTES: <p></p>
    TREE COUNT: 1
    INDEX GROUP: 
    IS BLOCK: 
    OBJECT TYPE: HeaderDoc::CPPClass
    NAME: OSMetaClass
    APIUID: 
    ABSTRACT: "<p>An instance of a OSMetaClass represents one class then the kernel's runtime type information system is aware of.
"
    DISCUSSION: "<p></p>"
    UPDATED: ""
    COPYRIGHT: ""
    HTMLMETA: ""
    PRIVATEDECLARATION: ""
    GROUP: ""
    INDEXGROUP: ""
    THROWS: ""
    XMLTHROWS: ""
    UPDATED: ""
    LINKAGESTATE: ""
    ACCESSCONTROL: ""
    AVAILABILITY: ""
    LINKUID: ""
    ORIGCLASS: ""
    ISDEFINE: ""
    ISTEMPLATE: ""
    VALUE: "UNKNOWN"
    RETURNTYPE: ""
    LINENUM: ""
    CLASS: "HeaderDoc::CPPClass"
    MASTERENUM: ""
    APIREFSETUPDONE: "1"
    TPCDONE: ""
    NOREGISTERUID: ""
    SUPPRESSCHILDREN: "1"
    NAMELINE_DISCUSSION: ""
    HIDEDOC: ""
    HIDESINGLETONS: ""
    HIDECONTENTS: ""
    MAINOBJECT: ""
    LIST ATTRIBUTES: 
    SHORT ATTRIBUTES: <p><b>Superclass:</b> <!-- a logicalPath="//test_ref/cpp/cl/OSMetaClassBase //test_ref/cpp/tdef/OSMetaClassBase //test_ref/cpp/tag/OSMetaClassBase //test_ref/cpp/econst/OSMetaClassBase //test_ref/cpp/struct/OSMetaClassBase //test_ref/cpp/data/OSMetaClassBase //test_ref/cpp/clconst/OSMetaClassBase //test_ref/cpp/intf/OSMetaClassBase //test_ref/cpp/instm/OSMetaClassBase //test_ref/cpp/clm/OSMetaClassBase //test_ref/cpp/intfcm/OSMetaClassBase //test_ref/cpp/intfm/OSMetaClassBase //test_ref/cpp/func/OSMetaClassBase //test_ref/cpp/ftmplt/OSMetaClassBase //test_ref/cpp/defn/OSMetaClassBase //test_ref/cpp/macro/OSMetaClassBase //test_ref/doc/com/intfm/OSMetaClassBase" -->OSMetaClassBase<!-- /a --><br>
<b>Declared In:</b> <a href="../../index.html" target="_top">class 5</a><br>
</p>
    LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: OSMetaClass
        APIUID: //test_ref/cpp/instm/OSMetaClass/OSMetaClass//()
        ABSTRACT: "<p>Private the default constructor "
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "private"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: ""
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: logError
        APIUID: //test_ref/cpp/clm/OSMetaClass/logError/void/(OSReturn)
        ABSTRACT: "<p>Given an error code log an error string using printf "
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "private"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " static void"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: result
            TYPE: OSReturn
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: getMetaClassWithName
        APIUID: //test_ref/cpp/clm/OSMetaClass/getMetaClassWithName/constOSMetaClass*/(constOSSymbol*)
        ABSTRACT: "<p>Lookup a meta-class in the runtime type information system
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " static const OSMetaClass *"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: name
            TYPE: const OSSymbol *
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: name
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>Name of the desired class's meta-class."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: retain
        APIUID: //test_ref/cpp/instm/OSMetaClass/retain/void/()
        ABSTRACT: "<p>Implement abstract but should no dynamic allocation is allowed "
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "protected"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " virtual void"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: release
        APIUID: //test_ref/cpp/instm/OSMetaClass/release/void/()
        ABSTRACT: "<p>Implement abstract but should no dynamic allocation is allowed "
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "protected"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " virtual void"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: release
        APIUID: //test_ref/cpp/instm/OSMetaClass/release/void/(int)
        ABSTRACT: "<p>Implement abstract but should no dynamic allocation is allowed 
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "protected"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " virtual void"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: when
            TYPE: int
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: when
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>ignored."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: taggedRetain
        APIUID: //test_ref/cpp/instm/OSMetaClass/taggedRetain/void/(constvoid*)
        ABSTRACT: "<p>Retain a tagged reference in this object.
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "protected"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " virtual void"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: tag
            TYPE: const void *
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: release
        APIUID: //test_ref/doc/title:instm/OSMetaClass/release/void/(constvoid*)
        ABSTRACT: "<p>Release a tagged reference to this object
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "protected"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " virtual void"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: tag
            TYPE: const void *
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: taggedRelease
        APIUID: //test_ref/cpp/instm/OSMetaClass/taggedRelease/void/(constvoid*)
        ABSTRACT: "<p>Release a tagged reference to this object
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "protected"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " virtual void"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: tag
            TYPE: const void *
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: release
        APIUID: //test_ref/doc/title:instm/OSMetaClass/release/void/(constvoid*,constint)
        ABSTRACT: "<p>Release a tagged reference to this object
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "protected"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " virtual void"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: tag
            TYPE: const void *
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: when
            TYPE: const int
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: taggedRelease
        APIUID: //test_ref/cpp/instm/OSMetaClass/taggedRelease/void/(constvoid*,constint)
        ABSTRACT: "<p>Release a tagged reference to this object
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "protected"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " virtual void"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: tag
            TYPE: const void *
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: when
            TYPE: const int
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: getRetainCount
        APIUID: //test_ref/cpp/instm/OSMetaClass/getRetainCount/int/()
        ABSTRACT: "<p>Implement abstract but should no dynamic allocation is allowed "
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "protected"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " virtual int"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: OSMetaClass
        APIUID: //test_ref/cpp/instm/OSMetaClass/OSMetaClass//(constchar*,constOSMetaClass*,unsignedint)
        ABSTRACT: "<p>Constructor for OSMetaClass objects
"
        DISCUSSION: "<p>This constructor is protected and cannot not be used to instantiate an OSMetaClass object, i.e. OSMetaClass is an abstract class.  This function stores the currently constructing OSMetaClass instance away for later processing.  See preModLoad and postModLoad.
"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "protected"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: ""
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: inClassName
            TYPE: const char *
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: inSuperClass
            TYPE: const OSMetaClass *
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: inClassSize
            TYPE: unsigned int
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: inClassName
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>cString of the name of the class this meta-class represents."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: inSuperClassName
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>cString of the name of the super class."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: inClassSize
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>sizeof the class."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: ~OSMetaClass
        APIUID: //test_ref/doc/title:instm/OSMetaClass/~OSMetaClass//()
        ABSTRACT: "<p>Destructor for OSMetaClass objects
"
        DISCUSSION: "<p>If this function is called it means that the object code that implemented this class is actually in the process of unloading.  The destructor removes all reference's to the subclass from the runtime type information system. "
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "protected"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " virtual "
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: preModLoad
        APIUID: //test_ref/cpp/clm/OSMetaClass/preModLoad/void*/(constchar*)
        ABSTRACT: "<p>Prepare the runtime type system for the load of a module.
"
        DISCUSSION: "<p>Prepare the runtime type information system for the loading of new all meta-classes constructed between now and the next postModLoad.  preModLoad grab's a lock so that the runtime type information system loading can be protected, the lock is released by the postModLoad function.  Any OSMetaClass that is constructed between the bracketing pre and post calls will be assosiated with the module name.
"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " static void *"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: kmodName
            TYPE: const char *
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: kmodName
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>globally unique cString name of the kernel module being loaded."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: checkModLoad
        APIUID: //test_ref/cpp/clm/OSMetaClass/checkModLoad/bool/(void*)
        ABSTRACT: "<p>Check if the current load attempt is still OK.
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " static bool"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: loadHandle
            TYPE: void *
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: loadHandle
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>Handle returned when a successful call to preModLoad is made."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: postModLoad
        APIUID: //test_ref/cpp/clm/OSMetaClass/postModLoad/OSReturn/(void*)
        ABSTRACT: "<p>Finish postprocessing on a kernel module's meta-classes.
"
        DISCUSSION: "<p>As the order of static object construction is undefined it is necessary to process the constructors in two phases.  These phases rely on global information that is created be the preparation step, preModLoad, which also guarantees single threading between multiple modules.  Phase one was the static construction of each meta-class object one by one withing the context prepared by the preModLoad call.  postModLoad is the second phase of processing.  Inserts links all of the super class inheritance chains up, inserts the meta-classes into the global register of classes and records for each meta-class which kernel module caused it's construction.  Finally it cleans up the temporary storage and releases the single threading lock and returns whatever error has been recorded in during the construction phase or the post processing phase. 
"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " static OSReturn"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: loadHandle
            TYPE: void *
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: loadHandle
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>Handle returned when a successful call to preModLoad is made."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: modHasInstance
        APIUID: //test_ref/cpp/clm/OSMetaClass/modHasInstance/bool/(constchar*)
        ABSTRACT: "<p>Do any of the objects represented by OSMetaClass and associated with the given kernel module name have instances?
"
        DISCUSSION: "<p>Check all meta-classes associated with the module name and check their instance counts.  This function is used to check to see if a module can be unloaded.  Obviously if an instance is still outstanding it isn't safe to unload the code that relies on that object.
"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " static bool"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: kmodName
            TYPE: const char *
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: kmodName
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>cString of the kernel module name."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: reportModInstances
        APIUID: //test_ref/cpp/clm/OSMetaClass/reportModInstances/void/(constchar*)
        ABSTRACT: "<p>Log any object that has instances in a module.
"
        DISCUSSION: "<p>When a developer ask for a module to be unloaded but the unload fails due to outstanding instances.  This function will report which classes still have instances.  It is intended mostly for developers to find problems with unloading classes and will be called automatically by 'verbose' unloads.
"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " static void"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: kmodName
            TYPE: const char *
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: kmodName
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>cString of the kernel module name."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: considerUnloads
        APIUID: //test_ref/cpp/clm/OSMetaClass/considerUnloads/void/()
        ABSTRACT: "<p>Schedule module unloading.
"
        DISCUSSION: "<p>Schedule unused modules to be unloaded; called when IOKit matching goes idle. "
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " static void"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: allocClassWithName
        APIUID: //test_ref/cpp/clm/OSMetaClass/allocClassWithName/OSObject*/(constOSSymbol*)
        ABSTRACT: "<p>Lookup a meta-class in the runtime type information system and return the results of an alloc call.
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " static OSObject *"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: name
            TYPE: const OSSymbol *
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: name
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>Name of the desired class."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: allocClassWithName
        APIUID: //test_ref/cpp/clm/OSMetaClass/allocClassWithName/OSObject*/(constOSString*)
        ABSTRACT: "<p>Lookup a meta-class in the runtime type information system and return the results of an alloc call.
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " static OSObject *"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: name
            TYPE: const OSString *
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: name
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>Name of the desired class."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: allocClassWithName
        APIUID: //test_ref/cpp/clm/OSMetaClass/allocClassWithName/OSObject*/(constchar*)
        ABSTRACT: "<p>Lookup a meta-class in the runtime type information system and return the results of an alloc call.
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " static OSObject *"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: name
            TYPE: const char *
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: name
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>Name of the desired class."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: checkMetaCastWithName
        APIUID: //test_ref/cpp/clm/OSMetaClass/checkMetaCastWithName/OSMetaClassBase*/(constOSSymbol*,constOSMetaClassBase*)
        ABSTRACT: "<p>Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " static OSMetaClassBase *"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: name
            TYPE: const OSSymbol *
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: in
            TYPE: const OSMetaClassBase *
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: name
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>Name of the desired class or super class."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: in
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>object to be introspected."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: checkMetaCastWithName
        APIUID: //test_ref/cpp/clm/OSMetaClass/checkMetaCastWithName/OSMetaClassBase*/(constOSString*,constOSMetaClassBase*)
        ABSTRACT: "<p>Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " static OSMetaClassBase *"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: name
            TYPE: const OSString *
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: in
            TYPE: const OSMetaClassBase *
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: name
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>Name of the desired class or super class."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: in
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>object to be introspected."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: checkMetaCastWithName
        APIUID: //test_ref/cpp/clm/OSMetaClass/checkMetaCastWithName/OSMetaClassBase*/(constchar*,constOSMetaClassBase*)
        ABSTRACT: "<p>Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " static OSMetaClassBase *"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: name
            TYPE: const char *
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: in
            TYPE: const OSMetaClassBase *
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: name
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>Name of the desired class or super class."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: in
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>object to be introspected."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: instanceConstructed
        APIUID: //test_ref/cpp/instm/OSMetaClass/instanceConstructed/void/()
        ABSTRACT: "<p>Counts the instances of the class behind this metaclass.
"
        DISCUSSION: "<p>Every non-abstract class that inherits from OSObject has a default constructor that calls it's own meta-class' instanceConstructed function.  This constructor is defined by the OSDefineMetaClassAndStructors macro (qv) that all OSObject subclasses must use.  Also if the instance count goes from 0 to 1, ie the first instance, then increment the instance count of the super class "
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " void"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: instanceDestructed
        APIUID: //test_ref/cpp/instm/OSMetaClass/instanceDestructed/void/()
        ABSTRACT: "<p>Removes one instance of the class behind this metaclass.
"
        DISCUSSION: "<p>OSObject's free function calls this method just before it does a 'delete this' on itself.  If the instance count transitions from 1 to 0, i.e. the last object, then one instance of the superclasses is also removed. "
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " void"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: checkMetaCast
        APIUID: //test_ref/cpp/instm/OSMetaClass/checkMetaCast/OSMetaClassBase*/(constOSMetaClassBase*)
        ABSTRACT: "<p>Ask a OSMetaClass instance if the given object is either an instance of it or an instance of a subclass of it.
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " OSMetaClassBase *"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: check
            TYPE: const OSMetaClassBase *
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: check
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>Pointer of object to introspect."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: getInstanceCount
        APIUID: //test_ref/cpp/instm/OSMetaClass/getInstanceCount/unsignedint/()
        ABSTRACT: "<p>How many instances of the class have been created.
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " unsigned int"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: getSuperClass
        APIUID: //test_ref/cpp/instm/OSMetaClass/getSuperClass/constOSMetaClass*/()
        ABSTRACT: "<p>'Get'ter for the super class.
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " const OSMetaClass *"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: getKmodName
        APIUID: //test_ref/cpp/instm/OSMetaClass/getKmodName/constOSSymbol*/()
        ABSTRACT: "<p>'Get'ter for the name of the kmod.
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " const OSSymbol *"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: getClassName
        APIUID: //test_ref/cpp/instm/OSMetaClass/getClassName/constchar*/()
        ABSTRACT: "<p>'Get'ter for class name.
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " const char *"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: getClassSize
        APIUID: //test_ref/cpp/instm/OSMetaClass/getClassSize/unsignedint/()
        ABSTRACT: "<p>'Get'ter for sizeof(class).
"
        DISCUSSION: "<p></p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " unsigned int"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Function
        NAME: alloc
        APIUID: //test_ref/cpp/instm/OSMetaClass/alloc/OSObject*/()
        ABSTRACT: "<p>Allocate an instance of the class that this OSMetaClass instance represents.
"
        DISCUSSION: "<p>This alloc function is analogous to the old ObjC class alloc method.  Typically not used by clients as the static function allocClassWithName is more generally useful.  Infact that function is implemented in terms of this  virtual function.  All subclass's of OSMetaClass must implement this function but that is what the OSDefineMetaClassAndStructor's families of macros does for the developer automatically. 
"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: " virtual OSObject *"
        LINENUM: ""
        CLASS: "HeaderDoc::Function"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS PROPERTY: 0
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Var
        NAME: reserved
        APIUID: //test_ref/cpp/data/OSMetaClass/reserved
        ABSTRACT: ""
        DISCUSSION: "<p>Reserved for future use.  (Internal use only)</p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "private"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: "ExpansionData *"
        LINENUM: ""
        CLASS: "HeaderDoc::Var"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: "Reserved for future use.  (Internal use only)"
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Constant
        NAME: superClass
        APIUID: //test_ref/cpp/clconst/OSMetaClass/superClass
        ABSTRACT: ""
        DISCUSSION: "<p>Handle to the superclass' meta class.</p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "private"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: "const OSMetaClass *"
        LINENUM: ""
        CLASS: "HeaderDoc::Constant"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: "Handle to the superclass' meta class."
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: <b>See Also:</b><div class='list_indent'><dl>
<dt><!-- a logicalPath="//test_ref/cpp/clconst/OSMetaClass/superClassLink" --><p>superClassLink<!-- /a --></dt><dd></dd></dl></div>

        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Constant
        NAME: superClassLink
        APIUID: //test_ref/cpp/clconst/OSMetaClass/superClassLink
        ABSTRACT: ""
        DISCUSSION: "<p>Handle to the superclass' meta class.</p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "private"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: "const OSMetaClass *"
        LINENUM: ""
        CLASS: "HeaderDoc::Constant"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: "Handle to the superclass' meta class."
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: <b>See Also:</b><div class='list_indent'><dl>
<dt><!-- a logicalPath="//test_ref/cpp/clconst/OSMetaClass/superClass" --><p>superClass<!-- /a --></dt><dd></dd></dl></div>

        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Constant
        NAME: className
        APIUID: //test_ref/cpp/clconst/OSMetaClass/className
        ABSTRACT: ""
        DISCUSSION: "<p>OSSymbol of the class' name.</p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "private"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: "const OSSymbol *"
        LINENUM: ""
        CLASS: "HeaderDoc::Constant"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: "OSSymbol of the class' name."
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS PROPERTY: 0
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Var
        NAME: classSize
        APIUID: //test_ref/cpp/data/OSMetaClass/classSize
        ABSTRACT: ""
        DISCUSSION: "<p>How big is a single instancde of this class.</p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "private"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: "unsigned int"
        LINENUM: ""
        CLASS: "HeaderDoc::Var"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: "How big is a single instancde of this class."
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS PROPERTY: 0
        IS BLOCK: 
        OBJECT TYPE: HeaderDoc::Var
        NAME: instanceCount
        APIUID: //test_ref/cpp/data/OSMetaClass/instanceCount
        ABSTRACT: ""
        DISCUSSION: "<p>Roughly number of instances of the object.  Used primarily as a code in use flag.</p>"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "private"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: "mutable unsigned int"
        LINENUM: ""
        CLASS: "HeaderDoc::Var"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: "Roughly number of instances of the object.  Used primarily as a code in use flag."
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        IS AVAILABILITY MACRO: 
        PARSE ONLY: 
        OBJECT TYPE: HeaderDoc::PDefine
        NAME: OSDeclareCommonStructors
        APIUID: //test_ref/cpp/macro/OSDeclareCommonStructors
        ABSTRACT: "<p>Basic helper macro for the OSDeclare for Default and Abstract macros, qv.  DO NOT USE.
"
        DISCUSSION: ""
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: ""
        LINENUM: ""
        CLASS: "HeaderDoc::PDefine"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: className
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: className
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>Name of class. NO QUOTES."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        IS AVAILABILITY MACRO: 
        PARSE ONLY: 
        OBJECT TYPE: HeaderDoc::PDefine
        NAME: OSDeclareDefaultStructors
        APIUID: //test_ref/cpp/macro/OSDeclareDefaultStructors
        ABSTRACT: "<p>One of the macro's used in the class declaration of all subclasses of OSObject, declares runtime type information data and interfaces. 
"
        DISCUSSION: "<p>Macro used in the class declaration all subclasses of OSObject, declares runtime type information data and interfaces.  By convention it should be 'called' immediately after the opening brace in a class declaration.  It leaves the current privacy state as 'protected:'.
"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: ""
        LINENUM: ""
        CLASS: "HeaderDoc::PDefine"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: className
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: className
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>Name of class. NO QUOTES."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        IS AVAILABILITY MACRO: 
        PARSE ONLY: 
        OBJECT TYPE: HeaderDoc::PDefine
        NAME: OSDeclareAbstractStructors
        APIUID: //test_ref/cpp/macro/OSDeclareAbstractStructors
        ABSTRACT: "<p>One of the macro's used in the class declaration of all subclasses of OSObject, declares runtime type information data and interfaces. 
"
        DISCUSSION: "<p>This macro is used when the class being declared has one or more '= 0' pure virtual methods and thus it is illegal to create an instance of this class.  It leaves the current privacy state as 'protected:'.
"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: ""
        LINENUM: ""
        CLASS: "HeaderDoc::PDefine"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: className
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: className
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>Name of class. NO QUOTES."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        IS AVAILABILITY MACRO: 
        PARSE ONLY: 
        OBJECT TYPE: HeaderDoc::PDefine
        NAME: OSDefineMetaClassWithInit
        APIUID: //test_ref/cpp/macro/OSDefineMetaClassWithInit
        ABSTRACT: "<p>Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
"
        DISCUSSION: ""
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: ""
        LINENUM: ""
        CLASS: "HeaderDoc::PDefine"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: className
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: superClassName
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: init
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: className
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>Name of class. NO QUOTES and NO MACROS."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: superClassName
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>Name of super class. NO QUOTES and NO MACROS."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: init
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>Name of a function to call after the OSMetaClass is constructed."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        IS AVAILABILITY MACRO: 
        PARSE ONLY: 
        OBJECT TYPE: HeaderDoc::PDefine
        NAME: OSDefineAbstractStructors
        APIUID: //test_ref/cpp/macro/OSDefineAbstractStructors
        ABSTRACT: "<p>Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
"
        DISCUSSION: ""
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: ""
        LINENUM: ""
        CLASS: "HeaderDoc::PDefine"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: className
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: superClassName
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: className
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>Name of class. NO QUOTES and NO MACROS."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: superClassName
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>Name of super class. NO QUOTES and NO MACROS."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        IS AVAILABILITY MACRO: 
        PARSE ONLY: 
        OBJECT TYPE: HeaderDoc::PDefine
        NAME: OSDefineDefaultStructors
        APIUID: //test_ref/cpp/macro/OSDefineDefaultStructors
        ABSTRACT: "<p>Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
"
        DISCUSSION: ""
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: ""
        LINENUM: ""
        CLASS: "HeaderDoc::PDefine"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: className
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: superClassName
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: className
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>Name of class. NO QUOTES and NO MACROS."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: superClassName
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>Name of super class. NO QUOTES and NO MACROS."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        IS AVAILABILITY MACRO: 
        PARSE ONLY: 
        OBJECT TYPE: HeaderDoc::PDefine
        NAME: OSDefineMetaClassAndAbstractStructorsWithInit
        APIUID: //test_ref/cpp/macro/OSDefineMetaClassAndAbstractStructorsWithInit
        ABSTRACT: "<p>Primary definition macro for all abstract classes that a subclasses of OSObject.
"
        DISCUSSION: "<p>Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that is an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.  Once the OSMetaClass has been constructed, at load time, call the init routine.  NB you can not rely on the order of execution of the init routines.
"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: ""
        LINENUM: ""
        CLASS: "HeaderDoc::PDefine"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: className
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: superClassName
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: init
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: className
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>Name of class. NO QUOTES and NO MACROS."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: superClassName
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>Name of super class. NO QUOTES and NO MACROS."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: init
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>Name of a function to call after the OSMetaClass is constructed."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        IS AVAILABILITY MACRO: 
        PARSE ONLY: 
        OBJECT TYPE: HeaderDoc::PDefine
        NAME: OSDefineMetaClassAndStructorsWithInit
        APIUID: //test_ref/cpp/macro/OSDefineMetaClassAndStructorsWithInit
        ABSTRACT: "<p>See OSDefineMetaClassAndStructors
"
        DISCUSSION: "<p>Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that isn't an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.  Once the OSMetaClass has been constructed, at load time, call the init routine.  NB you can not rely on the order of execution of the init routines.
"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: ""
        LINENUM: ""
        CLASS: "HeaderDoc::PDefine"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: className
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: superClassName
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: init
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: className
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>Name of class. NO QUOTES and NO MACROS."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: superClassName
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>Name of super class. NO QUOTES and NO MACROS."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: init
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>Name of a function to call after the OSMetaClass is constructed."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        IS AVAILABILITY MACRO: 
        PARSE ONLY: 
        OBJECT TYPE: HeaderDoc::PDefine
        NAME: OSDefineMetaClass
        APIUID: //test_ref/cpp/macro/OSDefineMetaClass
        ABSTRACT: "<p>Define an OSMetaClass instance, used for backward compatiblility only.
"
        DISCUSSION: ""
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: ""
        LINENUM: ""
        CLASS: "HeaderDoc::PDefine"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: className
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: superClassName
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: className
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>Name of class. NO QUOTES and NO MACROS."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: superClassName
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>Name of super class. NO QUOTES and NO MACROS."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        IS AVAILABILITY MACRO: 
        PARSE ONLY: 
        OBJECT TYPE: HeaderDoc::PDefine
        NAME: OSDefineMetaClassAndStructors
        APIUID: //test_ref/cpp/macro/OSDefineMetaClassAndStructors
        ABSTRACT: "<p>Define an OSMetaClass subclass and the runtime system routines.
"
        DISCUSSION: "<p>Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that isn't an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.
"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: ""
        LINENUM: ""
        CLASS: "HeaderDoc::PDefine"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: className
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: superClassName
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: className
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>Name of class. NO QUOTES and NO MACROS."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: superClassName
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>Name of super class. NO QUOTES and NO MACROS."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TREE COUNT: 1
        INDEX GROUP: 
        IS BLOCK: 
        IS AVAILABILITY MACRO: 
        PARSE ONLY: 
        OBJECT TYPE: HeaderDoc::PDefine
        NAME: OSDefineMetaClassAndAbstractStructors
        APIUID: //test_ref/cpp/macro/OSDefineMetaClassAndAbstractStructors
        ABSTRACT: "<p>Define an OSMetaClass subclass and the runtime system routines.
"
        DISCUSSION: "<p>Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that is an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.
"
        UPDATED: ""
        COPYRIGHT: ""
        HTMLMETA: ""
        PRIVATEDECLARATION: ""
        GROUP: ""
        INDEXGROUP: ""
        THROWS: ""
        XMLTHROWS: ""
        UPDATED: ""
        LINKAGESTATE: ""
        ACCESSCONTROL: "public"
        AVAILABILITY: ""
        LINKUID: ""
        ORIGCLASS: ""
        ISDEFINE: ""
        ISTEMPLATE: ""
        VALUE: "UNKNOWN"
        RETURNTYPE: ""
        LINENUM: ""
        CLASS: "HeaderDoc::PDefine"
        MASTERENUM: ""
        APIREFSETUPDONE: "1"
        TPCDONE: ""
        NOREGISTERUID: ""
        SUPPRESSCHILDREN: "0"
        NAMELINE_DISCUSSION: ""
        HIDEDOC: ""
        HIDESINGLETONS: ""
        HIDECONTENTS: ""
        MAINOBJECT: ""
        LIST ATTRIBUTES: 
        SHORT ATTRIBUTES: <p></p>
        LONG ATTRIBUTES: <p></p>
        PARSED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: className
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: superClassName
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p></p>"
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
        TAGGED PARAMETERS:
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: className
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>Name of class. NO QUOTES and NO MACROS."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
            TREE COUNT: 0
            INDEX GROUP: 
            IS BLOCK: 
            OBJECT TYPE: HeaderDoc::MinorAPIElement
            NAME: superClassName
            TYPE: 
            APIUID: 
            ABSTRACT: ""
            DISCUSSION: "<p>Name of super class. NO QUOTES and NO MACROS."
            UPDATED: ""
            COPYRIGHT: ""
            HTMLMETA: ""
            PRIVATEDECLARATION: ""
            GROUP: ""
            INDEXGROUP: ""
            THROWS: ""
            XMLTHROWS: ""
            UPDATED: ""
            LINKAGESTATE: ""
            ACCESSCONTROL: ""
            AVAILABILITY: ""
            LINKUID: ""
            ORIGCLASS: ""
            ISDEFINE: ""
            ISTEMPLATE: ""
            VALUE: "UNKNOWN"
            RETURNTYPE: ""
            LINENUM: ""
            CLASS: "HeaderDoc::MinorAPIElement"
            MASTERENUM: ""
            APIREFSETUPDONE: "1"
            TPCDONE: ""
            NOREGISTERUID: ""
            SUPPRESSCHILDREN: ""
            NAMELINE_DISCUSSION: ""
            HIDEDOC: ""
            HIDESINGLETONS: ""
            HIDECONTENTS: ""
            MAINOBJECT: ""
            LIST ATTRIBUTES: 
            SHORT ATTRIBUTES: <p></p>
            LONG ATTRIBUTES: <p></p>
-=: NAMED OBJECT PARSE TREES :=-
OBJECT: OSMetaClass (HeaderDoc::CPPClass)
+---class
+--- 
+---OSMetaClass
+--- 
+---:
+--- 
+---private
+--- 
+---OSMetaClassBase
+---[ NEWLINE ]
+---{
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---private
|   +---:
|   +---[ NEWLINE ]
|   +---    
|   +---//
|   |   +--- 
|   |   +---Can never be allocated must be created at compile time
|   |   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---*
|   +---operator
|   +--- 
|   +---new
|   +---(
|   |   +---size_t
|   |   +--- 
|   |   +---size
|   |   +---)
|   +---;
|   +--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---    
|   +-*-struct (HAS STATE)
|   +--- 
|   +---ExpansionData
|   +--- 
|   +---{
|   |   +--- 
|   |   +---}
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @var reserved Reserved for future use.  (Internal use only)  
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-ExpansionData (HAS STATE)
|   +--- 
|   +---*
|   +---reserved
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @var superClass Handle to the superclass' meta class. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-const (HAS STATE)
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---superClassLink
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @var className OSSymbol of the class' name. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-const (HAS STATE)
|   +--- 
|   +---OSSymbol
|   +--- 
|   +---*
|   +---className
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @var classSize How big is a single instancde of this class. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-unsigned (HAS STATE)
|   +--- 
|   +---int
|   +--- 
|   +---classSize
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @var instanceCount Roughly number of instances of the object.  Used primarily as a code in use flag. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-mutable (HAS STATE)
|   +--- 
|   +---unsigned
|   +--- 
|   +---int
|   +--- 
|   +---instanceCount
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function OSMetaClass
|   |   +---
@abstract Private the default constructor 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-OSMetaClass (HAS STATE)
|   +---(
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---    
|   +---//
|   |   +--- 
|   |   +---Called by postModLoad
|   |   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function logError
|   |   +---
@abstract Given an error code log an error string using printf 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---logError
|   +---(
|   |   +---OSReturn
|   |   +--- 
|   |   +---result
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---public
|   +---:
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function getMetaClassWithName
|   |   +---
@abstract Lookup a meta-class in the runtime type information system
|   |   +---
@param name Name of the desired class's meta-class. 
|   |   +---
@result pointer to a meta-class object if found, 0 otherwise. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---getMetaClassWithName
|   +---(
|   |   +---const
|   |   +--- 
|   |   +---OSSymbol
|   |   +--- 
|   |   +---*
|   |   +---name
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---protected
|   +---:
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function retain
|   |   +---
@abstract Implement abstract but should no dynamic allocation is allowed 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---retain
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function release
|   |   +---
@abstract Implement abstract but should no dynamic allocation is allowed 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---release
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function release
|   |   +---
@abstract Implement abstract but should no dynamic allocation is allowed 
|   |   +---
@param when ignored. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---release
|   +---(
|   |   +---int
|   |   +--- 
|   |   +---when
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function taggedRetain
|   |   +---
@abstract Retain a tagged reference in this object.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---taggedRetain
|   +---(
|   |   +---const
|   |   +--- 
|   |   +---void
|   |   +--- 
|   |   +---*
|   |   +---tag
|   |   +--- 
|   |   +---=
|   |   +--- 
|   |   +---0
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function release
|   |   +---
@abstract Release a tagged reference to this object
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---taggedRelease
|   +---(
|   |   +---const
|   |   +--- 
|   |   +---void
|   |   +--- 
|   |   +---*
|   |   +---tag
|   |   +--- 
|   |   +---=
|   |   +--- 
|   |   +---0
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function release
|   |   +---
@abstract Release a tagged reference to this object
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---taggedRelease
|   +---(
|   |   +---const
|   |   +--- 
|   |   +---void
|   |   +--- 
|   |   +---*
|   |   +---tag
|   |   +---,
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---int
|   |   +--- 
|   |   +---when
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function getRetainCount
|   |   +---
@abstract Implement abstract but should no dynamic allocation is allowed 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---int
|   +--- 
|   +---getRetainCount
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---    
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---getMetaClass
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function OSMetaClass
|   |   +---
@abstract Constructor for OSMetaClass objects
|   |   +---
@discussion This constructor is protected and cannot not be used to instantiate an OSMetaClass object, i.e. OSMetaClass is an abstract class.  This function stores the currently constructing OSMetaClass instance away for later processing.  See preModLoad and postModLoad.
|   |   +---
@param inClassName cString of the name of the class this meta-class represents.
|   |   +---
@param inSuperClassName cString of the name of the super class.
|   |   +---
@param inClassSize sizeof the class. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-OSMetaClass (HAS STATE)
|   +---(
|   |   +---const
|   |   +--- 
|   |   +---char
|   |   +--- 
|   |   +---*
|   |   +---inClassName
|   |   +---,
|   |   +---[ NEWLINE ]
|   |   +---                
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +---inSuperClass
|   |   +---,
|   |   +---[ NEWLINE ]
|   |   +---                
|   |   +---unsigned
|   |   +--- 
|   |   +---int
|   |   +--- 
|   |   +---inClassSize
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function ~OSMetaClass
|   |   +---
@abstract Destructor for OSMetaClass objects
|   |   +---
@discussion If this function is called it means that the object code that implemented this class is actually in the process of unloading.  The destructor removes all reference's to the subclass from the runtime type information system. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---~
|   +---OSMetaClass
|   +---(
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---    
|   +---//
|   |   +--- 
|   |   +---Needs to be overriden as NULL as all OSMetaClass objects are allocated
|   |   +---[ NEWLINE ]
|   +---    
|   +---//
|   |   +--- 
|   |   +---statically at compile time, don't accidently try to free them.
|   |   +---[ NEWLINE ]
|   +---    
|   +-*-void (HAS STATE)
|   +--- 
|   +---operator
|   +--- 
|   +---delete
|   +---(
|   |   +---void
|   |   +--- 
|   |   +---*
|   |   +---,
|   |   +--- 
|   |   +---size_t
|   |   +---)
|   +--- 
|   +---;
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---public
|   +---:
|   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---metaClass
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function preModLoad
|   |   +---
@abstract Prepare the runtime type system for the load of a module.
|   |   +---
@discussion Prepare the runtime type information system for the loading of new all meta-classes constructed between now and the next postModLoad.  preModLoad grab's a lock so that the runtime type information system loading can be protected, the lock is released by the postModLoad function.  Any OSMetaClass that is constructed between the bracketing pre and post calls will be assosiated with the module name.
|   |   +---
@param kmodName globally unique cString name of the kernel module being loaded. 
|   |   +---
@result If success full return a handle to be used in later calls 0 otherwise. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---*
|   +---preModLoad
|   +---(
|   |   +---const
|   |   +--- 
|   |   +---char
|   |   +--- 
|   |   +---*
|   |   +---kmodName
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function checkModLoad
|   |   +---
@abstract Check if the current load attempt is still OK.
|   |   +---
@param loadHandle Handle returned when a successful call to preModLoad is made.
|   |   +---
@result true if no error's are outstanding and the system is primed to recieve more objects. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---bool
|   +--- 
|   +---checkModLoad
|   +---(
|   |   +---void
|   |   +--- 
|   |   +---*
|   |   +---loadHandle
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function postModLoad
|   |   +---
@abstract Finish postprocessing on a kernel module's meta-classes.
|   |   +---
@discussion As the order of static object construction is undefined it is necessary to process the constructors in two phases.  These phases rely on global information that is created be the preparation step, preModLoad, which also guarantees single threading between multiple modules.  Phase one was the static construction of each meta-class object one by one withing the context prepared by the preModLoad call.  postModLoad is the second phase of processing.  Inserts links all of the super class inheritance chains up, inserts the meta-classes into the global register of classes and records for each meta-class which kernel module caused it's construction.  Finally it cleans up the temporary storage and releases the single threading lock and returns whatever error has been recorded in during the construction phase or the post processing phase. 
|   |   +---
@param loadHandle Handle returned when a successful call to preModLoad is made.
|   |   +---
@result Error code of the first error encountered. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---OSReturn
|   +--- 
|   +---postModLoad
|   +---(
|   |   +---void
|   |   +--- 
|   |   +---*
|   |   +---loadHandle
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function modHasInstance
|   |   +---
@abstract Do any of the objects represented by OSMetaClass and associated with the given kernel module name have instances?
|   |   +---
@discussion Check all meta-classes associated with the module name and check their instance counts.  This function is used to check to see if a module can be unloaded.  Obviously if an instance is still outstanding it isn't safe to unload the code that relies on that object.
|   |   +---
@param kmodName cString of the kernel module name.
|   |   +---
@result true if there are any current instances of any class in the module.
|   |   +---[ NEWLINE ]
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---bool
|   +--- 
|   +---modHasInstance
|   +---(
|   |   +---const
|   |   +--- 
|   |   +---char
|   |   +--- 
|   |   +---*
|   |   +---kmodName
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function reportModInstances
|   |   +---
@abstract Log any object that has instances in a module.
|   |   +---
@discussion When a developer ask for a module to be unloaded but the unload fails due to outstanding instances.  This function will report which classes still have instances.  It is intended mostly for developers to find problems with unloading classes and will be called automatically by 'verbose' unloads.
|   |   +---
@param kmodName cString of the kernel module name. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---reportModInstances
|   +---(
|   |   +---const
|   |   +--- 
|   |   +---char
|   |   +--- 
|   |   +---*
|   |   +---kmodName
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function considerUnloads
|   |   +---
@abstract Schedule module unloading.
|   |   +---
@discussion Schedule unused modules to be unloaded; called when IOKit matching goes idle. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---considerUnloads
|   +---(
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function allocClassWithName
|   |   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   |   +---
@param name Name of the desired class. 
|   |   +---
@result pointer to an new object, 0 if not found or so memory. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---allocClassWithName
|   +---(
|   |   +---const
|   |   +--- 
|   |   +---OSSymbol
|   |   +--- 
|   |   +---*
|   |   +---name
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function allocClassWithName
|   |   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   |   +---
@param name Name of the desired class. 
|   |   +---
@result pointer to an new object, 0 if not found or so memory. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---allocClassWithName
|   +---(
|   |   +---const
|   |   +--- 
|   |   +---OSString
|   |   +--- 
|   |   +---*
|   |   +---name
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function allocClassWithName
|   |   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   |   +---
@param name Name of the desired class. 
|   |   +---
@result pointer to an new object, 0 if not found or so memory. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---allocClassWithName
|   +---(
|   |   +---const
|   |   +--- 
|   |   +---char
|   |   +--- 
|   |   +---*
|   |   +---name
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function checkMetaCastWithName
|   |   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   |   +---
@param name Name of the desired class or super class. 
|   |   +---
@param in object to be introspected. 
|   |   +---
@result in parameter if cast valid, 0 otherwise. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---[ NEWLINE ]
|   +---        
|   +---checkMetaCastWithName
|   +---(
|   |   +---const
|   |   +--- 
|   |   +---OSSymbol
|   |   +--- 
|   |   +---*
|   |   +---name
|   |   +---,
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClassBase
|   |   +--- 
|   |   +---*
|   |   +---in
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function checkMetaCastWithName
|   |   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   |   +---
@param name Name of the desired class or super class.
|   |   +---
@param in object to be introspected.
|   |   +---
@result in parameter if cast valid, 0 otherwise. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---[ NEWLINE ]
|   +---        
|   +---checkMetaCastWithName
|   +---(
|   |   +---const
|   |   +--- 
|   |   +---OSString
|   |   +--- 
|   |   +---*
|   |   +---name
|   |   +---,
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClassBase
|   |   +--- 
|   |   +---*
|   |   +---in
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function checkMetaCastWithName
|   |   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   |   +---
@param name Name of the desired class or super class.
|   |   +---
@param in object to be introspected.
|   |   +---
@result in parameter if cast valid, 0 otherwise. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---[ NEWLINE ]
|   +---        
|   +---checkMetaCastWithName
|   +---(
|   |   +---const
|   |   +--- 
|   |   +---char
|   |   +--- 
|   |   +---*
|   |   +---name
|   |   +---,
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClassBase
|   |   +--- 
|   |   +---*
|   |   +---in
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function instanceConstructed
|   |   +---
@abstract Counts the instances of the class behind this metaclass.
|   |   +---
@discussion Every non-abstract class that inherits from OSObject has a default constructor that calls it's own meta-class' instanceConstructed function.  This constructor is defined by the OSDefineMetaClassAndStructors macro (qv) that all OSObject subclasses must use.  Also if the instance count goes from 0 to 1, ie the first instance, then increment the instance count of the super class 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-void (HAS STATE)
|   +--- 
|   +---instanceConstructed
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function instanceDestructed
|   |   +---
@abstract Removes one instance of the class behind this metaclass.
|   |   +---
@discussion OSObject's free function calls this method just before it does a 'delete this' on itself.  If the instance count transitions from 1 to 0, i.e. the last object, then one instance of the superclasses is also removed. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-void (HAS STATE)
|   +--- 
|   +---instanceDestructed
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function checkMetaCast
|   |   +---
@abstract Ask a OSMetaClass instance if the given object is either an instance of it or an instance of a subclass of it.
|   |   +---
@param check Pointer of object to introspect.
|   |   +---
@result check parameter if cast valid, 0 otherwise. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-OSMetaClassBase (HAS STATE)
|   +--- 
|   +---*
|   +---checkMetaCast
|   +---(
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClassBase
|   |   +--- 
|   |   +---*
|   |   +---check
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function getInstanceCount
|   |   +---
@abstract How many instances of the class have been created.
|   |   +---
@result Count of the number of instances. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-unsigned (HAS STATE)
|   +--- 
|   +---int
|   +--- 
|   +---getInstanceCount
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function getSuperClass
|   |   +---
@abstract 'Get'ter for the super class.
|   |   +---
@result Pointer to superclass, chain ends with 0 for OSObject. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-const (HAS STATE)
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---getSuperClass
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function getKmodName
|   |   +---
@abstract 'Get'ter for the name of the kmod.
|   |   +---
@result OSSymbol representing the kmod name. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---        
|   +-*-const (HAS STATE)
|   +--- 
|   +---OSSymbol
|   +--- 
|   +---*
|   +---getKmodName
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function getClassName
|   |   +---
@abstract 'Get'ter for class name.
|   |   +---
@result cString of the class name. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-const (HAS STATE)
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---getClassName
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function getClassSize
|   |   +---
@abstract 'Get'ter for sizeof(class).
|   |   +---
@result sizeof of class that this OSMetaClass instance represents. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-unsigned (HAS STATE)
|   +--- 
|   +---int
|   +--- 
|   +---getClassSize
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function alloc
|   |   +---
@abstract Allocate an instance of the class that this OSMetaClass instance represents.
|   |   +---
@discussion This alloc function is analogous to the old ObjC class alloc method.  Typically not used by clients as the static function allocClassWithName is more generally useful.  Infact that function is implemented in terms of this  virtual function.  All subclass's of OSMetaClass must implement this function but that is what the OSDefineMetaClassAndStructor's families of macros does for the developer automatically. 
|   |   +---
@result Pointer to a new object with a retain count of 1. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---    
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---alloc
|   +---(
|   |   +---)
|   +--- 
|   +---const
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function OSDeclareCommonStructors
|   |   +---
@abstract Basic helper macro for the OSDeclare for Default and Abstract macros, qv.  DO NOT USE.
|   |   +---
@param className Name of class. NO QUOTES. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +-*-#define (HAS STATE)
|   |   +--- 
|   |   +---OSDeclareCommonStructors
|   |   +---(
|   |   +---className
|   |   +---)
|   |   +---                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---private
|   |   +---:
|   |   +---                                                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---static
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---superClass
|   |   +---;
|   |   +---                        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---public
|   |   +---:
|   |   +---                                                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---static
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---metaClass
|   |   +---;
|   |   +---                        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---static
|   |   +--- 
|   |   +---class
|   |   +--- 
|   |   +---MetaClass
|   |   +--- 
|   |   +---:
|   |   +--- 
|   |   +---public
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---{
|   |   +---                        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---public
|   |   +---:
|   |   +---                                                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---            
|   |   +---MetaClass
|   |   +---(
|   |   +---)
|   |   +---;
|   |   +---                                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---            
|   |   +---virtual
|   |   +--- 
|   |   +---OSObject
|   |   +--- 
|   |   +---*
|   |   +---alloc
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +---;
|   |   +---                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---}
|   |   +--- 
|   |   +---gMetaClass
|   |   +---;
|   |   +---                                                        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---friend
|   |   +--- 
|   |   +---class
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +---;
|   |   +---                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---virtual
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---getMetaClass
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +---;
|   |   +---                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---protected
|   |   +---:
|   |   +---                                                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---className
|   |   +--- 
|   |   +---(
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +---)
|   |   +---;
|   |   +---                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---virtual
|   |   +--- 
|   |   +---~
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---(
|   |   +---)
|   |   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function OSDeclareDefaultStructors
|   |   +---
@abstract One of the macro's used in the class declaration of all subclasses of OSObject, declares runtime type information data and interfaces. 
|   |   +---
@discussion Macro used in the class declaration all subclasses of OSObject, declares runtime type information data and interfaces.  By convention it should be 'called' immediately after the opening brace in a class declaration.  It leaves the current privacy state as 'protected:'.
|   |   +---
@param className Name of class. NO QUOTES. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +-*-#define (HAS STATE)
|   |   +--- 
|   |   +---OSDeclareDefaultStructors
|   |   +---(
|   |   +---className
|   |   +---)
|   |   +---                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---         
|   |   +---private
|   |   +---:
|   |   +---                                                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---static
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---superClass
|   |   +---;
|   |   +---                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---public
|   |   +---:
|   |   +---                                                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---static
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---metaClass
|   |   +---;
|   |   +---                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---static
|   |   +--- 
|   |   +---class
|   |   +--- 
|   |   +---MetaClass
|   |   +--- 
|   |   +---:
|   |   +--- 
|   |   +---public
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---{
|   |   +---                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---public
|   |   +---:
|   |   +---                                                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---            
|   |   +---MetaClass
|   |   +---(
|   |   +---)
|   |   +---;
|   |   +---                                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---            
|   |   +---virtual
|   |   +--- 
|   |   +---OSObject
|   |   +--- 
|   |   +---*
|   |   +---alloc
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +---;
|   |   +---                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---}
|   |   +--- 
|   |   +---gMetaClass
|   |   +---;
|   |   +---                                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---friend
|   |   +--- 
|   |   +---class
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +---;
|   |   +---                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---virtual
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---getMetaClass
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +---;
|   |   +---                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---protected
|   |   +---:
|   |   +---                                                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---className
|   |   +--- 
|   |   +---(
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +---)
|   |   +---;
|   |   +---                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---virtual
|   |   +--- 
|   |   +---~
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---(
|   |   +---)
|   |   +---;
|   |   +---                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---public
|   |   +---:
|   |   +---                                                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---className
|   |   +--- 
|   |   +---(
|   |   +---)
|   |   +---;
|   |   +---                                                        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---protected
|   |   +---:
|   |   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function OSDeclareAbstractStructors
|   |   +---
@abstract One of the macro's used in the class declaration of all subclasses of OSObject, declares runtime type information data and interfaces. 
|   |   +---
@discussion This macro is used when the class being declared has one or more '= 0' pure virtual methods and thus it is illegal to create an instance of this class.  It leaves the current privacy state as 'protected:'.
|   |   +---
@param className Name of class. NO QUOTES. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +-*-#define (HAS STATE)
|   |   +--- 
|   |   +---OSDeclareAbstractStructors
|   |   +---(
|   |   +---className
|   |   +---)
|   |   +---                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---         
|   |   +---private
|   |   +---:
|   |   +---                                                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---static
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---superClass
|   |   +---;
|   |   +---                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---public
|   |   +---:
|   |   +---                                                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---static
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---metaClass
|   |   +---;
|   |   +---                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---static
|   |   +--- 
|   |   +---class
|   |   +--- 
|   |   +---MetaClass
|   |   +--- 
|   |   +---:
|   |   +--- 
|   |   +---public
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---{
|   |   +---                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---public
|   |   +---:
|   |   +---                                                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---            
|   |   +---MetaClass
|   |   +---(
|   |   +---)
|   |   +---;
|   |   +---                                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---            
|   |   +---virtual
|   |   +--- 
|   |   +---OSObject
|   |   +--- 
|   |   +---*
|   |   +---alloc
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +---;
|   |   +---                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---}
|   |   +--- 
|   |   +---gMetaClass
|   |   +---;
|   |   +---                                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---friend
|   |   +--- 
|   |   +---class
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +---;
|   |   +---                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---virtual
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---getMetaClass
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +---;
|   |   +---                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---protected
|   |   +---:
|   |   +---                                                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---className
|   |   +--- 
|   |   +---(
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +---)
|   |   +---;
|   |   +---                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---virtual
|   |   +--- 
|   |   +---~
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---(
|   |   +---)
|   |   +---;
|   |   +---                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---private
|   |   +---:
|   |   +---                                                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---className
|   |   +--- 
|   |   +---(
|   |   +---)
|   |   +---;
|   |   +--- 
|   |   +---/*
|   |   |   +--- 
|   |   |   +---Make primary constructor private in abstract 
|   |   |   +---*/
|   |   +--- 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---protected
|   |   +---:
|   |   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function OSDefineMetaClassWithInit
|   |   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   |   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   |   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   |   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +-*-#define (HAS STATE)
|   |   +--- 
|   |   +---OSDefineMetaClassWithInit
|   |   +---(
|   |   +---className
|   |   +---,
|   |   +--- 
|   |   +---superClassName
|   |   +---,
|   |   +--- 
|   |   +---init
|   |   +---)
|   |   +---        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---/*
|   |   |   +--- 
|   |   |   +---Class global data 
|   |   |   +---*/
|   |   +---                                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---metaClass
|   |   +--- 
|   |   +---=
|   |   +---                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---&
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                                        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---superClass
|   |   +--- 
|   |   +---=
|   |   +---                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---&
|   |   +--- 
|   |   +---superClassName
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                                        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---/*
|   |   |   +--- 
|   |   |   +---Class member functions 
|   |   |   +---*/
|   |   +---                                        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +--- 
|   |   +---className
|   |   +---(
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +---meta
|   |   +---)
|   |   +---                        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---            
|   |   +---:
|   |   +--- 
|   |   +---superClassName
|   |   +--- 
|   |   +---(
|   |   +---meta
|   |   +---)
|   |   +--- 
|   |   +---{
|   |   +--- 
|   |   +---}
|   |   +---                                        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---~
|   |   +--- 
|   |   +---className
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---{
|   |   +--- 
|   |   +---}
|   |   +---                                        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---getMetaClass
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +---                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +--- 
|   |   +---return
|   |   +--- 
|   |   +---&
|   |   +---gMetaClass
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---                                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---/*
|   |   |   +--- 
|   |   |   +---The ::MetaClass constructor 
|   |   |   +---*/
|   |   +---                                        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +---::
|   |   +---MetaClass
|   |   +---(
|   |   +---)
|   |   +---                                        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---:
|   |   +--- 
|   |   +---OSMetaClass
|   |   +---(
|   |   +---#
|   |   +---className
|   |   +---,
|   |   +--- 
|   |   +---className
|   |   +---::
|   |   +---superClass
|   |   +---,
|   |   +--- 
|   |   +---sizeof
|   |   +---(
|   |   +---className
|   |   +---)
|   |   +---)
|   |   +--- 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +--- 
|   |   +---init
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function OSDefineAbstractStructors
|   |   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   |   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   |   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +-*-#define (HAS STATE)
|   |   +--- 
|   |   +---OSDefineAbstractStructors
|   |   +---(
|   |   +---className
|   |   +---,
|   |   +--- 
|   |   +---superClassName
|   |   +---)
|   |   +---                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---OSObject
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +---::
|   |   +---alloc
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---{
|   |   +--- 
|   |   +---return
|   |   +--- 
|   |   +---0
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function OSDefineDefaultStructors
|   |   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   |   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   |   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +-*-#define (HAS STATE)
|   |   +--- 
|   |   +---OSDefineDefaultStructors
|   |   +---(
|   |   +---className
|   |   +---,
|   |   +--- 
|   |   +---superClassName
|   |   +---)
|   |   +---                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---OSObject
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +---::
|   |   +---alloc
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +---                        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +--- 
|   |   +---return
|   |   +--- 
|   |   +---new
|   |   +--- 
|   |   +---className
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---                                        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---:
|   |   +--- 
|   |   +---superClassName
|   |   +--- 
|   |   +---(
|   |   +---&
|   |   +---gMetaClass
|   |   +---)
|   |   +---                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +--- 
|   |   +---gMetaClass
|   |   +---.
|   |   +---instanceConstructed
|   |   +---(
|   |   +---)
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function OSDefineMetaClassAndAbstractStructorsWithInit
|   |   +---
@abstract Primary definition macro for all abstract classes that a subclasses of OSObject.
|   |   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that is an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.  Once the OSMetaClass has been constructed, at load time, call the init routine.  NB you can not rely on the order of execution of the init routines.
|   |   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   |   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   |   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +-*-#define (HAS STATE)
|   |   +--- 
|   |   +---OSDefineMetaClassAndAbstractStructorsWithInit
|   |   +---(
|   |   +---className
|   |   +---,
|   |   +--- 
|   |   +---superClassName
|   |   +---,
|   |   +--- 
|   |   +---init
|   |   +---)
|   |   +--- 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---     
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---metaClass
|   |   +--- 
|   |   +---=
|   |   +---                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---&
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---superClass
|   |   +--- 
|   |   +---=
|   |   +---                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---&
|   |   +---  
|   |   +---superClassName
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---                                             
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +--- 
|   |   +---className
|   |   +---(
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +---meta
|   |   +---)
|   |   +---                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---            
|   |   +---:
|   |   +---  
|   |   +---superClassName
|   |   +--- 
|   |   +---(
|   |   +---meta
|   |   +---)
|   |   +--- 
|   |   +---{
|   |   +--- 
|   |   +---}
|   |   +---                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---~
|   |   +--- 
|   |   +---className
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---{
|   |   +--- 
|   |   +---}
|   |   +---                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---getMetaClass
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +---                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +--- 
|   |   +---return
|   |   +--- 
|   |   +---&
|   |   +---gMetaClass
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---                                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---                                             
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +---::
|   |   +---MetaClass
|   |   +---(
|   |   +---)
|   |   +---                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---:
|   |   +--- 
|   |   +---OSMetaClass
|   |   +---(
|   |   +---"
|   |   +---className
|   |   +---"
|   |   +---,
|   |   +--- 
|   |   +---className
|   |   +---::
|   |   +---superClass
|   |   +---,
|   |   +--- 
|   |   +---sizeof
|   |   +---(
|   |   +---className
|   |   +---)
|   |   +---)
|   |   +---  
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +---  
|   |   +---init
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---     
|   |   +---OSObject
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +---::
|   |   +---alloc
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---{
|   |   +--- 
|   |   +---return
|   |   +--- 
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function OSDefineMetaClassAndStructorsWithInit
|   |   +---
@abstract See OSDefineMetaClassAndStructors
|   |   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that isn't an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.  Once the OSMetaClass has been constructed, at load time, call the init routine.  NB you can not rely on the order of execution of the init routines.
|   |   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   |   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   |   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +-*-#define (HAS STATE)
|   |   +--- 
|   |   +---OSDefineMetaClassAndStructorsWithInit
|   |   +---(
|   |   +---className
|   |   +---,
|   |   +--- 
|   |   +---superClassName
|   |   +---,
|   |   +--- 
|   |   +---init
|   |   +---)
|   |   +--- 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---     
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---metaClass
|   |   +--- 
|   |   +---=
|   |   +---                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---&
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---superClass
|   |   +--- 
|   |   +---=
|   |   +---                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---&
|   |   +---  
|   |   +---superClassName
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---                                             
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +--- 
|   |   +---className
|   |   +---(
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +---meta
|   |   +---)
|   |   +---                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---            
|   |   +---:
|   |   +---  
|   |   +---superClassName
|   |   +--- 
|   |   +---(
|   |   +---meta
|   |   +---)
|   |   +--- 
|   |   +---{
|   |   +--- 
|   |   +---}
|   |   +---                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---~
|   |   +--- 
|   |   +---className
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---{
|   |   +--- 
|   |   +---}
|   |   +---                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---getMetaClass
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +---                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +--- 
|   |   +---return
|   |   +--- 
|   |   +---&
|   |   +---gMetaClass
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---                                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---                                             
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +---::
|   |   +---MetaClass
|   |   +---(
|   |   +---)
|   |   +---                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---:
|   |   +--- 
|   |   +---OSMetaClass
|   |   +---(
|   |   +---"
|   |   +---className
|   |   +---"
|   |   +---,
|   |   +--- 
|   |   +---className
|   |   +---::
|   |   +---superClass
|   |   +---,
|   |   +--- 
|   |   +---sizeof
|   |   +---(
|   |   +---className
|   |   +---)
|   |   +---)
|   |   +---  
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +---  
|   |   +---init
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---     
|   |   +---OSObject
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +---::
|   |   +---alloc
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +---                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +--- 
|   |   +---return
|   |   +--- 
|   |   +---new
|   |   +--- 
|   |   +---className
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---:
|   |   +---  
|   |   +---superClassName
|   |   +--- 
|   |   +---(
|   |   +---&
|   |   +---gMetaClass
|   |   +---)
|   |   +---                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +--- 
|   |   +---gMetaClass
|   |   +---.
|   |   +---instanceConstructed
|   |   +---(
|   |   +---)
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +--- 
|   |   +---Helpers 
|   |   +---*/
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function OSDefineMetaClass
|   |   +---
@abstract Define an OSMetaClass instance, used for backward compatiblility only.
|   |   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   |   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +-*-#define (HAS STATE)
|   |   +--- 
|   |   +---OSDefineMetaClass
|   |   +---(
|   |   +---className
|   |   +---,
|   |   +--- 
|   |   +---superClassName
|   |   +---)
|   |   +---                        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---     
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---metaClass
|   |   +--- 
|   |   +---=
|   |   +---                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---&
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---superClass
|   |   +--- 
|   |   +---=
|   |   +---                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---&
|   |   +---  
|   |   +---superClassName
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---                                             
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +--- 
|   |   +---className
|   |   +---(
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +---meta
|   |   +---)
|   |   +---                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---            
|   |   +---:
|   |   +---  
|   |   +---superClassName
|   |   +--- 
|   |   +---(
|   |   +---meta
|   |   +---)
|   |   +--- 
|   |   +---{
|   |   +--- 
|   |   +---}
|   |   +---                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---~
|   |   +--- 
|   |   +---className
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---{
|   |   +--- 
|   |   +---}
|   |   +---                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---getMetaClass
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +---                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +--- 
|   |   +---return
|   |   +--- 
|   |   +---&
|   |   +---gMetaClass
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---                                                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---                                             
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +---::
|   |   +---MetaClass
|   |   +---(
|   |   +---)
|   |   +---                                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---:
|   |   +--- 
|   |   +---OSMetaClass
|   |   +---(
|   |   +---"
|   |   +---className
|   |   +---"
|   |   +---,
|   |   +--- 
|   |   +---className
|   |   +---::
|   |   +---superClass
|   |   +---,
|   |   +--- 
|   |   +---sizeof
|   |   +---(
|   |   +---className
|   |   +---)
|   |   +---)
|   |   +---  
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +---  
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function OSDefineMetaClassAndStructors
|   |   +---
@abstract Define an OSMetaClass subclass and the runtime system routines.
|   |   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that isn't an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.
|   |   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   |   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +-*-#define (HAS STATE)
|   |   +--- 
|   |   +---OSDefineMetaClassAndStructors
|   |   +---(
|   |   +---className
|   |   +---,
|   |   +--- 
|   |   +---superClassName
|   |   +---)
|   |   +---        
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---     
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---metaClass
|   |   +--- 
|   |   +---=
|   |   +---                           
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---&
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---superClass
|   |   +--- 
|   |   +---=
|   |   +---                           
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---&
|   |   +---   
|   |   +---superClassName
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---                                              
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +--- 
|   |   +---className
|   |   +---(
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +---meta
|   |   +---)
|   |   +---                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---            
|   |   +---:
|   |   +---   
|   |   +---superClassName
|   |   +--- 
|   |   +---(
|   |   +---meta
|   |   +---)
|   |   +--- 
|   |   +---{
|   |   +--- 
|   |   +---}
|   |   +---                                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---~
|   |   +--- 
|   |   +---className
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---{
|   |   +--- 
|   |   +---}
|   |   +---                                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---getMetaClass
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +---                  
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +--- 
|   |   +---return
|   |   +--- 
|   |   +---&
|   |   +---gMetaClass
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---                                                  
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---                                              
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +---::
|   |   +---MetaClass
|   |   +---(
|   |   +---)
|   |   +---                                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---:
|   |   +--- 
|   |   +---OSMetaClass
|   |   +---(
|   |   +---"
|   |   +---className
|   |   +---"
|   |   +---,
|   |   +--- 
|   |   +---className
|   |   +---::
|   |   +---superClass
|   |   +---,
|   |   +--- 
|   |   +---sizeof
|   |   +---(
|   |   +---className
|   |   +---)
|   |   +---)
|   |   +---   
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +---   
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---     
|   |   +---OSObject
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +---::
|   |   +---alloc
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +---                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +--- 
|   |   +---return
|   |   +--- 
|   |   +---new
|   |   +--- 
|   |   +---className
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---                                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---:
|   |   +---   
|   |   +---superClassName
|   |   +--- 
|   |   +---(
|   |   +---&
|   |   +---gMetaClass
|   |   +---)
|   |   +---                  
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +--- 
|   |   +---gMetaClass
|   |   +---.
|   |   +---instanceConstructed
|   |   +---(
|   |   +---)
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---/*
|   |   +---!
|   |   +--- @function OSDefineMetaClassAndAbstractStructors
|   |   +---
@abstract Define an OSMetaClass subclass and the runtime system routines.
|   |   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that is an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.
|   |   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   |   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   |   +---*/
|   +---[ NEWLINE ]
|   +-*-#define (HAS STATE)
|   |   +--- 
|   |   +---OSDefineMetaClassAndAbstractStructors
|   |   +---(
|   |   +---className
|   |   +---,
|   |   +--- 
|   |   +---superClassName
|   |   +---)
|   |   +--- 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---     
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---metaClass
|   |   +--- 
|   |   +---=
|   |   +---                           
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---&
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---superClass
|   |   +--- 
|   |   +---=
|   |   +---                           
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---&
|   |   +---   
|   |   +---superClassName
|   |   +--- 
|   |   +---::
|   |   +---gMetaClass
|   |   +---;
|   |   +---                                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---                                              
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +--- 
|   |   +---className
|   |   +---(
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +---meta
|   |   +---)
|   |   +---                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---            
|   |   +---:
|   |   +---   
|   |   +---superClassName
|   |   +--- 
|   |   +---(
|   |   +---meta
|   |   +---)
|   |   +--- 
|   |   +---{
|   |   +--- 
|   |   +---}
|   |   +---                                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---~
|   |   +--- 
|   |   +---className
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---{
|   |   +--- 
|   |   +---}
|   |   +---                                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---const
|   |   +--- 
|   |   +---OSMetaClass
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---getMetaClass
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +---                  
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +--- 
|   |   +---return
|   |   +--- 
|   |   +---&
|   |   +---gMetaClass
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---                                                  
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---                                              
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +---::
|   |   +---MetaClass
|   |   +---(
|   |   +---)
|   |   +---                                          
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---:
|   |   +--- 
|   |   +---OSMetaClass
|   |   +---(
|   |   +---"
|   |   +---className
|   |   +---"
|   |   +---,
|   |   +--- 
|   |   +---className
|   |   +---::
|   |   +---superClass
|   |   +---,
|   |   +--- 
|   |   +---sizeof
|   |   +---(
|   |   +---className
|   |   +---)
|   |   +---)
|   |   +---   
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---        
|   |   +---{
|   |   +---   
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---                 
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---     
|   |   +---OSObject
|   |   +--- 
|   |   +---*
|   |   +--- 
|   |   +---className
|   |   +--- 
|   |   +---::
|   |   +---MetaClass
|   |   +---::
|   |   +---alloc
|   |   +---(
|   |   +---)
|   |   +--- 
|   |   +---const
|   |   +--- 
|   |   +---{
|   |   +--- 
|   |   +---return
|   |   +--- 
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---    
|   +---//
|   |   +--- 
|   |   +---Dynamic vtable patchup support routines and types
|   |   +---[ NEWLINE ]
|   +---    
|   +-*-void (HAS STATE)
|   +--- 
|   +---reservedCalled
|   +---(
|   |   +---int
|   |   +--- 
|   |   +---ind
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +-*-#define (HAS STATE)
|   |   +--- 
|   |   +---OSMetaClassDeclareReservedUnused
|   |   +---(
|   |   +---classname
|   |   +---,
|   |   +--- 
|   |   +---index
|   |   +---)
|   |   +---                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---private
|   |   +---:
|   |   +---                                                                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---APPLE_KEXT_PAD_METHOD
|   |   +--- 
|   |   +---void
|   |   +--- 
|   |   +---_RESERVED
|   |   +--- 
|   |   +---#
|   |   +---#
|   |   +--- 
|   |   +---classname
|   |   +--- 
|   |   +---#
|   |   +---#
|   |   +--- 
|   |   +---index
|   |   +--- 
|   |   +---(
|   |   +---)
|   |   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +-*-#define (HAS STATE)
|   |   +--- 
|   |   +---OSMetaClassDeclareReservedUsed
|   |   +---(
|   |   +---classname
|   |   +---,
|   |   +--- 
|   |   +---index
|   |   +---)
|   |   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +-*-#define (HAS STATE)
|   |   +--- 
|   |   +---OSMetaClassDefineReservedUnused
|   |   +---(
|   |   +---classname
|   |   +---,
|   |   +--- 
|   |   +---index
|   |   +---)
|   |   +---                
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---void
|   |   +--- 
|   |   +---classname
|   |   +--- 
|   |   +---::
|   |   +---_RESERVED
|   |   +--- 
|   |   +---#
|   |   +---#
|   |   +--- 
|   |   +---classname
|   |   +--- 
|   |   +---#
|   |   +---#
|   |   +--- 
|   |   +---index
|   |   +--- 
|   |   +---(
|   |   +---)
|   |   +---                         
|   |   +---\
|   |   +---[ NEWLINE ]
|   |   +---    
|   |   +---{
|   |   +--- 
|   |   +---APPLE_KEXT_PAD_IMPL
|   |   +---(
|   |   +---index
|   |   +---)
|   |   +---;
|   |   +--- 
|   |   +---}
|   |   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +-*-#define (HAS STATE)
|   |   +--- 
|   |   +---OSMetaClassDefineReservedUsed
|   |   +---(
|   |   +---classname
|   |   +---,
|   |   +--- 
|   |   +---index
|   |   +---)
|   |   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---    
|   +---//
|   |   +--- 
|   |   +---IOKit debug internal routines.
|   |   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---printInstanceCounts
|   +---(
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---serializeClassDictionary
|   +---(
|   |   +---OSDictionary
|   |   +--- 
|   |   +---*
|   |   +---dict
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---private
|   +---:
|   +---[ NEWLINE ]
|   +---    
|   +---//
|   |   +--- 
|   |   +---Obsolete APIs
|   |   +---[ NEWLINE ]
|   +---    
|   +-*-static (HAS STATE)
|   +--- 
|   +---OSDictionary
|   +--- 
|   +---*
|   +---getClassDictionary
|   +---(
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---    
|   +-*-virtual (HAS STATE)
|   +--- 
|   +---bool
|   +--- 
|   +---serialize
|   +---(
|   |   +---OSSerialize
|   |   +--- 
|   |   +---*
|   |   +---s
|   |   +---)
|   +--- 
|   +---const
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---[ NEWLINE ]
|   +---    
|   +---//
|   |   +--- 
|   |   +---Virtual Padding functions for MetaClass's
|   |   +---[ NEWLINE ]
|   +---                   
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---[ NEWLINE ]
|   +---    
|   +-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---_RESERVED
|   +---  
|   +---OSMetaClass
|   +---   
|   +---0
|   +--- 
|   +---(
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---                   
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---[ NEWLINE ]
|   +---    
|   +-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---_RESERVED
|   +---  
|   +---OSMetaClass
|   +---   
|   +---1
|   +--- 
|   +---(
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---                   
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---[ NEWLINE ]
|   +---    
|   +-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---_RESERVED
|   +---  
|   +---OSMetaClass
|   +---   
|   +---2
|   +--- 
|   +---(
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---                   
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---[ NEWLINE ]
|   +---    
|   +-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---_RESERVED
|   +---  
|   +---OSMetaClass
|   +---   
|   +---3
|   +--- 
|   +---(
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---                   
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---[ NEWLINE ]
|   +---    
|   +-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---_RESERVED
|   +---  
|   +---OSMetaClass
|   +---   
|   +---4
|   +--- 
|   +---(
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---                   
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---[ NEWLINE ]
|   +---    
|   +-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---_RESERVED
|   +---  
|   +---OSMetaClass
|   +---   
|   +---5
|   +--- 
|   +---(
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---                   
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---[ NEWLINE ]
|   +---    
|   +-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---_RESERVED
|   +---  
|   +---OSMetaClass
|   +---   
|   +---6
|   +--- 
|   +---(
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---                   
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---[ NEWLINE ]
|   +---    
|   +-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
|   +--- 
|   +---void
|   +--- 
|   +---_RESERVED
|   +---  
|   +---OSMetaClass
|   +---   
|   +---7
|   +--- 
|   +---(
|   |   +---)
|   +---;
|   +--- 
|   +---[ NEWLINE ]
|   +---}
+---;
+--- 
+---[ NEWLINE ]
END OF OBJECT


OBJECT: OSMetaClass (HeaderDoc::Function)
+-*-OSMetaClass (HAS STATE)
+---(
|   +---)
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Called by postModLoad
|   +---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function logError
|   +---
@abstract Given an error code log an error string using printf 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---logError
+---(
|   +---OSReturn
|   +--- 
|   +---result
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getMetaClassWithName
|   +---
@abstract Lookup a meta-class in the runtime type information system
|   +---
@param name Name of the desired class's meta-class. 
|   +---
@result pointer to a meta-class object if found, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---const
+--- 
+---OSMetaClass
+--- 
+---*
+---getMetaClassWithName
+---(
|   +---const
|   +--- 
|   +---OSSymbol
|   +--- 
|   +---*
|   +---name
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---protected
+---:
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function retain
|   +---
@abstract Implement abstract but should no dynamic allocation is allowed 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---retain
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function release
|   +---
@abstract Implement abstract but should no dynamic allocation is allowed 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---release
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function release
|   +---
@abstract Implement abstract but should no dynamic allocation is allowed 
|   +---
@param when ignored. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---release
+---(
|   +---int
|   +--- 
|   +---when
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function taggedRetain
|   +---
@abstract Retain a tagged reference in this object.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---taggedRetain
+---(
|   +---const
|   +--- 
|   +---void
|   +--- 
|   +---*
|   +---tag
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function release
|   +---
@abstract Release a tagged reference to this object
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---taggedRelease
+---(
|   +---const
|   +--- 
|   +---void
|   +--- 
|   +---*
|   +---tag
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function release
|   +---
@abstract Release a tagged reference to this object
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---taggedRelease
+---(
|   +---const
|   +--- 
|   +---void
|   +--- 
|   +---*
|   +---tag
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---int
|   +--- 
|   +---when
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getRetainCount
|   +---
@abstract Implement abstract but should no dynamic allocation is allowed 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---int
+--- 
+---getRetainCount
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---const
+--- 
+---OSMetaClass
+--- 
+---*
+--- 
+---getMetaClass
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSMetaClass
|   +---
@abstract Constructor for OSMetaClass objects
|   +---
@discussion This constructor is protected and cannot not be used to instantiate an OSMetaClass object, i.e. OSMetaClass is an abstract class.  This function stores the currently constructing OSMetaClass instance away for later processing.  See preModLoad and postModLoad.
|   +---
@param inClassName cString of the name of the class this meta-class represents.
|   +---
@param inSuperClassName cString of the name of the super class.
|   +---
@param inClassSize sizeof the class. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-OSMetaClass (HAS STATE)
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---inClassName
|   +---,
|   +---[ NEWLINE ]
|   +---                
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---inSuperClass
|   +---,
|   +---[ NEWLINE ]
|   +---                
|   +---unsigned
|   +--- 
|   +---int
|   +--- 
|   +---inClassSize
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function ~OSMetaClass
|   +---
@abstract Destructor for OSMetaClass objects
|   +---
@discussion If this function is called it means that the object code that implemented this class is actually in the process of unloading.  The destructor removes all reference's to the subclass from the runtime type information system. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---~
+---OSMetaClass
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Needs to be overriden as NULL as all OSMetaClass objects are allocated
|   +---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---statically at compile time, don't accidently try to free them.
|   +---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---operator
+--- 
+---delete
+---(
|   +---void
|   +--- 
|   +---*
|   +---,
|   +--- 
|   +---size_t
|   +---)
+--- 
+---;
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---const
+--- 
+---OSMetaClass
+--- 
+---*
+--- 
+---const
+--- 
+---metaClass
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function preModLoad
|   +---
@abstract Prepare the runtime type system for the load of a module.
|   +---
@discussion Prepare the runtime type information system for the loading of new all meta-classes constructed between now and the next postModLoad.  preModLoad grab's a lock so that the runtime type information system loading can be protected, the lock is released by the postModLoad function.  Any OSMetaClass that is constructed between the bracketing pre and post calls will be assosiated with the module name.
|   +---
@param kmodName globally unique cString name of the kernel module being loaded. 
|   +---
@result If success full return a handle to be used in later calls 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---*
+---preModLoad
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---kmodName
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkModLoad
|   +---
@abstract Check if the current load attempt is still OK.
|   +---
@param loadHandle Handle returned when a successful call to preModLoad is made.
|   +---
@result true if no error's are outstanding and the system is primed to recieve more objects. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---bool
+--- 
+---checkModLoad
+---(
|   +---void
|   +--- 
|   +---*
|   +---loadHandle
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function postModLoad
|   +---
@abstract Finish postprocessing on a kernel module's meta-classes.
|   +---
@discussion As the order of static object construction is undefined it is necessary to process the constructors in two phases.  These phases rely on global information that is created be the preparation step, preModLoad, which also guarantees single threading between multiple modules.  Phase one was the static construction of each meta-class object one by one withing the context prepared by the preModLoad call.  postModLoad is the second phase of processing.  Inserts links all of the super class inheritance chains up, inserts the meta-classes into the global register of classes and records for each meta-class which kernel module caused it's construction.  Finally it cleans up the temporary storage and releases the single threading lock and returns whatever error has been recorded in during the construction phase or the post processing phase. 
|   +---
@param loadHandle Handle returned when a successful call to preModLoad is made.
|   +---
@result Error code of the first error encountered. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSReturn
+--- 
+---postModLoad
+---(
|   +---void
|   +--- 
|   +---*
|   +---loadHandle
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function modHasInstance
|   +---
@abstract Do any of the objects represented by OSMetaClass and associated with the given kernel module name have instances?
|   +---
@discussion Check all meta-classes associated with the module name and check their instance counts.  This function is used to check to see if a module can be unloaded.  Obviously if an instance is still outstanding it isn't safe to unload the code that relies on that object.
|   +---
@param kmodName cString of the kernel module name.
|   +---
@result true if there are any current instances of any class in the module.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---bool
+--- 
+---modHasInstance
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---kmodName
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function reportModInstances
|   +---
@abstract Log any object that has instances in a module.
|   +---
@discussion When a developer ask for a module to be unloaded but the unload fails due to outstanding instances.  This function will report which classes still have instances.  It is intended mostly for developers to find problems with unloading classes and will be called automatically by 'verbose' unloads.
|   +---
@param kmodName cString of the kernel module name. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---reportModInstances
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---kmodName
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function considerUnloads
|   +---
@abstract Schedule module unloading.
|   +---
@discussion Schedule unused modules to be unloaded; called when IOKit matching goes idle. 
|   +---*/
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---considerUnloads
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function allocClassWithName
|   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   +---
@param name Name of the desired class. 
|   +---
@result pointer to an new object, 0 if not found or so memory. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---allocClassWithName
+---(
|   +---const
|   +--- 
|   +---OSSymbol
|   +--- 
|   +---*
|   +---name
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function allocClassWithName
|   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   +---
@param name Name of the desired class. 
|   +---
@result pointer to an new object, 0 if not found or so memory. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---allocClassWithName
+---(
|   +---const
|   +--- 
|   +---OSString
|   +--- 
|   +---*
|   +---name
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function allocClassWithName
|   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   +---
@param name Name of the desired class. 
|   +---
@result pointer to an new object, 0 if not found or so memory. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---allocClassWithName
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---name
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCastWithName
|   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   +---
@param name Name of the desired class or super class. 
|   +---
@param in object to be introspected. 
|   +---
@result in parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSMetaClassBase
+--- 
+---*
+---[ NEWLINE ]
+---        
+---checkMetaCastWithName
+---(
|   +---const
|   +--- 
|   +---OSSymbol
|   +--- 
|   +---*
|   +---name
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---in
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCastWithName
|   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   +---
@param name Name of the desired class or super class.
|   +---
@param in object to be introspected.
|   +---
@result in parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSMetaClassBase
+--- 
+---*
+---[ NEWLINE ]
+---        
+---checkMetaCastWithName
+---(
|   +---const
|   +--- 
|   +---OSString
|   +--- 
|   +---*
|   +---name
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---in
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCastWithName
|   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   +---
@param name Name of the desired class or super class.
|   +---
@param in object to be introspected.
|   +---
@result in parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSMetaClassBase
+--- 
+---*
+---[ NEWLINE ]
+---        
+---checkMetaCastWithName
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---name
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---in
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function instanceConstructed
|   +---
@abstract Counts the instances of the class behind this metaclass.
|   +---
@discussion Every non-abstract class that inherits from OSObject has a default constructor that calls it's own meta-class' instanceConstructed function.  This constructor is defined by the OSDefineMetaClassAndStructors macro (qv) that all OSObject subclasses must use.  Also if the instance count goes from 0 to 1, ie the first instance, then increment the instance count of the super class 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---instanceConstructed
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function instanceDestructed
|   +---
@abstract Removes one instance of the class behind this metaclass.
|   +---
@discussion OSObject's free function calls this method just before it does a 'delete this' on itself.  If the instance count transitions from 1 to 0, i.e. the last object, then one instance of the superclasses is also removed. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---instanceDestructed
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCast
|   +---
@abstract Ask a OSMetaClass instance if the given object is either an instance of it or an instance of a subclass of it.
|   +---
@param check Pointer of object to introspect.
|   +---
@result check parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-OSMetaClassBase (HAS STATE)
+--- 
+---*
+---checkMetaCast
+---(
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---check
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getInstanceCount
|   +---
@abstract How many instances of the class have been created.
|   +---
@result Count of the number of instances. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-unsigned (HAS STATE)
+--- 
+---int
+--- 
+---getInstanceCount
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getSuperClass
|   +---
@abstract 'Get'ter for the super class.
|   +---
@result Pointer to superclass, chain ends with 0 for OSObject. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-const (HAS STATE)
+--- 
+---OSMetaClass
+--- 
+---*
+---getSuperClass
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getKmodName
|   +---
@abstract 'Get'ter for the name of the kmod.
|   +---
@result OSSymbol representing the kmod name. 
|   +---*/
+---[ NEWLINE ]
+---        
+-*-const (HAS STATE)
+--- 
+---OSSymbol
+--- 
+---*
+---getKmodName
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getClassName
|   +---
@abstract 'Get'ter for class name.
|   +---
@result cString of the class name. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-const (HAS STATE)
+--- 
+---char
+--- 
+---*
+---getClassName
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getClassSize
|   +---
@abstract 'Get'ter for sizeof(class).
|   +---
@result sizeof of class that this OSMetaClass instance represents. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-unsigned (HAS STATE)
+--- 
+---int
+--- 
+---getClassSize
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function alloc
|   +---
@abstract Allocate an instance of the class that this OSMetaClass instance represents.
|   +---
@discussion This alloc function is analogous to the old ObjC class alloc method.  Typically not used by clients as the static function allocClassWithName is more generally useful.  Infact that function is implemented in terms of this  virtual function.  All subclass's of OSMetaClass must implement this function but that is what the OSDefineMetaClassAndStructor's families of macros does for the developer automatically. 
|   +---
@result Pointer to a new object with a retain count of 1. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---alloc
+---(
|   +---)
+--- 
+---const
+--- 
+---=
+--- 
+---0
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDeclareCommonStructors
|   +---
@abstract Basic helper macro for the OSDeclare for Default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDeclareCommonStructors
|   +---(
|   +---className
|   +---)
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---superClass
|   +---;
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---metaClass
|   +---;
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---class
|   +--- 
|   +---MetaClass
|   +--- 
|   +---:
|   +--- 
|   +---public
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---{
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---public
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---MetaClass
|   +---(
|   +---)
|   +---;
|   +---                                                
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---virtual
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---}
|   +--- 
|   +---gMetaClass
|   +---;
|   +---                                                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---friend
|   +--- 
|   +---class
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---)
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---~
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDeclareDefaultStructors
|   +---
@abstract One of the macro's used in the class declaration of all subclasses of OSObject, declares runtime type information data and interfaces. 
|   +---
@discussion Macro used in the class declaration all subclasses of OSObject, declares runtime type information data and interfaces.  By convention it should be 'called' immediately after the opening brace in a class declaration.  It leaves the current privacy state as 'protected:'.
|   +---
@param className Name of class. NO QUOTES. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDeclareDefaultStructors
|   +---(
|   +---className
|   +---)
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---         
|   +---private
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---superClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---metaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---class
|   +--- 
|   +---MetaClass
|   +--- 
|   +---:
|   +--- 
|   +---public
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---{
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---MetaClass
|   +---(
|   +---)
|   +---;
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---virtual
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---}
|   +--- 
|   +---gMetaClass
|   +---;
|   +---                                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---friend
|   +--- 
|   +---class
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---)
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---~
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +---                                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDeclareAbstractStructors
|   +---
@abstract One of the macro's used in the class declaration of all subclasses of OSObject, declares runtime type information data and interfaces. 
|   +---
@discussion This macro is used when the class being declared has one or more '= 0' pure virtual methods and thus it is illegal to create an instance of this class.  It leaves the current privacy state as 'protected:'.
|   +---
@param className Name of class. NO QUOTES. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDeclareAbstractStructors
|   +---(
|   +---className
|   +---)
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---         
|   +---private
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---superClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---metaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---class
|   +--- 
|   +---MetaClass
|   +--- 
|   +---:
|   +--- 
|   +---public
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---{
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---MetaClass
|   +---(
|   +---)
|   +---;
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---virtual
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---}
|   +--- 
|   +---gMetaClass
|   +---;
|   +---                                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---friend
|   +--- 
|   +---class
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---)
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---~
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---/*
|   |   +--- 
|   |   +---Make primary constructor private in abstract 
|   |   +---*/
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassWithInit
|   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassWithInit
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---,
|   +--- 
|   +---init
|   +---)
|   +---        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---/*
|   |   +--- 
|   |   +---Class global data 
|   |   +---*/
|   +---                                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---/*
|   |   +--- 
|   |   +---Class member functions 
|   |   +---*/
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +--- 
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---/*
|   |   +--- 
|   |   +---The ::MetaClass constructor 
|   |   +---*/
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---#
|   +---className
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---init
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineAbstractStructors
|   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineAbstractStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +--- 
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---0
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineDefaultStructors
|   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineDefaultStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---new
|   +--- 
|   +---className
|   +---;
|   +--- 
|   +---}
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +--- 
|   +---:
|   +--- 
|   +---superClassName
|   +--- 
|   +---(
|   +---&
|   +---gMetaClass
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---gMetaClass
|   +---.
|   +---instanceConstructed
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndAbstractStructorsWithInit
|   +---
@abstract Primary definition macro for all abstract classes that a subclasses of OSObject.
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that is an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.  Once the OSMetaClass has been constructed, at load time, call the init routine.  NB you can not rely on the order of execution of the init routines.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndAbstractStructorsWithInit
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---,
|   +--- 
|   +---init
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---  
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---  
|   +---init
|   +---;
|   +--- 
|   +---}
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +--- 
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndStructorsWithInit
|   +---
@abstract See OSDefineMetaClassAndStructors
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that isn't an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.  Once the OSMetaClass has been constructed, at load time, call the init routine.  NB you can not rely on the order of execution of the init routines.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndStructorsWithInit
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---,
|   +--- 
|   +---init
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---  
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---  
|   +---init
|   +---;
|   +--- 
|   +---}
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---new
|   +--- 
|   +---className
|   +---;
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +--- 
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---&
|   +---gMetaClass
|   +---)
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---gMetaClass
|   +---.
|   +---instanceConstructed
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +--- 
|   +---Helpers 
|   +---*/
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClass
|   +---
@abstract Define an OSMetaClass instance, used for backward compatiblility only.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClass
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---  
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---  
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndStructors
|   +---
@abstract Define an OSMetaClass subclass and the runtime system routines.
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that isn't an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---        
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---   
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---   
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                  
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---   
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---   
|   +---;
|   +--- 
|   +---}
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---new
|   +--- 
|   +---className
|   +---;
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +--- 
|   +---:
|   +---   
|   +---superClassName
|   +--- 
|   +---(
|   +---&
|   +---gMetaClass
|   +---)
|   +---                  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---gMetaClass
|   +---.
|   +---instanceConstructed
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndAbstractStructors
|   +---
@abstract Define an OSMetaClass subclass and the runtime system routines.
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that is an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndAbstractStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---   
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---   
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                  
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---   
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---   
|   +---;
|   +--- 
|   +---}
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +--- 
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Dynamic vtable patchup support routines and types
|   +---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---reservedCalled
+---(
|   +---int
|   +--- 
|   +---ind
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDeclareReservedUnused
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---APPLE_KEXT_PAD_METHOD
|   +--- 
|   +---void
|   +--- 
|   +---_RESERVED
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---classname
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---index
|   +--- 
|   +---(
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDeclareReservedUsed
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDefineReservedUnused
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---void
|   +--- 
|   +---classname
|   +--- 
|   +---::
|   +---_RESERVED
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---classname
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---index
|   +--- 
|   +---(
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---{
|   +--- 
|   +---APPLE_KEXT_PAD_IMPL
|   +---(
|   +---index
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDefineReservedUsed
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---IOKit debug internal routines.
|   +---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---printInstanceCounts
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---serializeClassDictionary
+---(
|   +---OSDictionary
|   +--- 
|   +---*
|   +---dict
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---private
+---:
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Obsolete APIs
|   +---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSDictionary
+--- 
+---*
+---getClassDictionary
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---serialize
+---(
|   +---OSSerialize
|   +--- 
|   +---*
|   +---s
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Virtual Padding functions for MetaClass's
|   +---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---0
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---1
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---2
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---3
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---4
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---5
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---6
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---7
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: logError (HeaderDoc::Function)
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---logError
+---(
|   +---OSReturn
|   +--- 
|   +---result
|   +---)
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getMetaClassWithName
|   +---
@abstract Lookup a meta-class in the runtime type information system
|   +---
@param name Name of the desired class's meta-class. 
|   +---
@result pointer to a meta-class object if found, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---const
+--- 
+---OSMetaClass
+--- 
+---*
+---getMetaClassWithName
+---(
|   +---const
|   +--- 
|   +---OSSymbol
|   +--- 
|   +---*
|   +---name
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---protected
+---:
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function retain
|   +---
@abstract Implement abstract but should no dynamic allocation is allowed 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---retain
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function release
|   +---
@abstract Implement abstract but should no dynamic allocation is allowed 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---release
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function release
|   +---
@abstract Implement abstract but should no dynamic allocation is allowed 
|   +---
@param when ignored. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---release
+---(
|   +---int
|   +--- 
|   +---when
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function taggedRetain
|   +---
@abstract Retain a tagged reference in this object.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---taggedRetain
+---(
|   +---const
|   +--- 
|   +---void
|   +--- 
|   +---*
|   +---tag
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function release
|   +---
@abstract Release a tagged reference to this object
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---taggedRelease
+---(
|   +---const
|   +--- 
|   +---void
|   +--- 
|   +---*
|   +---tag
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function release
|   +---
@abstract Release a tagged reference to this object
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---taggedRelease
+---(
|   +---const
|   +--- 
|   +---void
|   +--- 
|   +---*
|   +---tag
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---int
|   +--- 
|   +---when
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getRetainCount
|   +---
@abstract Implement abstract but should no dynamic allocation is allowed 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---int
+--- 
+---getRetainCount
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---const
+--- 
+---OSMetaClass
+--- 
+---*
+--- 
+---getMetaClass
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSMetaClass
|   +---
@abstract Constructor for OSMetaClass objects
|   +---
@discussion This constructor is protected and cannot not be used to instantiate an OSMetaClass object, i.e. OSMetaClass is an abstract class.  This function stores the currently constructing OSMetaClass instance away for later processing.  See preModLoad and postModLoad.
|   +---
@param inClassName cString of the name of the class this meta-class represents.
|   +---
@param inSuperClassName cString of the name of the super class.
|   +---
@param inClassSize sizeof the class. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-OSMetaClass (HAS STATE)
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---inClassName
|   +---,
|   +---[ NEWLINE ]
|   +---                
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---inSuperClass
|   +---,
|   +---[ NEWLINE ]
|   +---                
|   +---unsigned
|   +--- 
|   +---int
|   +--- 
|   +---inClassSize
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function ~OSMetaClass
|   +---
@abstract Destructor for OSMetaClass objects
|   +---
@discussion If this function is called it means that the object code that implemented this class is actually in the process of unloading.  The destructor removes all reference's to the subclass from the runtime type information system. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---~
+---OSMetaClass
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Needs to be overriden as NULL as all OSMetaClass objects are allocated
|   +---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---statically at compile time, don't accidently try to free them.
|   +---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---operator
+--- 
+---delete
+---(
|   +---void
|   +--- 
|   +---*
|   +---,
|   +--- 
|   +---size_t
|   +---)
+--- 
+---;
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---const
+--- 
+---OSMetaClass
+--- 
+---*
+--- 
+---const
+--- 
+---metaClass
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function preModLoad
|   +---
@abstract Prepare the runtime type system for the load of a module.
|   +---
@discussion Prepare the runtime type information system for the loading of new all meta-classes constructed between now and the next postModLoad.  preModLoad grab's a lock so that the runtime type information system loading can be protected, the lock is released by the postModLoad function.  Any OSMetaClass that is constructed between the bracketing pre and post calls will be assosiated with the module name.
|   +---
@param kmodName globally unique cString name of the kernel module being loaded. 
|   +---
@result If success full return a handle to be used in later calls 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---*
+---preModLoad
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---kmodName
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkModLoad
|   +---
@abstract Check if the current load attempt is still OK.
|   +---
@param loadHandle Handle returned when a successful call to preModLoad is made.
|   +---
@result true if no error's are outstanding and the system is primed to recieve more objects. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---bool
+--- 
+---checkModLoad
+---(
|   +---void
|   +--- 
|   +---*
|   +---loadHandle
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function postModLoad
|   +---
@abstract Finish postprocessing on a kernel module's meta-classes.
|   +---
@discussion As the order of static object construction is undefined it is necessary to process the constructors in two phases.  These phases rely on global information that is created be the preparation step, preModLoad, which also guarantees single threading between multiple modules.  Phase one was the static construction of each meta-class object one by one withing the context prepared by the preModLoad call.  postModLoad is the second phase of processing.  Inserts links all of the super class inheritance chains up, inserts the meta-classes into the global register of classes and records for each meta-class which kernel module caused it's construction.  Finally it cleans up the temporary storage and releases the single threading lock and returns whatever error has been recorded in during the construction phase or the post processing phase. 
|   +---
@param loadHandle Handle returned when a successful call to preModLoad is made.
|   +---
@result Error code of the first error encountered. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSReturn
+--- 
+---postModLoad
+---(
|   +---void
|   +--- 
|   +---*
|   +---loadHandle
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function modHasInstance
|   +---
@abstract Do any of the objects represented by OSMetaClass and associated with the given kernel module name have instances?
|   +---
@discussion Check all meta-classes associated with the module name and check their instance counts.  This function is used to check to see if a module can be unloaded.  Obviously if an instance is still outstanding it isn't safe to unload the code that relies on that object.
|   +---
@param kmodName cString of the kernel module name.
|   +---
@result true if there are any current instances of any class in the module.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---bool
+--- 
+---modHasInstance
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---kmodName
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function reportModInstances
|   +---
@abstract Log any object that has instances in a module.
|   +---
@discussion When a developer ask for a module to be unloaded but the unload fails due to outstanding instances.  This function will report which classes still have instances.  It is intended mostly for developers to find problems with unloading classes and will be called automatically by 'verbose' unloads.
|   +---
@param kmodName cString of the kernel module name. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---reportModInstances
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---kmodName
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function considerUnloads
|   +---
@abstract Schedule module unloading.
|   +---
@discussion Schedule unused modules to be unloaded; called when IOKit matching goes idle. 
|   +---*/
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---considerUnloads
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function allocClassWithName
|   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   +---
@param name Name of the desired class. 
|   +---
@result pointer to an new object, 0 if not found or so memory. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---allocClassWithName
+---(
|   +---const
|   +--- 
|   +---OSSymbol
|   +--- 
|   +---*
|   +---name
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function allocClassWithName
|   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   +---
@param name Name of the desired class. 
|   +---
@result pointer to an new object, 0 if not found or so memory. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---allocClassWithName
+---(
|   +---const
|   +--- 
|   +---OSString
|   +--- 
|   +---*
|   +---name
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function allocClassWithName
|   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   +---
@param name Name of the desired class. 
|   +---
@result pointer to an new object, 0 if not found or so memory. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---allocClassWithName
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---name
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCastWithName
|   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   +---
@param name Name of the desired class or super class. 
|   +---
@param in object to be introspected. 
|   +---
@result in parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSMetaClassBase
+--- 
+---*
+---[ NEWLINE ]
+---        
+---checkMetaCastWithName
+---(
|   +---const
|   +--- 
|   +---OSSymbol
|   +--- 
|   +---*
|   +---name
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---in
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCastWithName
|   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   +---
@param name Name of the desired class or super class.
|   +---
@param in object to be introspected.
|   +---
@result in parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSMetaClassBase
+--- 
+---*
+---[ NEWLINE ]
+---        
+---checkMetaCastWithName
+---(
|   +---const
|   +--- 
|   +---OSString
|   +--- 
|   +---*
|   +---name
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---in
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCastWithName
|   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   +---
@param name Name of the desired class or super class.
|   +---
@param in object to be introspected.
|   +---
@result in parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSMetaClassBase
+--- 
+---*
+---[ NEWLINE ]
+---        
+---checkMetaCastWithName
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---name
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---in
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function instanceConstructed
|   +---
@abstract Counts the instances of the class behind this metaclass.
|   +---
@discussion Every non-abstract class that inherits from OSObject has a default constructor that calls it's own meta-class' instanceConstructed function.  This constructor is defined by the OSDefineMetaClassAndStructors macro (qv) that all OSObject subclasses must use.  Also if the instance count goes from 0 to 1, ie the first instance, then increment the instance count of the super class 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---instanceConstructed
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function instanceDestructed
|   +---
@abstract Removes one instance of the class behind this metaclass.
|   +---
@discussion OSObject's free function calls this method just before it does a 'delete this' on itself.  If the instance count transitions from 1 to 0, i.e. the last object, then one instance of the superclasses is also removed. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---instanceDestructed
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCast
|   +---
@abstract Ask a OSMetaClass instance if the given object is either an instance of it or an instance of a subclass of it.
|   +---
@param check Pointer of object to introspect.
|   +---
@result check parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-OSMetaClassBase (HAS STATE)
+--- 
+---*
+---checkMetaCast
+---(
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---check
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getInstanceCount
|   +---
@abstract How many instances of the class have been created.
|   +---
@result Count of the number of instances. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-unsigned (HAS STATE)
+--- 
+---int
+--- 
+---getInstanceCount
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getSuperClass
|   +---
@abstract 'Get'ter for the super class.
|   +---
@result Pointer to superclass, chain ends with 0 for OSObject. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-const (HAS STATE)
+--- 
+---OSMetaClass
+--- 
+---*
+---getSuperClass
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getKmodName
|   +---
@abstract 'Get'ter for the name of the kmod.
|   +---
@result OSSymbol representing the kmod name. 
|   +---*/
+---[ NEWLINE ]
+---        
+-*-const (HAS STATE)
+--- 
+---OSSymbol
+--- 
+---*
+---getKmodName
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getClassName
|   +---
@abstract 'Get'ter for class name.
|   +---
@result cString of the class name. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-const (HAS STATE)
+--- 
+---char
+--- 
+---*
+---getClassName
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getClassSize
|   +---
@abstract 'Get'ter for sizeof(class).
|   +---
@result sizeof of class that this OSMetaClass instance represents. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-unsigned (HAS STATE)
+--- 
+---int
+--- 
+---getClassSize
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function alloc
|   +---
@abstract Allocate an instance of the class that this OSMetaClass instance represents.
|   +---
@discussion This alloc function is analogous to the old ObjC class alloc method.  Typically not used by clients as the static function allocClassWithName is more generally useful.  Infact that function is implemented in terms of this  virtual function.  All subclass's of OSMetaClass must implement this function but that is what the OSDefineMetaClassAndStructor's families of macros does for the developer automatically. 
|   +---
@result Pointer to a new object with a retain count of 1. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---alloc
+---(
|   +---)
+--- 
+---const
+--- 
+---=
+--- 
+---0
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDeclareCommonStructors
|   +---
@abstract Basic helper macro for the OSDeclare for Default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDeclareCommonStructors
|   +---(
|   +---className
|   +---)
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---superClass
|   +---;
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---metaClass
|   +---;
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---class
|   +--- 
|   +---MetaClass
|   +--- 
|   +---:
|   +--- 
|   +---public
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---{
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---public
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---MetaClass
|   +---(
|   +---)
|   +---;
|   +---                                                
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---virtual
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---}
|   +--- 
|   +---gMetaClass
|   +---;
|   +---                                                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---friend
|   +--- 
|   +---class
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---)
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---~
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDeclareDefaultStructors
|   +---
@abstract One of the macro's used in the class declaration of all subclasses of OSObject, declares runtime type information data and interfaces. 
|   +---
@discussion Macro used in the class declaration all subclasses of OSObject, declares runtime type information data and interfaces.  By convention it should be 'called' immediately after the opening brace in a class declaration.  It leaves the current privacy state as 'protected:'.
|   +---
@param className Name of class. NO QUOTES. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDeclareDefaultStructors
|   +---(
|   +---className
|   +---)
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---         
|   +---private
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---superClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---metaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---class
|   +--- 
|   +---MetaClass
|   +--- 
|   +---:
|   +--- 
|   +---public
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---{
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---MetaClass
|   +---(
|   +---)
|   +---;
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---virtual
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---}
|   +--- 
|   +---gMetaClass
|   +---;
|   +---                                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---friend
|   +--- 
|   +---class
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---)
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---~
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +---                                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDeclareAbstractStructors
|   +---
@abstract One of the macro's used in the class declaration of all subclasses of OSObject, declares runtime type information data and interfaces. 
|   +---
@discussion This macro is used when the class being declared has one or more '= 0' pure virtual methods and thus it is illegal to create an instance of this class.  It leaves the current privacy state as 'protected:'.
|   +---
@param className Name of class. NO QUOTES. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDeclareAbstractStructors
|   +---(
|   +---className
|   +---)
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---         
|   +---private
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---superClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---metaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---class
|   +--- 
|   +---MetaClass
|   +--- 
|   +---:
|   +--- 
|   +---public
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---{
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---MetaClass
|   +---(
|   +---)
|   +---;
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---virtual
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---}
|   +--- 
|   +---gMetaClass
|   +---;
|   +---                                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---friend
|   +--- 
|   +---class
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---)
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---~
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---/*
|   |   +--- 
|   |   +---Make primary constructor private in abstract 
|   |   +---*/
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassWithInit
|   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassWithInit
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---,
|   +--- 
|   +---init
|   +---)
|   +---        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---/*
|   |   +--- 
|   |   +---Class global data 
|   |   +---*/
|   +---                                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---/*
|   |   +--- 
|   |   +---Class member functions 
|   |   +---*/
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +--- 
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---/*
|   |   +--- 
|   |   +---The ::MetaClass constructor 
|   |   +---*/
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---#
|   +---className
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---init
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineAbstractStructors
|   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineAbstractStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +--- 
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---0
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineDefaultStructors
|   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineDefaultStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---new
|   +--- 
|   +---className
|   +---;
|   +--- 
|   +---}
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +--- 
|   +---:
|   +--- 
|   +---superClassName
|   +--- 
|   +---(
|   +---&
|   +---gMetaClass
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---gMetaClass
|   +---.
|   +---instanceConstructed
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndAbstractStructorsWithInit
|   +---
@abstract Primary definition macro for all abstract classes that a subclasses of OSObject.
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that is an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.  Once the OSMetaClass has been constructed, at load time, call the init routine.  NB you can not rely on the order of execution of the init routines.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndAbstractStructorsWithInit
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---,
|   +--- 
|   +---init
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---  
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---  
|   +---init
|   +---;
|   +--- 
|   +---}
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +--- 
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndStructorsWithInit
|   +---
@abstract See OSDefineMetaClassAndStructors
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that isn't an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.  Once the OSMetaClass has been constructed, at load time, call the init routine.  NB you can not rely on the order of execution of the init routines.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndStructorsWithInit
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---,
|   +--- 
|   +---init
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---  
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---  
|   +---init
|   +---;
|   +--- 
|   +---}
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---new
|   +--- 
|   +---className
|   +---;
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +--- 
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---&
|   +---gMetaClass
|   +---)
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---gMetaClass
|   +---.
|   +---instanceConstructed
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +--- 
|   +---Helpers 
|   +---*/
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClass
|   +---
@abstract Define an OSMetaClass instance, used for backward compatiblility only.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClass
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---  
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---  
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndStructors
|   +---
@abstract Define an OSMetaClass subclass and the runtime system routines.
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that isn't an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---        
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---   
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---   
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                  
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---   
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---   
|   +---;
|   +--- 
|   +---}
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---new
|   +--- 
|   +---className
|   +---;
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +--- 
|   +---:
|   +---   
|   +---superClassName
|   +--- 
|   +---(
|   +---&
|   +---gMetaClass
|   +---)
|   +---                  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---gMetaClass
|   +---.
|   +---instanceConstructed
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndAbstractStructors
|   +---
@abstract Define an OSMetaClass subclass and the runtime system routines.
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that is an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndAbstractStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---   
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---   
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                  
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---   
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---   
|   +---;
|   +--- 
|   +---}
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +--- 
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Dynamic vtable patchup support routines and types
|   +---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---reservedCalled
+---(
|   +---int
|   +--- 
|   +---ind
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDeclareReservedUnused
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---APPLE_KEXT_PAD_METHOD
|   +--- 
|   +---void
|   +--- 
|   +---_RESERVED
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---classname
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---index
|   +--- 
|   +---(
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDeclareReservedUsed
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDefineReservedUnused
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---void
|   +--- 
|   +---classname
|   +--- 
|   +---::
|   +---_RESERVED
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---classname
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---index
|   +--- 
|   +---(
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---{
|   +--- 
|   +---APPLE_KEXT_PAD_IMPL
|   +---(
|   +---index
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDefineReservedUsed
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---IOKit debug internal routines.
|   +---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---printInstanceCounts
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---serializeClassDictionary
+---(
|   +---OSDictionary
|   +--- 
|   +---*
|   +---dict
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---private
+---:
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Obsolete APIs
|   +---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSDictionary
+--- 
+---*
+---getClassDictionary
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---serialize
+---(
|   +---OSSerialize
|   +--- 
|   +---*
|   +---s
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Virtual Padding functions for MetaClass's
|   +---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---0
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---1
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---2
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---3
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---4
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---5
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---6
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---7
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: getMetaClassWithName (HeaderDoc::Function)
+-*-static (HAS STATE)
+--- 
+---const
+--- 
+---OSMetaClass
+--- 
+---*
+---getMetaClassWithName
+---(
|   +---const
|   +--- 
|   +---OSSymbol
|   +--- 
|   +---*
|   +---name
|   +---)
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---protected
+---:
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function retain
|   +---
@abstract Implement abstract but should no dynamic allocation is allowed 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---retain
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function release
|   +---
@abstract Implement abstract but should no dynamic allocation is allowed 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---release
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function release
|   +---
@abstract Implement abstract but should no dynamic allocation is allowed 
|   +---
@param when ignored. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---release
+---(
|   +---int
|   +--- 
|   +---when
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function taggedRetain
|   +---
@abstract Retain a tagged reference in this object.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---taggedRetain
+---(
|   +---const
|   +--- 
|   +---void
|   +--- 
|   +---*
|   +---tag
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function release
|   +---
@abstract Release a tagged reference to this object
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---taggedRelease
+---(
|   +---const
|   +--- 
|   +---void
|   +--- 
|   +---*
|   +---tag
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function release
|   +---
@abstract Release a tagged reference to this object
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---taggedRelease
+---(
|   +---const
|   +--- 
|   +---void
|   +--- 
|   +---*
|   +---tag
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---int
|   +--- 
|   +---when
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getRetainCount
|   +---
@abstract Implement abstract but should no dynamic allocation is allowed 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---int
+--- 
+---getRetainCount
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---const
+--- 
+---OSMetaClass
+--- 
+---*
+--- 
+---getMetaClass
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSMetaClass
|   +---
@abstract Constructor for OSMetaClass objects
|   +---
@discussion This constructor is protected and cannot not be used to instantiate an OSMetaClass object, i.e. OSMetaClass is an abstract class.  This function stores the currently constructing OSMetaClass instance away for later processing.  See preModLoad and postModLoad.
|   +---
@param inClassName cString of the name of the class this meta-class represents.
|   +---
@param inSuperClassName cString of the name of the super class.
|   +---
@param inClassSize sizeof the class. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-OSMetaClass (HAS STATE)
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---inClassName
|   +---,
|   +---[ NEWLINE ]
|   +---                
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---inSuperClass
|   +---,
|   +---[ NEWLINE ]
|   +---                
|   +---unsigned
|   +--- 
|   +---int
|   +--- 
|   +---inClassSize
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function ~OSMetaClass
|   +---
@abstract Destructor for OSMetaClass objects
|   +---
@discussion If this function is called it means that the object code that implemented this class is actually in the process of unloading.  The destructor removes all reference's to the subclass from the runtime type information system. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---~
+---OSMetaClass
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Needs to be overriden as NULL as all OSMetaClass objects are allocated
|   +---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---statically at compile time, don't accidently try to free them.
|   +---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---operator
+--- 
+---delete
+---(
|   +---void
|   +--- 
|   +---*
|   +---,
|   +--- 
|   +---size_t
|   +---)
+--- 
+---;
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---const
+--- 
+---OSMetaClass
+--- 
+---*
+--- 
+---const
+--- 
+---metaClass
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function preModLoad
|   +---
@abstract Prepare the runtime type system for the load of a module.
|   +---
@discussion Prepare the runtime type information system for the loading of new all meta-classes constructed between now and the next postModLoad.  preModLoad grab's a lock so that the runtime type information system loading can be protected, the lock is released by the postModLoad function.  Any OSMetaClass that is constructed between the bracketing pre and post calls will be assosiated with the module name.
|   +---
@param kmodName globally unique cString name of the kernel module being loaded. 
|   +---
@result If success full return a handle to be used in later calls 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---*
+---preModLoad
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---kmodName
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkModLoad
|   +---
@abstract Check if the current load attempt is still OK.
|   +---
@param loadHandle Handle returned when a successful call to preModLoad is made.
|   +---
@result true if no error's are outstanding and the system is primed to recieve more objects. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---bool
+--- 
+---checkModLoad
+---(
|   +---void
|   +--- 
|   +---*
|   +---loadHandle
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function postModLoad
|   +---
@abstract Finish postprocessing on a kernel module's meta-classes.
|   +---
@discussion As the order of static object construction is undefined it is necessary to process the constructors in two phases.  These phases rely on global information that is created be the preparation step, preModLoad, which also guarantees single threading between multiple modules.  Phase one was the static construction of each meta-class object one by one withing the context prepared by the preModLoad call.  postModLoad is the second phase of processing.  Inserts links all of the super class inheritance chains up, inserts the meta-classes into the global register of classes and records for each meta-class which kernel module caused it's construction.  Finally it cleans up the temporary storage and releases the single threading lock and returns whatever error has been recorded in during the construction phase or the post processing phase. 
|   +---
@param loadHandle Handle returned when a successful call to preModLoad is made.
|   +---
@result Error code of the first error encountered. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSReturn
+--- 
+---postModLoad
+---(
|   +---void
|   +--- 
|   +---*
|   +---loadHandle
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function modHasInstance
|   +---
@abstract Do any of the objects represented by OSMetaClass and associated with the given kernel module name have instances?
|   +---
@discussion Check all meta-classes associated with the module name and check their instance counts.  This function is used to check to see if a module can be unloaded.  Obviously if an instance is still outstanding it isn't safe to unload the code that relies on that object.
|   +---
@param kmodName cString of the kernel module name.
|   +---
@result true if there are any current instances of any class in the module.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---bool
+--- 
+---modHasInstance
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---kmodName
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function reportModInstances
|   +---
@abstract Log any object that has instances in a module.
|   +---
@discussion When a developer ask for a module to be unloaded but the unload fails due to outstanding instances.  This function will report which classes still have instances.  It is intended mostly for developers to find problems with unloading classes and will be called automatically by 'verbose' unloads.
|   +---
@param kmodName cString of the kernel module name. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---reportModInstances
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---kmodName
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function considerUnloads
|   +---
@abstract Schedule module unloading.
|   +---
@discussion Schedule unused modules to be unloaded; called when IOKit matching goes idle. 
|   +---*/
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---considerUnloads
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function allocClassWithName
|   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   +---
@param name Name of the desired class. 
|   +---
@result pointer to an new object, 0 if not found or so memory. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---allocClassWithName
+---(
|   +---const
|   +--- 
|   +---OSSymbol
|   +--- 
|   +---*
|   +---name
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function allocClassWithName
|   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   +---
@param name Name of the desired class. 
|   +---
@result pointer to an new object, 0 if not found or so memory. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---allocClassWithName
+---(
|   +---const
|   +--- 
|   +---OSString
|   +--- 
|   +---*
|   +---name
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function allocClassWithName
|   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   +---
@param name Name of the desired class. 
|   +---
@result pointer to an new object, 0 if not found or so memory. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---allocClassWithName
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---name
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCastWithName
|   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   +---
@param name Name of the desired class or super class. 
|   +---
@param in object to be introspected. 
|   +---
@result in parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSMetaClassBase
+--- 
+---*
+---[ NEWLINE ]
+---        
+---checkMetaCastWithName
+---(
|   +---const
|   +--- 
|   +---OSSymbol
|   +--- 
|   +---*
|   +---name
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---in
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCastWithName
|   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   +---
@param name Name of the desired class or super class.
|   +---
@param in object to be introspected.
|   +---
@result in parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSMetaClassBase
+--- 
+---*
+---[ NEWLINE ]
+---        
+---checkMetaCastWithName
+---(
|   +---const
|   +--- 
|   +---OSString
|   +--- 
|   +---*
|   +---name
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---in
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCastWithName
|   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   +---
@param name Name of the desired class or super class.
|   +---
@param in object to be introspected.
|   +---
@result in parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSMetaClassBase
+--- 
+---*
+---[ NEWLINE ]
+---        
+---checkMetaCastWithName
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---name
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---in
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function instanceConstructed
|   +---
@abstract Counts the instances of the class behind this metaclass.
|   +---
@discussion Every non-abstract class that inherits from OSObject has a default constructor that calls it's own meta-class' instanceConstructed function.  This constructor is defined by the OSDefineMetaClassAndStructors macro (qv) that all OSObject subclasses must use.  Also if the instance count goes from 0 to 1, ie the first instance, then increment the instance count of the super class 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---instanceConstructed
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function instanceDestructed
|   +---
@abstract Removes one instance of the class behind this metaclass.
|   +---
@discussion OSObject's free function calls this method just before it does a 'delete this' on itself.  If the instance count transitions from 1 to 0, i.e. the last object, then one instance of the superclasses is also removed. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---instanceDestructed
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCast
|   +---
@abstract Ask a OSMetaClass instance if the given object is either an instance of it or an instance of a subclass of it.
|   +---
@param check Pointer of object to introspect.
|   +---
@result check parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-OSMetaClassBase (HAS STATE)
+--- 
+---*
+---checkMetaCast
+---(
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---check
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getInstanceCount
|   +---
@abstract How many instances of the class have been created.
|   +---
@result Count of the number of instances. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-unsigned (HAS STATE)
+--- 
+---int
+--- 
+---getInstanceCount
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getSuperClass
|   +---
@abstract 'Get'ter for the super class.
|   +---
@result Pointer to superclass, chain ends with 0 for OSObject. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-const (HAS STATE)
+--- 
+---OSMetaClass
+--- 
+---*
+---getSuperClass
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getKmodName
|   +---
@abstract 'Get'ter for the name of the kmod.
|   +---
@result OSSymbol representing the kmod name. 
|   +---*/
+---[ NEWLINE ]
+---        
+-*-const (HAS STATE)
+--- 
+---OSSymbol
+--- 
+---*
+---getKmodName
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getClassName
|   +---
@abstract 'Get'ter for class name.
|   +---
@result cString of the class name. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-const (HAS STATE)
+--- 
+---char
+--- 
+---*
+---getClassName
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getClassSize
|   +---
@abstract 'Get'ter for sizeof(class).
|   +---
@result sizeof of class that this OSMetaClass instance represents. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-unsigned (HAS STATE)
+--- 
+---int
+--- 
+---getClassSize
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function alloc
|   +---
@abstract Allocate an instance of the class that this OSMetaClass instance represents.
|   +---
@discussion This alloc function is analogous to the old ObjC class alloc method.  Typically not used by clients as the static function allocClassWithName is more generally useful.  Infact that function is implemented in terms of this  virtual function.  All subclass's of OSMetaClass must implement this function but that is what the OSDefineMetaClassAndStructor's families of macros does for the developer automatically. 
|   +---
@result Pointer to a new object with a retain count of 1. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---alloc
+---(
|   +---)
+--- 
+---const
+--- 
+---=
+--- 
+---0
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDeclareCommonStructors
|   +---
@abstract Basic helper macro for the OSDeclare for Default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDeclareCommonStructors
|   +---(
|   +---className
|   +---)
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---superClass
|   +---;
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---metaClass
|   +---;
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---class
|   +--- 
|   +---MetaClass
|   +--- 
|   +---:
|   +--- 
|   +---public
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---{
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---public
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---MetaClass
|   +---(
|   +---)
|   +---;
|   +---                                                
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---virtual
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---}
|   +--- 
|   +---gMetaClass
|   +---;
|   +---                                                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---friend
|   +--- 
|   +---class
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---)
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---~
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDeclareDefaultStructors
|   +---
@abstract One of the macro's used in the class declaration of all subclasses of OSObject, declares runtime type information data and interfaces. 
|   +---
@discussion Macro used in the class declaration all subclasses of OSObject, declares runtime type information data and interfaces.  By convention it should be 'called' immediately after the opening brace in a class declaration.  It leaves the current privacy state as 'protected:'.
|   +---
@param className Name of class. NO QUOTES. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDeclareDefaultStructors
|   +---(
|   +---className
|   +---)
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---         
|   +---private
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---superClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---metaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---class
|   +--- 
|   +---MetaClass
|   +--- 
|   +---:
|   +--- 
|   +---public
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---{
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---MetaClass
|   +---(
|   +---)
|   +---;
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---virtual
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---}
|   +--- 
|   +---gMetaClass
|   +---;
|   +---                                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---friend
|   +--- 
|   +---class
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---)
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---~
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +---                                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDeclareAbstractStructors
|   +---
@abstract One of the macro's used in the class declaration of all subclasses of OSObject, declares runtime type information data and interfaces. 
|   +---
@discussion This macro is used when the class being declared has one or more '= 0' pure virtual methods and thus it is illegal to create an instance of this class.  It leaves the current privacy state as 'protected:'.
|   +---
@param className Name of class. NO QUOTES. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDeclareAbstractStructors
|   +---(
|   +---className
|   +---)
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---         
|   +---private
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---superClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---metaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---class
|   +--- 
|   +---MetaClass
|   +--- 
|   +---:
|   +--- 
|   +---public
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---{
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---MetaClass
|   +---(
|   +---)
|   +---;
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---virtual
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---}
|   +--- 
|   +---gMetaClass
|   +---;
|   +---                                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---friend
|   +--- 
|   +---class
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---)
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---~
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---/*
|   |   +--- 
|   |   +---Make primary constructor private in abstract 
|   |   +---*/
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassWithInit
|   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassWithInit
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---,
|   +--- 
|   +---init
|   +---)
|   +---        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---/*
|   |   +--- 
|   |   +---Class global data 
|   |   +---*/
|   +---                                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---/*
|   |   +--- 
|   |   +---Class member functions 
|   |   +---*/
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +--- 
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---/*
|   |   +--- 
|   |   +---The ::MetaClass constructor 
|   |   +---*/
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---#
|   +---className
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---init
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineAbstractStructors
|   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineAbstractStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +--- 
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---0
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineDefaultStructors
|   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineDefaultStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---new
|   +--- 
|   +---className
|   +---;
|   +--- 
|   +---}
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +--- 
|   +---:
|   +--- 
|   +---superClassName
|   +--- 
|   +---(
|   +---&
|   +---gMetaClass
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---gMetaClass
|   +---.
|   +---instanceConstructed
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndAbstractStructorsWithInit
|   +---
@abstract Primary definition macro for all abstract classes that a subclasses of OSObject.
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that is an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.  Once the OSMetaClass has been constructed, at load time, call the init routine.  NB you can not rely on the order of execution of the init routines.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndAbstractStructorsWithInit
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---,
|   +--- 
|   +---init
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---  
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---  
|   +---init
|   +---;
|   +--- 
|   +---}
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +--- 
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndStructorsWithInit
|   +---
@abstract See OSDefineMetaClassAndStructors
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that isn't an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.  Once the OSMetaClass has been constructed, at load time, call the init routine.  NB you can not rely on the order of execution of the init routines.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndStructorsWithInit
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---,
|   +--- 
|   +---init
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---  
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---  
|   +---init
|   +---;
|   +--- 
|   +---}
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---new
|   +--- 
|   +---className
|   +---;
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +--- 
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---&
|   +---gMetaClass
|   +---)
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---gMetaClass
|   +---.
|   +---instanceConstructed
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +--- 
|   +---Helpers 
|   +---*/
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClass
|   +---
@abstract Define an OSMetaClass instance, used for backward compatiblility only.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClass
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---  
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---  
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndStructors
|   +---
@abstract Define an OSMetaClass subclass and the runtime system routines.
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that isn't an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---        
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---   
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---   
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                  
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---   
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---   
|   +---;
|   +--- 
|   +---}
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---new
|   +--- 
|   +---className
|   +---;
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +--- 
|   +---:
|   +---   
|   +---superClassName
|   +--- 
|   +---(
|   +---&
|   +---gMetaClass
|   +---)
|   +---                  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---gMetaClass
|   +---.
|   +---instanceConstructed
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndAbstractStructors
|   +---
@abstract Define an OSMetaClass subclass and the runtime system routines.
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that is an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndAbstractStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---   
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---   
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                  
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---   
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---   
|   +---;
|   +--- 
|   +---}
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +--- 
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Dynamic vtable patchup support routines and types
|   +---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---reservedCalled
+---(
|   +---int
|   +--- 
|   +---ind
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDeclareReservedUnused
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---APPLE_KEXT_PAD_METHOD
|   +--- 
|   +---void
|   +--- 
|   +---_RESERVED
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---classname
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---index
|   +--- 
|   +---(
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDeclareReservedUsed
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDefineReservedUnused
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---void
|   +--- 
|   +---classname
|   +--- 
|   +---::
|   +---_RESERVED
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---classname
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---index
|   +--- 
|   +---(
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---{
|   +--- 
|   +---APPLE_KEXT_PAD_IMPL
|   +---(
|   +---index
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDefineReservedUsed
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---IOKit debug internal routines.
|   +---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---printInstanceCounts
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---serializeClassDictionary
+---(
|   +---OSDictionary
|   +--- 
|   +---*
|   +---dict
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---private
+---:
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Obsolete APIs
|   +---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSDictionary
+--- 
+---*
+---getClassDictionary
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---serialize
+---(
|   +---OSSerialize
|   +--- 
|   +---*
|   +---s
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Virtual Padding functions for MetaClass's
|   +---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---0
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---1
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---2
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---3
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---4
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---5
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---6
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---7
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: retain (HeaderDoc::Function)
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---retain
+---(
|   +---)
+--- 
+---const
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function release
|   +---
@abstract Implement abstract but should no dynamic allocation is allowed 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---release
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function release
|   +---
@abstract Implement abstract but should no dynamic allocation is allowed 
|   +---
@param when ignored. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---release
+---(
|   +---int
|   +--- 
|   +---when
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function taggedRetain
|   +---
@abstract Retain a tagged reference in this object.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---taggedRetain
+---(
|   +---const
|   +--- 
|   +---void
|   +--- 
|   +---*
|   +---tag
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function release
|   +---
@abstract Release a tagged reference to this object
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---taggedRelease
+---(
|   +---const
|   +--- 
|   +---void
|   +--- 
|   +---*
|   +---tag
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function release
|   +---
@abstract Release a tagged reference to this object
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---taggedRelease
+---(
|   +---const
|   +--- 
|   +---void
|   +--- 
|   +---*
|   +---tag
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---int
|   +--- 
|   +---when
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getRetainCount
|   +---
@abstract Implement abstract but should no dynamic allocation is allowed 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---int
+--- 
+---getRetainCount
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---const
+--- 
+---OSMetaClass
+--- 
+---*
+--- 
+---getMetaClass
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSMetaClass
|   +---
@abstract Constructor for OSMetaClass objects
|   +---
@discussion This constructor is protected and cannot not be used to instantiate an OSMetaClass object, i.e. OSMetaClass is an abstract class.  This function stores the currently constructing OSMetaClass instance away for later processing.  See preModLoad and postModLoad.
|   +---
@param inClassName cString of the name of the class this meta-class represents.
|   +---
@param inSuperClassName cString of the name of the super class.
|   +---
@param inClassSize sizeof the class. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-OSMetaClass (HAS STATE)
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---inClassName
|   +---,
|   +---[ NEWLINE ]
|   +---                
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---inSuperClass
|   +---,
|   +---[ NEWLINE ]
|   +---                
|   +---unsigned
|   +--- 
|   +---int
|   +--- 
|   +---inClassSize
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function ~OSMetaClass
|   +---
@abstract Destructor for OSMetaClass objects
|   +---
@discussion If this function is called it means that the object code that implemented this class is actually in the process of unloading.  The destructor removes all reference's to the subclass from the runtime type information system. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---~
+---OSMetaClass
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Needs to be overriden as NULL as all OSMetaClass objects are allocated
|   +---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---statically at compile time, don't accidently try to free them.
|   +---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---operator
+--- 
+---delete
+---(
|   +---void
|   +--- 
|   +---*
|   +---,
|   +--- 
|   +---size_t
|   +---)
+--- 
+---;
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---const
+--- 
+---OSMetaClass
+--- 
+---*
+--- 
+---const
+--- 
+---metaClass
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function preModLoad
|   +---
@abstract Prepare the runtime type system for the load of a module.
|   +---
@discussion Prepare the runtime type information system for the loading of new all meta-classes constructed between now and the next postModLoad.  preModLoad grab's a lock so that the runtime type information system loading can be protected, the lock is released by the postModLoad function.  Any OSMetaClass that is constructed between the bracketing pre and post calls will be assosiated with the module name.
|   +---
@param kmodName globally unique cString name of the kernel module being loaded. 
|   +---
@result If success full return a handle to be used in later calls 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---*
+---preModLoad
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---kmodName
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkModLoad
|   +---
@abstract Check if the current load attempt is still OK.
|   +---
@param loadHandle Handle returned when a successful call to preModLoad is made.
|   +---
@result true if no error's are outstanding and the system is primed to recieve more objects. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---bool
+--- 
+---checkModLoad
+---(
|   +---void
|   +--- 
|   +---*
|   +---loadHandle
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function postModLoad
|   +---
@abstract Finish postprocessing on a kernel module's meta-classes.
|   +---
@discussion As the order of static object construction is undefined it is necessary to process the constructors in two phases.  These phases rely on global information that is created be the preparation step, preModLoad, which also guarantees single threading between multiple modules.  Phase one was the static construction of each meta-class object one by one withing the context prepared by the preModLoad call.  postModLoad is the second phase of processing.  Inserts links all of the super class inheritance chains up, inserts the meta-classes into the global register of classes and records for each meta-class which kernel module caused it's construction.  Finally it cleans up the temporary storage and releases the single threading lock and returns whatever error has been recorded in during the construction phase or the post processing phase. 
|   +---
@param loadHandle Handle returned when a successful call to preModLoad is made.
|   +---
@result Error code of the first error encountered. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSReturn
+--- 
+---postModLoad
+---(
|   +---void
|   +--- 
|   +---*
|   +---loadHandle
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function modHasInstance
|   +---
@abstract Do any of the objects represented by OSMetaClass and associated with the given kernel module name have instances?
|   +---
@discussion Check all meta-classes associated with the module name and check their instance counts.  This function is used to check to see if a module can be unloaded.  Obviously if an instance is still outstanding it isn't safe to unload the code that relies on that object.
|   +---
@param kmodName cString of the kernel module name.
|   +---
@result true if there are any current instances of any class in the module.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---bool
+--- 
+---modHasInstance
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---kmodName
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function reportModInstances
|   +---
@abstract Log any object that has instances in a module.
|   +---
@discussion When a developer ask for a module to be unloaded but the unload fails due to outstanding instances.  This function will report which classes still have instances.  It is intended mostly for developers to find problems with unloading classes and will be called automatically by 'verbose' unloads.
|   +---
@param kmodName cString of the kernel module name. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---reportModInstances
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---kmodName
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function considerUnloads
|   +---
@abstract Schedule module unloading.
|   +---
@discussion Schedule unused modules to be unloaded; called when IOKit matching goes idle. 
|   +---*/
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---considerUnloads
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function allocClassWithName
|   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   +---
@param name Name of the desired class. 
|   +---
@result pointer to an new object, 0 if not found or so memory. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---allocClassWithName
+---(
|   +---const
|   +--- 
|   +---OSSymbol
|   +--- 
|   +---*
|   +---name
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function allocClassWithName
|   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   +---
@param name Name of the desired class. 
|   +---
@result pointer to an new object, 0 if not found or so memory. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---allocClassWithName
+---(
|   +---const
|   +--- 
|   +---OSString
|   +--- 
|   +---*
|   +---name
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function allocClassWithName
|   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   +---
@param name Name of the desired class. 
|   +---
@result pointer to an new object, 0 if not found or so memory. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---allocClassWithName
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---name
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCastWithName
|   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   +---
@param name Name of the desired class or super class. 
|   +---
@param in object to be introspected. 
|   +---
@result in parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSMetaClassBase
+--- 
+---*
+---[ NEWLINE ]
+---        
+---checkMetaCastWithName
+---(
|   +---const
|   +--- 
|   +---OSSymbol
|   +--- 
|   +---*
|   +---name
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---in
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCastWithName
|   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   +---
@param name Name of the desired class or super class.
|   +---
@param in object to be introspected.
|   +---
@result in parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSMetaClassBase
+--- 
+---*
+---[ NEWLINE ]
+---        
+---checkMetaCastWithName
+---(
|   +---const
|   +--- 
|   +---OSString
|   +--- 
|   +---*
|   +---name
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---in
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCastWithName
|   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   +---
@param name Name of the desired class or super class.
|   +---
@param in object to be introspected.
|   +---
@result in parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSMetaClassBase
+--- 
+---*
+---[ NEWLINE ]
+---        
+---checkMetaCastWithName
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---name
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---in
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function instanceConstructed
|   +---
@abstract Counts the instances of the class behind this metaclass.
|   +---
@discussion Every non-abstract class that inherits from OSObject has a default constructor that calls it's own meta-class' instanceConstructed function.  This constructor is defined by the OSDefineMetaClassAndStructors macro (qv) that all OSObject subclasses must use.  Also if the instance count goes from 0 to 1, ie the first instance, then increment the instance count of the super class 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---instanceConstructed
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function instanceDestructed
|   +---
@abstract Removes one instance of the class behind this metaclass.
|   +---
@discussion OSObject's free function calls this method just before it does a 'delete this' on itself.  If the instance count transitions from 1 to 0, i.e. the last object, then one instance of the superclasses is also removed. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---instanceDestructed
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCast
|   +---
@abstract Ask a OSMetaClass instance if the given object is either an instance of it or an instance of a subclass of it.
|   +---
@param check Pointer of object to introspect.
|   +---
@result check parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-OSMetaClassBase (HAS STATE)
+--- 
+---*
+---checkMetaCast
+---(
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---check
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getInstanceCount
|   +---
@abstract How many instances of the class have been created.
|   +---
@result Count of the number of instances. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-unsigned (HAS STATE)
+--- 
+---int
+--- 
+---getInstanceCount
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getSuperClass
|   +---
@abstract 'Get'ter for the super class.
|   +---
@result Pointer to superclass, chain ends with 0 for OSObject. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-const (HAS STATE)
+--- 
+---OSMetaClass
+--- 
+---*
+---getSuperClass
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getKmodName
|   +---
@abstract 'Get'ter for the name of the kmod.
|   +---
@result OSSymbol representing the kmod name. 
|   +---*/
+---[ NEWLINE ]
+---        
+-*-const (HAS STATE)
+--- 
+---OSSymbol
+--- 
+---*
+---getKmodName
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getClassName
|   +---
@abstract 'Get'ter for class name.
|   +---
@result cString of the class name. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-const (HAS STATE)
+--- 
+---char
+--- 
+---*
+---getClassName
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getClassSize
|   +---
@abstract 'Get'ter for sizeof(class).
|   +---
@result sizeof of class that this OSMetaClass instance represents. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-unsigned (HAS STATE)
+--- 
+---int
+--- 
+---getClassSize
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function alloc
|   +---
@abstract Allocate an instance of the class that this OSMetaClass instance represents.
|   +---
@discussion This alloc function is analogous to the old ObjC class alloc method.  Typically not used by clients as the static function allocClassWithName is more generally useful.  Infact that function is implemented in terms of this  virtual function.  All subclass's of OSMetaClass must implement this function but that is what the OSDefineMetaClassAndStructor's families of macros does for the developer automatically. 
|   +---
@result Pointer to a new object with a retain count of 1. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---alloc
+---(
|   +---)
+--- 
+---const
+--- 
+---=
+--- 
+---0
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDeclareCommonStructors
|   +---
@abstract Basic helper macro for the OSDeclare for Default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDeclareCommonStructors
|   +---(
|   +---className
|   +---)
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---superClass
|   +---;
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---metaClass
|   +---;
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---class
|   +--- 
|   +---MetaClass
|   +--- 
|   +---:
|   +--- 
|   +---public
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---{
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---public
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---MetaClass
|   +---(
|   +---)
|   +---;
|   +---                                                
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---virtual
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---}
|   +--- 
|   +---gMetaClass
|   +---;
|   +---                                                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---friend
|   +--- 
|   +---class
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---)
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---~
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDeclareDefaultStructors
|   +---
@abstract One of the macro's used in the class declaration of all subclasses of OSObject, declares runtime type information data and interfaces. 
|   +---
@discussion Macro used in the class declaration all subclasses of OSObject, declares runtime type information data and interfaces.  By convention it should be 'called' immediately after the opening brace in a class declaration.  It leaves the current privacy state as 'protected:'.
|   +---
@param className Name of class. NO QUOTES. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDeclareDefaultStructors
|   +---(
|   +---className
|   +---)
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---         
|   +---private
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---superClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---metaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---class
|   +--- 
|   +---MetaClass
|   +--- 
|   +---:
|   +--- 
|   +---public
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---{
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---MetaClass
|   +---(
|   +---)
|   +---;
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---virtual
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---}
|   +--- 
|   +---gMetaClass
|   +---;
|   +---                                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---friend
|   +--- 
|   +---class
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---)
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---~
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +---                                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDeclareAbstractStructors
|   +---
@abstract One of the macro's used in the class declaration of all subclasses of OSObject, declares runtime type information data and interfaces. 
|   +---
@discussion This macro is used when the class being declared has one or more '= 0' pure virtual methods and thus it is illegal to create an instance of this class.  It leaves the current privacy state as 'protected:'.
|   +---
@param className Name of class. NO QUOTES. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDeclareAbstractStructors
|   +---(
|   +---className
|   +---)
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---         
|   +---private
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---superClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---metaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---class
|   +--- 
|   +---MetaClass
|   +--- 
|   +---:
|   +--- 
|   +---public
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---{
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---MetaClass
|   +---(
|   +---)
|   +---;
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---virtual
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---}
|   +--- 
|   +---gMetaClass
|   +---;
|   +---                                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---friend
|   +--- 
|   +---class
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---)
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---~
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---/*
|   |   +--- 
|   |   +---Make primary constructor private in abstract 
|   |   +---*/
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassWithInit
|   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassWithInit
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---,
|   +--- 
|   +---init
|   +---)
|   +---        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---/*
|   |   +--- 
|   |   +---Class global data 
|   |   +---*/
|   +---                                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---/*
|   |   +--- 
|   |   +---Class member functions 
|   |   +---*/
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +--- 
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---/*
|   |   +--- 
|   |   +---The ::MetaClass constructor 
|   |   +---*/
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---#
|   +---className
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---init
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineAbstractStructors
|   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineAbstractStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +--- 
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---0
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineDefaultStructors
|   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineDefaultStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---new
|   +--- 
|   +---className
|   +---;
|   +--- 
|   +---}
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +--- 
|   +---:
|   +--- 
|   +---superClassName
|   +--- 
|   +---(
|   +---&
|   +---gMetaClass
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---gMetaClass
|   +---.
|   +---instanceConstructed
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndAbstractStructorsWithInit
|   +---
@abstract Primary definition macro for all abstract classes that a subclasses of OSObject.
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that is an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.  Once the OSMetaClass has been constructed, at load time, call the init routine.  NB you can not rely on the order of execution of the init routines.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndAbstractStructorsWithInit
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---,
|   +--- 
|   +---init
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---  
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---  
|   +---init
|   +---;
|   +--- 
|   +---}
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +--- 
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndStructorsWithInit
|   +---
@abstract See OSDefineMetaClassAndStructors
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that isn't an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.  Once the OSMetaClass has been constructed, at load time, call the init routine.  NB you can not rely on the order of execution of the init routines.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndStructorsWithInit
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---,
|   +--- 
|   +---init
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---  
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---  
|   +---init
|   +---;
|   +--- 
|   +---}
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---new
|   +--- 
|   +---className
|   +---;
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +--- 
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---&
|   +---gMetaClass
|   +---)
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---gMetaClass
|   +---.
|   +---instanceConstructed
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +--- 
|   +---Helpers 
|   +---*/
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClass
|   +---
@abstract Define an OSMetaClass instance, used for backward compatiblility only.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClass
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---  
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---  
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndStructors
|   +---
@abstract Define an OSMetaClass subclass and the runtime system routines.
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that isn't an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---        
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---   
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---   
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                  
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---   
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---   
|   +---;
|   +--- 
|   +---}
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---new
|   +--- 
|   +---className
|   +---;
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +--- 
|   +---:
|   +---   
|   +---superClassName
|   +--- 
|   +---(
|   +---&
|   +---gMetaClass
|   +---)
|   +---                  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---gMetaClass
|   +---.
|   +---instanceConstructed
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndAbstractStructors
|   +---
@abstract Define an OSMetaClass subclass and the runtime system routines.
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that is an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndAbstractStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---   
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---   
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                  
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---   
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---   
|   +---;
|   +--- 
|   +---}
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +--- 
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Dynamic vtable patchup support routines and types
|   +---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---reservedCalled
+---(
|   +---int
|   +--- 
|   +---ind
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDeclareReservedUnused
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---APPLE_KEXT_PAD_METHOD
|   +--- 
|   +---void
|   +--- 
|   +---_RESERVED
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---classname
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---index
|   +--- 
|   +---(
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDeclareReservedUsed
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDefineReservedUnused
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---void
|   +--- 
|   +---classname
|   +--- 
|   +---::
|   +---_RESERVED
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---classname
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---index
|   +--- 
|   +---(
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---{
|   +--- 
|   +---APPLE_KEXT_PAD_IMPL
|   +---(
|   +---index
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDefineReservedUsed
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---IOKit debug internal routines.
|   +---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---printInstanceCounts
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---serializeClassDictionary
+---(
|   +---OSDictionary
|   +--- 
|   +---*
|   +---dict
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---private
+---:
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Obsolete APIs
|   +---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSDictionary
+--- 
+---*
+---getClassDictionary
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---serialize
+---(
|   +---OSSerialize
|   +--- 
|   +---*
|   +---s
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Virtual Padding functions for MetaClass's
|   +---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---0
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---1
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---2
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---3
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---4
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---5
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---6
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---7
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: release (HeaderDoc::Function)
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---release
+---(
|   +---)
+--- 
+---const
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function release
|   +---
@abstract Implement abstract but should no dynamic allocation is allowed 
|   +---
@param when ignored. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---release
+---(
|   +---int
|   +--- 
|   +---when
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function taggedRetain
|   +---
@abstract Retain a tagged reference in this object.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---taggedRetain
+---(
|   +---const
|   +--- 
|   +---void
|   +--- 
|   +---*
|   +---tag
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function release
|   +---
@abstract Release a tagged reference to this object
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---taggedRelease
+---(
|   +---const
|   +--- 
|   +---void
|   +--- 
|   +---*
|   +---tag
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function release
|   +---
@abstract Release a tagged reference to this object
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---taggedRelease
+---(
|   +---const
|   +--- 
|   +---void
|   +--- 
|   +---*
|   +---tag
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---int
|   +--- 
|   +---when
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getRetainCount
|   +---
@abstract Implement abstract but should no dynamic allocation is allowed 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---int
+--- 
+---getRetainCount
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---const
+--- 
+---OSMetaClass
+--- 
+---*
+--- 
+---getMetaClass
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSMetaClass
|   +---
@abstract Constructor for OSMetaClass objects
|   +---
@discussion This constructor is protected and cannot not be used to instantiate an OSMetaClass object, i.e. OSMetaClass is an abstract class.  This function stores the currently constructing OSMetaClass instance away for later processing.  See preModLoad and postModLoad.
|   +---
@param inClassName cString of the name of the class this meta-class represents.
|   +---
@param inSuperClassName cString of the name of the super class.
|   +---
@param inClassSize sizeof the class. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-OSMetaClass (HAS STATE)
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---inClassName
|   +---,
|   +---[ NEWLINE ]
|   +---                
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---inSuperClass
|   +---,
|   +---[ NEWLINE ]
|   +---                
|   +---unsigned
|   +--- 
|   +---int
|   +--- 
|   +---inClassSize
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function ~OSMetaClass
|   +---
@abstract Destructor for OSMetaClass objects
|   +---
@discussion If this function is called it means that the object code that implemented this class is actually in the process of unloading.  The destructor removes all reference's to the subclass from the runtime type information system. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---~
+---OSMetaClass
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Needs to be overriden as NULL as all OSMetaClass objects are allocated
|   +---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---statically at compile time, don't accidently try to free them.
|   +---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---operator
+--- 
+---delete
+---(
|   +---void
|   +--- 
|   +---*
|   +---,
|   +--- 
|   +---size_t
|   +---)
+--- 
+---;
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---const
+--- 
+---OSMetaClass
+--- 
+---*
+--- 
+---const
+--- 
+---metaClass
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function preModLoad
|   +---
@abstract Prepare the runtime type system for the load of a module.
|   +---
@discussion Prepare the runtime type information system for the loading of new all meta-classes constructed between now and the next postModLoad.  preModLoad grab's a lock so that the runtime type information system loading can be protected, the lock is released by the postModLoad function.  Any OSMetaClass that is constructed between the bracketing pre and post calls will be assosiated with the module name.
|   +---
@param kmodName globally unique cString name of the kernel module being loaded. 
|   +---
@result If success full return a handle to be used in later calls 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---*
+---preModLoad
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---kmodName
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkModLoad
|   +---
@abstract Check if the current load attempt is still OK.
|   +---
@param loadHandle Handle returned when a successful call to preModLoad is made.
|   +---
@result true if no error's are outstanding and the system is primed to recieve more objects. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---bool
+--- 
+---checkModLoad
+---(
|   +---void
|   +--- 
|   +---*
|   +---loadHandle
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function postModLoad
|   +---
@abstract Finish postprocessing on a kernel module's meta-classes.
|   +---
@discussion As the order of static object construction is undefined it is necessary to process the constructors in two phases.  These phases rely on global information that is created be the preparation step, preModLoad, which also guarantees single threading between multiple modules.  Phase one was the static construction of each meta-class object one by one withing the context prepared by the preModLoad call.  postModLoad is the second phase of processing.  Inserts links all of the super class inheritance chains up, inserts the meta-classes into the global register of classes and records for each meta-class which kernel module caused it's construction.  Finally it cleans up the temporary storage and releases the single threading lock and returns whatever error has been recorded in during the construction phase or the post processing phase. 
|   +---
@param loadHandle Handle returned when a successful call to preModLoad is made.
|   +---
@result Error code of the first error encountered. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSReturn
+--- 
+---postModLoad
+---(
|   +---void
|   +--- 
|   +---*
|   +---loadHandle
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function modHasInstance
|   +---
@abstract Do any of the objects represented by OSMetaClass and associated with the given kernel module name have instances?
|   +---
@discussion Check all meta-classes associated with the module name and check their instance counts.  This function is used to check to see if a module can be unloaded.  Obviously if an instance is still outstanding it isn't safe to unload the code that relies on that object.
|   +---
@param kmodName cString of the kernel module name.
|   +---
@result true if there are any current instances of any class in the module.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---bool
+--- 
+---modHasInstance
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---kmodName
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function reportModInstances
|   +---
@abstract Log any object that has instances in a module.
|   +---
@discussion When a developer ask for a module to be unloaded but the unload fails due to outstanding instances.  This function will report which classes still have instances.  It is intended mostly for developers to find problems with unloading classes and will be called automatically by 'verbose' unloads.
|   +---
@param kmodName cString of the kernel module name. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---reportModInstances
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---kmodName
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function considerUnloads
|   +---
@abstract Schedule module unloading.
|   +---
@discussion Schedule unused modules to be unloaded; called when IOKit matching goes idle. 
|   +---*/
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---considerUnloads
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function allocClassWithName
|   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   +---
@param name Name of the desired class. 
|   +---
@result pointer to an new object, 0 if not found or so memory. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---allocClassWithName
+---(
|   +---const
|   +--- 
|   +---OSSymbol
|   +--- 
|   +---*
|   +---name
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function allocClassWithName
|   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   +---
@param name Name of the desired class. 
|   +---
@result pointer to an new object, 0 if not found or so memory. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---allocClassWithName
+---(
|   +---const
|   +--- 
|   +---OSString
|   +--- 
|   +---*
|   +---name
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function allocClassWithName
|   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   +---
@param name Name of the desired class. 
|   +---
@result pointer to an new object, 0 if not found or so memory. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---allocClassWithName
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---name
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCastWithName
|   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   +---
@param name Name of the desired class or super class. 
|   +---
@param in object to be introspected. 
|   +---
@result in parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSMetaClassBase
+--- 
+---*
+---[ NEWLINE ]
+---        
+---checkMetaCastWithName
+---(
|   +---const
|   +--- 
|   +---OSSymbol
|   +--- 
|   +---*
|   +---name
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---in
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCastWithName
|   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   +---
@param name Name of the desired class or super class.
|   +---
@param in object to be introspected.
|   +---
@result in parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSMetaClassBase
+--- 
+---*
+---[ NEWLINE ]
+---        
+---checkMetaCastWithName
+---(
|   +---const
|   +--- 
|   +---OSString
|   +--- 
|   +---*
|   +---name
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---in
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCastWithName
|   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   +---
@param name Name of the desired class or super class.
|   +---
@param in object to be introspected.
|   +---
@result in parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSMetaClassBase
+--- 
+---*
+---[ NEWLINE ]
+---        
+---checkMetaCastWithName
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---name
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---in
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function instanceConstructed
|   +---
@abstract Counts the instances of the class behind this metaclass.
|   +---
@discussion Every non-abstract class that inherits from OSObject has a default constructor that calls it's own meta-class' instanceConstructed function.  This constructor is defined by the OSDefineMetaClassAndStructors macro (qv) that all OSObject subclasses must use.  Also if the instance count goes from 0 to 1, ie the first instance, then increment the instance count of the super class 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---instanceConstructed
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function instanceDestructed
|   +---
@abstract Removes one instance of the class behind this metaclass.
|   +---
@discussion OSObject's free function calls this method just before it does a 'delete this' on itself.  If the instance count transitions from 1 to 0, i.e. the last object, then one instance of the superclasses is also removed. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---instanceDestructed
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCast
|   +---
@abstract Ask a OSMetaClass instance if the given object is either an instance of it or an instance of a subclass of it.
|   +---
@param check Pointer of object to introspect.
|   +---
@result check parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-OSMetaClassBase (HAS STATE)
+--- 
+---*
+---checkMetaCast
+---(
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---check
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getInstanceCount
|   +---
@abstract How many instances of the class have been created.
|   +---
@result Count of the number of instances. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-unsigned (HAS STATE)
+--- 
+---int
+--- 
+---getInstanceCount
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getSuperClass
|   +---
@abstract 'Get'ter for the super class.
|   +---
@result Pointer to superclass, chain ends with 0 for OSObject. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-const (HAS STATE)
+--- 
+---OSMetaClass
+--- 
+---*
+---getSuperClass
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getKmodName
|   +---
@abstract 'Get'ter for the name of the kmod.
|   +---
@result OSSymbol representing the kmod name. 
|   +---*/
+---[ NEWLINE ]
+---        
+-*-const (HAS STATE)
+--- 
+---OSSymbol
+--- 
+---*
+---getKmodName
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getClassName
|   +---
@abstract 'Get'ter for class name.
|   +---
@result cString of the class name. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-const (HAS STATE)
+--- 
+---char
+--- 
+---*
+---getClassName
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getClassSize
|   +---
@abstract 'Get'ter for sizeof(class).
|   +---
@result sizeof of class that this OSMetaClass instance represents. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-unsigned (HAS STATE)
+--- 
+---int
+--- 
+---getClassSize
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function alloc
|   +---
@abstract Allocate an instance of the class that this OSMetaClass instance represents.
|   +---
@discussion This alloc function is analogous to the old ObjC class alloc method.  Typically not used by clients as the static function allocClassWithName is more generally useful.  Infact that function is implemented in terms of this  virtual function.  All subclass's of OSMetaClass must implement this function but that is what the OSDefineMetaClassAndStructor's families of macros does for the developer automatically. 
|   +---
@result Pointer to a new object with a retain count of 1. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---alloc
+---(
|   +---)
+--- 
+---const
+--- 
+---=
+--- 
+---0
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDeclareCommonStructors
|   +---
@abstract Basic helper macro for the OSDeclare for Default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDeclareCommonStructors
|   +---(
|   +---className
|   +---)
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---superClass
|   +---;
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---metaClass
|   +---;
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---class
|   +--- 
|   +---MetaClass
|   +--- 
|   +---:
|   +--- 
|   +---public
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---{
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---public
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---MetaClass
|   +---(
|   +---)
|   +---;
|   +---                                                
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---virtual
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---}
|   +--- 
|   +---gMetaClass
|   +---;
|   +---                                                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---friend
|   +--- 
|   +---class
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---)
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---~
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDeclareDefaultStructors
|   +---
@abstract One of the macro's used in the class declaration of all subclasses of OSObject, declares runtime type information data and interfaces. 
|   +---
@discussion Macro used in the class declaration all subclasses of OSObject, declares runtime type information data and interfaces.  By convention it should be 'called' immediately after the opening brace in a class declaration.  It leaves the current privacy state as 'protected:'.
|   +---
@param className Name of class. NO QUOTES. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDeclareDefaultStructors
|   +---(
|   +---className
|   +---)
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---         
|   +---private
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---superClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---metaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---class
|   +--- 
|   +---MetaClass
|   +--- 
|   +---:
|   +--- 
|   +---public
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---{
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---MetaClass
|   +---(
|   +---)
|   +---;
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---virtual
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---}
|   +--- 
|   +---gMetaClass
|   +---;
|   +---                                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---friend
|   +--- 
|   +---class
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---)
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---~
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +---                                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDeclareAbstractStructors
|   +---
@abstract One of the macro's used in the class declaration of all subclasses of OSObject, declares runtime type information data and interfaces. 
|   +---
@discussion This macro is used when the class being declared has one or more '= 0' pure virtual methods and thus it is illegal to create an instance of this class.  It leaves the current privacy state as 'protected:'.
|   +---
@param className Name of class. NO QUOTES. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDeclareAbstractStructors
|   +---(
|   +---className
|   +---)
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---         
|   +---private
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---superClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---metaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---class
|   +--- 
|   +---MetaClass
|   +--- 
|   +---:
|   +--- 
|   +---public
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---{
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---MetaClass
|   +---(
|   +---)
|   +---;
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---virtual
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---}
|   +--- 
|   +---gMetaClass
|   +---;
|   +---                                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---friend
|   +--- 
|   +---class
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---)
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---~
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---/*
|   |   +--- 
|   |   +---Make primary constructor private in abstract 
|   |   +---*/
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassWithInit
|   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassWithInit
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---,
|   +--- 
|   +---init
|   +---)
|   +---        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---/*
|   |   +--- 
|   |   +---Class global data 
|   |   +---*/
|   +---                                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---/*
|   |   +--- 
|   |   +---Class member functions 
|   |   +---*/
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +--- 
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---/*
|   |   +--- 
|   |   +---The ::MetaClass constructor 
|   |   +---*/
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---#
|   +---className
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---init
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineAbstractStructors
|   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineAbstractStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +--- 
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---0
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineDefaultStructors
|   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineDefaultStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---new
|   +--- 
|   +---className
|   +---;
|   +--- 
|   +---}
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +--- 
|   +---:
|   +--- 
|   +---superClassName
|   +--- 
|   +---(
|   +---&
|   +---gMetaClass
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---gMetaClass
|   +---.
|   +---instanceConstructed
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndAbstractStructorsWithInit
|   +---
@abstract Primary definition macro for all abstract classes that a subclasses of OSObject.
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that is an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.  Once the OSMetaClass has been constructed, at load time, call the init routine.  NB you can not rely on the order of execution of the init routines.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndAbstractStructorsWithInit
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---,
|   +--- 
|   +---init
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---  
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---  
|   +---init
|   +---;
|   +--- 
|   +---}
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +--- 
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndStructorsWithInit
|   +---
@abstract See OSDefineMetaClassAndStructors
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that isn't an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.  Once the OSMetaClass has been constructed, at load time, call the init routine.  NB you can not rely on the order of execution of the init routines.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndStructorsWithInit
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---,
|   +--- 
|   +---init
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---  
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---  
|   +---init
|   +---;
|   +--- 
|   +---}
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---new
|   +--- 
|   +---className
|   +---;
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +--- 
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---&
|   +---gMetaClass
|   +---)
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---gMetaClass
|   +---.
|   +---instanceConstructed
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +--- 
|   +---Helpers 
|   +---*/
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClass
|   +---
@abstract Define an OSMetaClass instance, used for backward compatiblility only.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClass
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---  
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---  
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndStructors
|   +---
@abstract Define an OSMetaClass subclass and the runtime system routines.
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that isn't an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---        
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---   
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---   
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                  
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---   
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---   
|   +---;
|   +--- 
|   +---}
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---new
|   +--- 
|   +---className
|   +---;
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +--- 
|   +---:
|   +---   
|   +---superClassName
|   +--- 
|   +---(
|   +---&
|   +---gMetaClass
|   +---)
|   +---                  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---gMetaClass
|   +---.
|   +---instanceConstructed
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndAbstractStructors
|   +---
@abstract Define an OSMetaClass subclass and the runtime system routines.
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that is an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndAbstractStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---   
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---   
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                  
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---   
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---   
|   +---;
|   +--- 
|   +---}
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +--- 
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Dynamic vtable patchup support routines and types
|   +---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---reservedCalled
+---(
|   +---int
|   +--- 
|   +---ind
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDeclareReservedUnused
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---APPLE_KEXT_PAD_METHOD
|   +--- 
|   +---void
|   +--- 
|   +---_RESERVED
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---classname
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---index
|   +--- 
|   +---(
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDeclareReservedUsed
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDefineReservedUnused
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---void
|   +--- 
|   +---classname
|   +--- 
|   +---::
|   +---_RESERVED
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---classname
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---index
|   +--- 
|   +---(
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---{
|   +--- 
|   +---APPLE_KEXT_PAD_IMPL
|   +---(
|   +---index
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDefineReservedUsed
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---IOKit debug internal routines.
|   +---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---printInstanceCounts
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---serializeClassDictionary
+---(
|   +---OSDictionary
|   +--- 
|   +---*
|   +---dict
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---private
+---:
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Obsolete APIs
|   +---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSDictionary
+--- 
+---*
+---getClassDictionary
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---serialize
+---(
|   +---OSSerialize
|   +--- 
|   +---*
|   +---s
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Virtual Padding functions for MetaClass's
|   +---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---0
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---1
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---2
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---3
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---4
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---5
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---6
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---7
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: release (HeaderDoc::Function)
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---release
+---(
|   +---int
|   +--- 
|   +---when
|   +---)
+--- 
+---const
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function taggedRetain
|   +---
@abstract Retain a tagged reference in this object.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---taggedRetain
+---(
|   +---const
|   +--- 
|   +---void
|   +--- 
|   +---*
|   +---tag
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function release
|   +---
@abstract Release a tagged reference to this object
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---taggedRelease
+---(
|   +---const
|   +--- 
|   +---void
|   +--- 
|   +---*
|   +---tag
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function release
|   +---
@abstract Release a tagged reference to this object
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---taggedRelease
+---(
|   +---const
|   +--- 
|   +---void
|   +--- 
|   +---*
|   +---tag
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---int
|   +--- 
|   +---when
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getRetainCount
|   +---
@abstract Implement abstract but should no dynamic allocation is allowed 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---int
+--- 
+---getRetainCount
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---const
+--- 
+---OSMetaClass
+--- 
+---*
+--- 
+---getMetaClass
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSMetaClass
|   +---
@abstract Constructor for OSMetaClass objects
|   +---
@discussion This constructor is protected and cannot not be used to instantiate an OSMetaClass object, i.e. OSMetaClass is an abstract class.  This function stores the currently constructing OSMetaClass instance away for later processing.  See preModLoad and postModLoad.
|   +---
@param inClassName cString of the name of the class this meta-class represents.
|   +---
@param inSuperClassName cString of the name of the super class.
|   +---
@param inClassSize sizeof the class. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-OSMetaClass (HAS STATE)
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---inClassName
|   +---,
|   +---[ NEWLINE ]
|   +---                
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---inSuperClass
|   +---,
|   +---[ NEWLINE ]
|   +---                
|   +---unsigned
|   +--- 
|   +---int
|   +--- 
|   +---inClassSize
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function ~OSMetaClass
|   +---
@abstract Destructor for OSMetaClass objects
|   +---
@discussion If this function is called it means that the object code that implemented this class is actually in the process of unloading.  The destructor removes all reference's to the subclass from the runtime type information system. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---~
+---OSMetaClass
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Needs to be overriden as NULL as all OSMetaClass objects are allocated
|   +---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---statically at compile time, don't accidently try to free them.
|   +---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---operator
+--- 
+---delete
+---(
|   +---void
|   +--- 
|   +---*
|   +---,
|   +--- 
|   +---size_t
|   +---)
+--- 
+---;
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---const
+--- 
+---OSMetaClass
+--- 
+---*
+--- 
+---const
+--- 
+---metaClass
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function preModLoad
|   +---
@abstract Prepare the runtime type system for the load of a module.
|   +---
@discussion Prepare the runtime type information system for the loading of new all meta-classes constructed between now and the next postModLoad.  preModLoad grab's a lock so that the runtime type information system loading can be protected, the lock is released by the postModLoad function.  Any OSMetaClass that is constructed between the bracketing pre and post calls will be assosiated with the module name.
|   +---
@param kmodName globally unique cString name of the kernel module being loaded. 
|   +---
@result If success full return a handle to be used in later calls 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---*
+---preModLoad
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---kmodName
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkModLoad
|   +---
@abstract Check if the current load attempt is still OK.
|   +---
@param loadHandle Handle returned when a successful call to preModLoad is made.
|   +---
@result true if no error's are outstanding and the system is primed to recieve more objects. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---bool
+--- 
+---checkModLoad
+---(
|   +---void
|   +--- 
|   +---*
|   +---loadHandle
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function postModLoad
|   +---
@abstract Finish postprocessing on a kernel module's meta-classes.
|   +---
@discussion As the order of static object construction is undefined it is necessary to process the constructors in two phases.  These phases rely on global information that is created be the preparation step, preModLoad, which also guarantees single threading between multiple modules.  Phase one was the static construction of each meta-class object one by one withing the context prepared by the preModLoad call.  postModLoad is the second phase of processing.  Inserts links all of the super class inheritance chains up, inserts the meta-classes into the global register of classes and records for each meta-class which kernel module caused it's construction.  Finally it cleans up the temporary storage and releases the single threading lock and returns whatever error has been recorded in during the construction phase or the post processing phase. 
|   +---
@param loadHandle Handle returned when a successful call to preModLoad is made.
|   +---
@result Error code of the first error encountered. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSReturn
+--- 
+---postModLoad
+---(
|   +---void
|   +--- 
|   +---*
|   +---loadHandle
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function modHasInstance
|   +---
@abstract Do any of the objects represented by OSMetaClass and associated with the given kernel module name have instances?
|   +---
@discussion Check all meta-classes associated with the module name and check their instance counts.  This function is used to check to see if a module can be unloaded.  Obviously if an instance is still outstanding it isn't safe to unload the code that relies on that object.
|   +---
@param kmodName cString of the kernel module name.
|   +---
@result true if there are any current instances of any class in the module.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---bool
+--- 
+---modHasInstance
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---kmodName
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function reportModInstances
|   +---
@abstract Log any object that has instances in a module.
|   +---
@discussion When a developer ask for a module to be unloaded but the unload fails due to outstanding instances.  This function will report which classes still have instances.  It is intended mostly for developers to find problems with unloading classes and will be called automatically by 'verbose' unloads.
|   +---
@param kmodName cString of the kernel module name. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---reportModInstances
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---kmodName
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function considerUnloads
|   +---
@abstract Schedule module unloading.
|   +---
@discussion Schedule unused modules to be unloaded; called when IOKit matching goes idle. 
|   +---*/
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---considerUnloads
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function allocClassWithName
|   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   +---
@param name Name of the desired class. 
|   +---
@result pointer to an new object, 0 if not found or so memory. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---allocClassWithName
+---(
|   +---const
|   +--- 
|   +---OSSymbol
|   +--- 
|   +---*
|   +---name
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function allocClassWithName
|   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   +---
@param name Name of the desired class. 
|   +---
@result pointer to an new object, 0 if not found or so memory. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---allocClassWithName
+---(
|   +---const
|   +--- 
|   +---OSString
|   +--- 
|   +---*
|   +---name
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function allocClassWithName
|   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   +---
@param name Name of the desired class. 
|   +---
@result pointer to an new object, 0 if not found or so memory. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---allocClassWithName
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---name
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCastWithName
|   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   +---
@param name Name of the desired class or super class. 
|   +---
@param in object to be introspected. 
|   +---
@result in parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSMetaClassBase
+--- 
+---*
+---[ NEWLINE ]
+---        
+---checkMetaCastWithName
+---(
|   +---const
|   +--- 
|   +---OSSymbol
|   +--- 
|   +---*
|   +---name
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---in
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCastWithName
|   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   +---
@param name Name of the desired class or super class.
|   +---
@param in object to be introspected.
|   +---
@result in parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSMetaClassBase
+--- 
+---*
+---[ NEWLINE ]
+---        
+---checkMetaCastWithName
+---(
|   +---const
|   +--- 
|   +---OSString
|   +--- 
|   +---*
|   +---name
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---in
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCastWithName
|   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   +---
@param name Name of the desired class or super class.
|   +---
@param in object to be introspected.
|   +---
@result in parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSMetaClassBase
+--- 
+---*
+---[ NEWLINE ]
+---        
+---checkMetaCastWithName
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---name
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---in
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function instanceConstructed
|   +---
@abstract Counts the instances of the class behind this metaclass.
|   +---
@discussion Every non-abstract class that inherits from OSObject has a default constructor that calls it's own meta-class' instanceConstructed function.  This constructor is defined by the OSDefineMetaClassAndStructors macro (qv) that all OSObject subclasses must use.  Also if the instance count goes from 0 to 1, ie the first instance, then increment the instance count of the super class 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---instanceConstructed
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function instanceDestructed
|   +---
@abstract Removes one instance of the class behind this metaclass.
|   +---
@discussion OSObject's free function calls this method just before it does a 'delete this' on itself.  If the instance count transitions from 1 to 0, i.e. the last object, then one instance of the superclasses is also removed. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---instanceDestructed
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCast
|   +---
@abstract Ask a OSMetaClass instance if the given object is either an instance of it or an instance of a subclass of it.
|   +---
@param check Pointer of object to introspect.
|   +---
@result check parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-OSMetaClassBase (HAS STATE)
+--- 
+---*
+---checkMetaCast
+---(
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---check
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getInstanceCount
|   +---
@abstract How many instances of the class have been created.
|   +---
@result Count of the number of instances. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-unsigned (HAS STATE)
+--- 
+---int
+--- 
+---getInstanceCount
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getSuperClass
|   +---
@abstract 'Get'ter for the super class.
|   +---
@result Pointer to superclass, chain ends with 0 for OSObject. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-const (HAS STATE)
+--- 
+---OSMetaClass
+--- 
+---*
+---getSuperClass
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getKmodName
|   +---
@abstract 'Get'ter for the name of the kmod.
|   +---
@result OSSymbol representing the kmod name. 
|   +---*/
+---[ NEWLINE ]
+---        
+-*-const (HAS STATE)
+--- 
+---OSSymbol
+--- 
+---*
+---getKmodName
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getClassName
|   +---
@abstract 'Get'ter for class name.
|   +---
@result cString of the class name. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-const (HAS STATE)
+--- 
+---char
+--- 
+---*
+---getClassName
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getClassSize
|   +---
@abstract 'Get'ter for sizeof(class).
|   +---
@result sizeof of class that this OSMetaClass instance represents. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-unsigned (HAS STATE)
+--- 
+---int
+--- 
+---getClassSize
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function alloc
|   +---
@abstract Allocate an instance of the class that this OSMetaClass instance represents.
|   +---
@discussion This alloc function is analogous to the old ObjC class alloc method.  Typically not used by clients as the static function allocClassWithName is more generally useful.  Infact that function is implemented in terms of this  virtual function.  All subclass's of OSMetaClass must implement this function but that is what the OSDefineMetaClassAndStructor's families of macros does for the developer automatically. 
|   +---
@result Pointer to a new object with a retain count of 1. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---alloc
+---(
|   +---)
+--- 
+---const
+--- 
+---=
+--- 
+---0
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDeclareCommonStructors
|   +---
@abstract Basic helper macro for the OSDeclare for Default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDeclareCommonStructors
|   +---(
|   +---className
|   +---)
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---superClass
|   +---;
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---metaClass
|   +---;
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---class
|   +--- 
|   +---MetaClass
|   +--- 
|   +---:
|   +--- 
|   +---public
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---{
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---public
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---MetaClass
|   +---(
|   +---)
|   +---;
|   +---                                                
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---virtual
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---}
|   +--- 
|   +---gMetaClass
|   +---;
|   +---                                                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---friend
|   +--- 
|   +---class
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---)
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---~
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDeclareDefaultStructors
|   +---
@abstract One of the macro's used in the class declaration of all subclasses of OSObject, declares runtime type information data and interfaces. 
|   +---
@discussion Macro used in the class declaration all subclasses of OSObject, declares runtime type information data and interfaces.  By convention it should be 'called' immediately after the opening brace in a class declaration.  It leaves the current privacy state as 'protected:'.
|   +---
@param className Name of class. NO QUOTES. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDeclareDefaultStructors
|   +---(
|   +---className
|   +---)
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---         
|   +---private
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---superClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---metaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---class
|   +--- 
|   +---MetaClass
|   +--- 
|   +---:
|   +--- 
|   +---public
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---{
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---MetaClass
|   +---(
|   +---)
|   +---;
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---virtual
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---}
|   +--- 
|   +---gMetaClass
|   +---;
|   +---                                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---friend
|   +--- 
|   +---class
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---)
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---~
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +---                                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDeclareAbstractStructors
|   +---
@abstract One of the macro's used in the class declaration of all subclasses of OSObject, declares runtime type information data and interfaces. 
|   +---
@discussion This macro is used when the class being declared has one or more '= 0' pure virtual methods and thus it is illegal to create an instance of this class.  It leaves the current privacy state as 'protected:'.
|   +---
@param className Name of class. NO QUOTES. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDeclareAbstractStructors
|   +---(
|   +---className
|   +---)
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---         
|   +---private
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---superClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---metaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---class
|   +--- 
|   +---MetaClass
|   +--- 
|   +---:
|   +--- 
|   +---public
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---{
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---MetaClass
|   +---(
|   +---)
|   +---;
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---virtual
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---}
|   +--- 
|   +---gMetaClass
|   +---;
|   +---                                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---friend
|   +--- 
|   +---class
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---)
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---~
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---/*
|   |   +--- 
|   |   +---Make primary constructor private in abstract 
|   |   +---*/
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassWithInit
|   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassWithInit
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---,
|   +--- 
|   +---init
|   +---)
|   +---        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---/*
|   |   +--- 
|   |   +---Class global data 
|   |   +---*/
|   +---                                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---/*
|   |   +--- 
|   |   +---Class member functions 
|   |   +---*/
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +--- 
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---/*
|   |   +--- 
|   |   +---The ::MetaClass constructor 
|   |   +---*/
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---#
|   +---className
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---init
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineAbstractStructors
|   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineAbstractStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +--- 
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---0
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineDefaultStructors
|   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineDefaultStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---new
|   +--- 
|   +---className
|   +---;
|   +--- 
|   +---}
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +--- 
|   +---:
|   +--- 
|   +---superClassName
|   +--- 
|   +---(
|   +---&
|   +---gMetaClass
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---gMetaClass
|   +---.
|   +---instanceConstructed
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndAbstractStructorsWithInit
|   +---
@abstract Primary definition macro for all abstract classes that a subclasses of OSObject.
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that is an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.  Once the OSMetaClass has been constructed, at load time, call the init routine.  NB you can not rely on the order of execution of the init routines.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndAbstractStructorsWithInit
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---,
|   +--- 
|   +---init
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---  
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---  
|   +---init
|   +---;
|   +--- 
|   +---}
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +--- 
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndStructorsWithInit
|   +---
@abstract See OSDefineMetaClassAndStructors
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that isn't an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.  Once the OSMetaClass has been constructed, at load time, call the init routine.  NB you can not rely on the order of execution of the init routines.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndStructorsWithInit
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---,
|   +--- 
|   +---init
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---  
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---  
|   +---init
|   +---;
|   +--- 
|   +---}
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---new
|   +--- 
|   +---className
|   +---;
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +--- 
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---&
|   +---gMetaClass
|   +---)
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---gMetaClass
|   +---.
|   +---instanceConstructed
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +--- 
|   +---Helpers 
|   +---*/
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClass
|   +---
@abstract Define an OSMetaClass instance, used for backward compatiblility only.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClass
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---  
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---  
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndStructors
|   +---
@abstract Define an OSMetaClass subclass and the runtime system routines.
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that isn't an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---        
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---   
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---   
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                  
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---   
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---   
|   +---;
|   +--- 
|   +---}
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---new
|   +--- 
|   +---className
|   +---;
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +--- 
|   +---:
|   +---   
|   +---superClassName
|   +--- 
|   +---(
|   +---&
|   +---gMetaClass
|   +---)
|   +---                  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---gMetaClass
|   +---.
|   +---instanceConstructed
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndAbstractStructors
|   +---
@abstract Define an OSMetaClass subclass and the runtime system routines.
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that is an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndAbstractStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---   
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---   
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                  
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---   
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---   
|   +---;
|   +--- 
|   +---}
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +--- 
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Dynamic vtable patchup support routines and types
|   +---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---reservedCalled
+---(
|   +---int
|   +--- 
|   +---ind
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDeclareReservedUnused
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---APPLE_KEXT_PAD_METHOD
|   +--- 
|   +---void
|   +--- 
|   +---_RESERVED
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---classname
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---index
|   +--- 
|   +---(
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDeclareReservedUsed
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDefineReservedUnused
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---void
|   +--- 
|   +---classname
|   +--- 
|   +---::
|   +---_RESERVED
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---classname
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---index
|   +--- 
|   +---(
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---{
|   +--- 
|   +---APPLE_KEXT_PAD_IMPL
|   +---(
|   +---index
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDefineReservedUsed
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---IOKit debug internal routines.
|   +---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---printInstanceCounts
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---serializeClassDictionary
+---(
|   +---OSDictionary
|   +--- 
|   +---*
|   +---dict
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---private
+---:
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Obsolete APIs
|   +---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSDictionary
+--- 
+---*
+---getClassDictionary
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---serialize
+---(
|   +---OSSerialize
|   +--- 
|   +---*
|   +---s
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Virtual Padding functions for MetaClass's
|   +---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---0
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---1
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---2
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---3
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---4
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---5
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---6
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---7
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: taggedRetain (HeaderDoc::Function)
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---taggedRetain
+---(
|   +---const
|   +--- 
|   +---void
|   +--- 
|   +---*
|   +---tag
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---)
+--- 
+---const
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function release
|   +---
@abstract Release a tagged reference to this object
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---taggedRelease
+---(
|   +---const
|   +--- 
|   +---void
|   +--- 
|   +---*
|   +---tag
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function release
|   +---
@abstract Release a tagged reference to this object
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---taggedRelease
+---(
|   +---const
|   +--- 
|   +---void
|   +--- 
|   +---*
|   +---tag
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---int
|   +--- 
|   +---when
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getRetainCount
|   +---
@abstract Implement abstract but should no dynamic allocation is allowed 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---int
+--- 
+---getRetainCount
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---const
+--- 
+---OSMetaClass
+--- 
+---*
+--- 
+---getMetaClass
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSMetaClass
|   +---
@abstract Constructor for OSMetaClass objects
|   +---
@discussion This constructor is protected and cannot not be used to instantiate an OSMetaClass object, i.e. OSMetaClass is an abstract class.  This function stores the currently constructing OSMetaClass instance away for later processing.  See preModLoad and postModLoad.
|   +---
@param inClassName cString of the name of the class this meta-class represents.
|   +---
@param inSuperClassName cString of the name of the super class.
|   +---
@param inClassSize sizeof the class. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-OSMetaClass (HAS STATE)
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---inClassName
|   +---,
|   +---[ NEWLINE ]
|   +---                
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---inSuperClass
|   +---,
|   +---[ NEWLINE ]
|   +---                
|   +---unsigned
|   +--- 
|   +---int
|   +--- 
|   +---inClassSize
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function ~OSMetaClass
|   +---
@abstract Destructor for OSMetaClass objects
|   +---
@discussion If this function is called it means that the object code that implemented this class is actually in the process of unloading.  The destructor removes all reference's to the subclass from the runtime type information system. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---~
+---OSMetaClass
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Needs to be overriden as NULL as all OSMetaClass objects are allocated
|   +---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---statically at compile time, don't accidently try to free them.
|   +---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---operator
+--- 
+---delete
+---(
|   +---void
|   +--- 
|   +---*
|   +---,
|   +--- 
|   +---size_t
|   +---)
+--- 
+---;
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---const
+--- 
+---OSMetaClass
+--- 
+---*
+--- 
+---const
+--- 
+---metaClass
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function preModLoad
|   +---
@abstract Prepare the runtime type system for the load of a module.
|   +---
@discussion Prepare the runtime type information system for the loading of new all meta-classes constructed between now and the next postModLoad.  preModLoad grab's a lock so that the runtime type information system loading can be protected, the lock is released by the postModLoad function.  Any OSMetaClass that is constructed between the bracketing pre and post calls will be assosiated with the module name.
|   +---
@param kmodName globally unique cString name of the kernel module being loaded. 
|   +---
@result If success full return a handle to be used in later calls 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---*
+---preModLoad
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---kmodName
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkModLoad
|   +---
@abstract Check if the current load attempt is still OK.
|   +---
@param loadHandle Handle returned when a successful call to preModLoad is made.
|   +---
@result true if no error's are outstanding and the system is primed to recieve more objects. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---bool
+--- 
+---checkModLoad
+---(
|   +---void
|   +--- 
|   +---*
|   +---loadHandle
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function postModLoad
|   +---
@abstract Finish postprocessing on a kernel module's meta-classes.
|   +---
@discussion As the order of static object construction is undefined it is necessary to process the constructors in two phases.  These phases rely on global information that is created be the preparation step, preModLoad, which also guarantees single threading between multiple modules.  Phase one was the static construction of each meta-class object one by one withing the context prepared by the preModLoad call.  postModLoad is the second phase of processing.  Inserts links all of the super class inheritance chains up, inserts the meta-classes into the global register of classes and records for each meta-class which kernel module caused it's construction.  Finally it cleans up the temporary storage and releases the single threading lock and returns whatever error has been recorded in during the construction phase or the post processing phase. 
|   +---
@param loadHandle Handle returned when a successful call to preModLoad is made.
|   +---
@result Error code of the first error encountered. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSReturn
+--- 
+---postModLoad
+---(
|   +---void
|   +--- 
|   +---*
|   +---loadHandle
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function modHasInstance
|   +---
@abstract Do any of the objects represented by OSMetaClass and associated with the given kernel module name have instances?
|   +---
@discussion Check all meta-classes associated with the module name and check their instance counts.  This function is used to check to see if a module can be unloaded.  Obviously if an instance is still outstanding it isn't safe to unload the code that relies on that object.
|   +---
@param kmodName cString of the kernel module name.
|   +---
@result true if there are any current instances of any class in the module.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---bool
+--- 
+---modHasInstance
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---kmodName
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function reportModInstances
|   +---
@abstract Log any object that has instances in a module.
|   +---
@discussion When a developer ask for a module to be unloaded but the unload fails due to outstanding instances.  This function will report which classes still have instances.  It is intended mostly for developers to find problems with unloading classes and will be called automatically by 'verbose' unloads.
|   +---
@param kmodName cString of the kernel module name. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---reportModInstances
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---kmodName
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function considerUnloads
|   +---
@abstract Schedule module unloading.
|   +---
@discussion Schedule unused modules to be unloaded; called when IOKit matching goes idle. 
|   +---*/
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---considerUnloads
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function allocClassWithName
|   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   +---
@param name Name of the desired class. 
|   +---
@result pointer to an new object, 0 if not found or so memory. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---allocClassWithName
+---(
|   +---const
|   +--- 
|   +---OSSymbol
|   +--- 
|   +---*
|   +---name
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function allocClassWithName
|   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   +---
@param name Name of the desired class. 
|   +---
@result pointer to an new object, 0 if not found or so memory. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---allocClassWithName
+---(
|   +---const
|   +--- 
|   +---OSString
|   +--- 
|   +---*
|   +---name
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function allocClassWithName
|   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   +---
@param name Name of the desired class. 
|   +---
@result pointer to an new object, 0 if not found or so memory. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---allocClassWithName
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---name
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCastWithName
|   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   +---
@param name Name of the desired class or super class. 
|   +---
@param in object to be introspected. 
|   +---
@result in parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSMetaClassBase
+--- 
+---*
+---[ NEWLINE ]
+---        
+---checkMetaCastWithName
+---(
|   +---const
|   +--- 
|   +---OSSymbol
|   +--- 
|   +---*
|   +---name
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---in
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCastWithName
|   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   +---
@param name Name of the desired class or super class.
|   +---
@param in object to be introspected.
|   +---
@result in parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSMetaClassBase
+--- 
+---*
+---[ NEWLINE ]
+---        
+---checkMetaCastWithName
+---(
|   +---const
|   +--- 
|   +---OSString
|   +--- 
|   +---*
|   +---name
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---in
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCastWithName
|   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   +---
@param name Name of the desired class or super class.
|   +---
@param in object to be introspected.
|   +---
@result in parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSMetaClassBase
+--- 
+---*
+---[ NEWLINE ]
+---        
+---checkMetaCastWithName
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---name
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---in
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function instanceConstructed
|   +---
@abstract Counts the instances of the class behind this metaclass.
|   +---
@discussion Every non-abstract class that inherits from OSObject has a default constructor that calls it's own meta-class' instanceConstructed function.  This constructor is defined by the OSDefineMetaClassAndStructors macro (qv) that all OSObject subclasses must use.  Also if the instance count goes from 0 to 1, ie the first instance, then increment the instance count of the super class 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---instanceConstructed
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function instanceDestructed
|   +---
@abstract Removes one instance of the class behind this metaclass.
|   +---
@discussion OSObject's free function calls this method just before it does a 'delete this' on itself.  If the instance count transitions from 1 to 0, i.e. the last object, then one instance of the superclasses is also removed. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---instanceDestructed
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCast
|   +---
@abstract Ask a OSMetaClass instance if the given object is either an instance of it or an instance of a subclass of it.
|   +---
@param check Pointer of object to introspect.
|   +---
@result check parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-OSMetaClassBase (HAS STATE)
+--- 
+---*
+---checkMetaCast
+---(
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---check
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getInstanceCount
|   +---
@abstract How many instances of the class have been created.
|   +---
@result Count of the number of instances. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-unsigned (HAS STATE)
+--- 
+---int
+--- 
+---getInstanceCount
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getSuperClass
|   +---
@abstract 'Get'ter for the super class.
|   +---
@result Pointer to superclass, chain ends with 0 for OSObject. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-const (HAS STATE)
+--- 
+---OSMetaClass
+--- 
+---*
+---getSuperClass
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getKmodName
|   +---
@abstract 'Get'ter for the name of the kmod.
|   +---
@result OSSymbol representing the kmod name. 
|   +---*/
+---[ NEWLINE ]
+---        
+-*-const (HAS STATE)
+--- 
+---OSSymbol
+--- 
+---*
+---getKmodName
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getClassName
|   +---
@abstract 'Get'ter for class name.
|   +---
@result cString of the class name. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-const (HAS STATE)
+--- 
+---char
+--- 
+---*
+---getClassName
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getClassSize
|   +---
@abstract 'Get'ter for sizeof(class).
|   +---
@result sizeof of class that this OSMetaClass instance represents. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-unsigned (HAS STATE)
+--- 
+---int
+--- 
+---getClassSize
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function alloc
|   +---
@abstract Allocate an instance of the class that this OSMetaClass instance represents.
|   +---
@discussion This alloc function is analogous to the old ObjC class alloc method.  Typically not used by clients as the static function allocClassWithName is more generally useful.  Infact that function is implemented in terms of this  virtual function.  All subclass's of OSMetaClass must implement this function but that is what the OSDefineMetaClassAndStructor's families of macros does for the developer automatically. 
|   +---
@result Pointer to a new object with a retain count of 1. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---alloc
+---(
|   +---)
+--- 
+---const
+--- 
+---=
+--- 
+---0
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDeclareCommonStructors
|   +---
@abstract Basic helper macro for the OSDeclare for Default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDeclareCommonStructors
|   +---(
|   +---className
|   +---)
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---superClass
|   +---;
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---metaClass
|   +---;
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---class
|   +--- 
|   +---MetaClass
|   +--- 
|   +---:
|   +--- 
|   +---public
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---{
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---public
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---MetaClass
|   +---(
|   +---)
|   +---;
|   +---                                                
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---virtual
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---}
|   +--- 
|   +---gMetaClass
|   +---;
|   +---                                                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---friend
|   +--- 
|   +---class
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---)
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---~
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDeclareDefaultStructors
|   +---
@abstract One of the macro's used in the class declaration of all subclasses of OSObject, declares runtime type information data and interfaces. 
|   +---
@discussion Macro used in the class declaration all subclasses of OSObject, declares runtime type information data and interfaces.  By convention it should be 'called' immediately after the opening brace in a class declaration.  It leaves the current privacy state as 'protected:'.
|   +---
@param className Name of class. NO QUOTES. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDeclareDefaultStructors
|   +---(
|   +---className
|   +---)
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---         
|   +---private
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---superClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---metaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---class
|   +--- 
|   +---MetaClass
|   +--- 
|   +---:
|   +--- 
|   +---public
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---{
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---MetaClass
|   +---(
|   +---)
|   +---;
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---virtual
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---}
|   +--- 
|   +---gMetaClass
|   +---;
|   +---                                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---friend
|   +--- 
|   +---class
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---)
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---~
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +---                                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDeclareAbstractStructors
|   +---
@abstract One of the macro's used in the class declaration of all subclasses of OSObject, declares runtime type information data and interfaces. 
|   +---
@discussion This macro is used when the class being declared has one or more '= 0' pure virtual methods and thus it is illegal to create an instance of this class.  It leaves the current privacy state as 'protected:'.
|   +---
@param className Name of class. NO QUOTES. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDeclareAbstractStructors
|   +---(
|   +---className
|   +---)
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---         
|   +---private
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---superClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---metaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---class
|   +--- 
|   +---MetaClass
|   +--- 
|   +---:
|   +--- 
|   +---public
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---{
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---MetaClass
|   +---(
|   +---)
|   +---;
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---virtual
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---}
|   +--- 
|   +---gMetaClass
|   +---;
|   +---                                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---friend
|   +--- 
|   +---class
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---)
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---~
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---/*
|   |   +--- 
|   |   +---Make primary constructor private in abstract 
|   |   +---*/
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassWithInit
|   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassWithInit
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---,
|   +--- 
|   +---init
|   +---)
|   +---        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---/*
|   |   +--- 
|   |   +---Class global data 
|   |   +---*/
|   +---                                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---/*
|   |   +--- 
|   |   +---Class member functions 
|   |   +---*/
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +--- 
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---/*
|   |   +--- 
|   |   +---The ::MetaClass constructor 
|   |   +---*/
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---#
|   +---className
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---init
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineAbstractStructors
|   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineAbstractStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +--- 
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---0
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineDefaultStructors
|   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineDefaultStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---new
|   +--- 
|   +---className
|   +---;
|   +--- 
|   +---}
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +--- 
|   +---:
|   +--- 
|   +---superClassName
|   +--- 
|   +---(
|   +---&
|   +---gMetaClass
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---gMetaClass
|   +---.
|   +---instanceConstructed
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndAbstractStructorsWithInit
|   +---
@abstract Primary definition macro for all abstract classes that a subclasses of OSObject.
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that is an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.  Once the OSMetaClass has been constructed, at load time, call the init routine.  NB you can not rely on the order of execution of the init routines.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndAbstractStructorsWithInit
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---,
|   +--- 
|   +---init
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---  
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---  
|   +---init
|   +---;
|   +--- 
|   +---}
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +--- 
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndStructorsWithInit
|   +---
@abstract See OSDefineMetaClassAndStructors
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that isn't an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.  Once the OSMetaClass has been constructed, at load time, call the init routine.  NB you can not rely on the order of execution of the init routines.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndStructorsWithInit
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---,
|   +--- 
|   +---init
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---  
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---  
|   +---init
|   +---;
|   +--- 
|   +---}
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---new
|   +--- 
|   +---className
|   +---;
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +--- 
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---&
|   +---gMetaClass
|   +---)
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---gMetaClass
|   +---.
|   +---instanceConstructed
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +--- 
|   +---Helpers 
|   +---*/
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClass
|   +---
@abstract Define an OSMetaClass instance, used for backward compatiblility only.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClass
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---  
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---  
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndStructors
|   +---
@abstract Define an OSMetaClass subclass and the runtime system routines.
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that isn't an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---        
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---   
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---   
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                  
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---   
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---   
|   +---;
|   +--- 
|   +---}
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---new
|   +--- 
|   +---className
|   +---;
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +--- 
|   +---:
|   +---   
|   +---superClassName
|   +--- 
|   +---(
|   +---&
|   +---gMetaClass
|   +---)
|   +---                  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---gMetaClass
|   +---.
|   +---instanceConstructed
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndAbstractStructors
|   +---
@abstract Define an OSMetaClass subclass and the runtime system routines.
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that is an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndAbstractStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---   
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---   
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                  
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---   
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---   
|   +---;
|   +--- 
|   +---}
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +--- 
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Dynamic vtable patchup support routines and types
|   +---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---reservedCalled
+---(
|   +---int
|   +--- 
|   +---ind
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDeclareReservedUnused
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---APPLE_KEXT_PAD_METHOD
|   +--- 
|   +---void
|   +--- 
|   +---_RESERVED
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---classname
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---index
|   +--- 
|   +---(
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDeclareReservedUsed
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDefineReservedUnused
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---void
|   +--- 
|   +---classname
|   +--- 
|   +---::
|   +---_RESERVED
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---classname
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---index
|   +--- 
|   +---(
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---{
|   +--- 
|   +---APPLE_KEXT_PAD_IMPL
|   +---(
|   +---index
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDefineReservedUsed
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---IOKit debug internal routines.
|   +---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---printInstanceCounts
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---serializeClassDictionary
+---(
|   +---OSDictionary
|   +--- 
|   +---*
|   +---dict
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---private
+---:
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Obsolete APIs
|   +---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSDictionary
+--- 
+---*
+---getClassDictionary
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---serialize
+---(
|   +---OSSerialize
|   +--- 
|   +---*
|   +---s
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Virtual Padding functions for MetaClass's
|   +---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---0
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---1
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---2
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---3
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---4
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---5
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---6
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---7
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: taggedRelease (HeaderDoc::Function)
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---taggedRelease
+---(
|   +---const
|   +--- 
|   +---void
|   +--- 
|   +---*
|   +---tag
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---)
+--- 
+---const
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function release
|   +---
@abstract Release a tagged reference to this object
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---taggedRelease
+---(
|   +---const
|   +--- 
|   +---void
|   +--- 
|   +---*
|   +---tag
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---int
|   +--- 
|   +---when
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getRetainCount
|   +---
@abstract Implement abstract but should no dynamic allocation is allowed 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---int
+--- 
+---getRetainCount
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---const
+--- 
+---OSMetaClass
+--- 
+---*
+--- 
+---getMetaClass
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSMetaClass
|   +---
@abstract Constructor for OSMetaClass objects
|   +---
@discussion This constructor is protected and cannot not be used to instantiate an OSMetaClass object, i.e. OSMetaClass is an abstract class.  This function stores the currently constructing OSMetaClass instance away for later processing.  See preModLoad and postModLoad.
|   +---
@param inClassName cString of the name of the class this meta-class represents.
|   +---
@param inSuperClassName cString of the name of the super class.
|   +---
@param inClassSize sizeof the class. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-OSMetaClass (HAS STATE)
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---inClassName
|   +---,
|   +---[ NEWLINE ]
|   +---                
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---inSuperClass
|   +---,
|   +---[ NEWLINE ]
|   +---                
|   +---unsigned
|   +--- 
|   +---int
|   +--- 
|   +---inClassSize
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function ~OSMetaClass
|   +---
@abstract Destructor for OSMetaClass objects
|   +---
@discussion If this function is called it means that the object code that implemented this class is actually in the process of unloading.  The destructor removes all reference's to the subclass from the runtime type information system. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---~
+---OSMetaClass
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Needs to be overriden as NULL as all OSMetaClass objects are allocated
|   +---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---statically at compile time, don't accidently try to free them.
|   +---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---operator
+--- 
+---delete
+---(
|   +---void
|   +--- 
|   +---*
|   +---,
|   +--- 
|   +---size_t
|   +---)
+--- 
+---;
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---const
+--- 
+---OSMetaClass
+--- 
+---*
+--- 
+---const
+--- 
+---metaClass
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function preModLoad
|   +---
@abstract Prepare the runtime type system for the load of a module.
|   +---
@discussion Prepare the runtime type information system for the loading of new all meta-classes constructed between now and the next postModLoad.  preModLoad grab's a lock so that the runtime type information system loading can be protected, the lock is released by the postModLoad function.  Any OSMetaClass that is constructed between the bracketing pre and post calls will be assosiated with the module name.
|   +---
@param kmodName globally unique cString name of the kernel module being loaded. 
|   +---
@result If success full return a handle to be used in later calls 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---*
+---preModLoad
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---kmodName
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkModLoad
|   +---
@abstract Check if the current load attempt is still OK.
|   +---
@param loadHandle Handle returned when a successful call to preModLoad is made.
|   +---
@result true if no error's are outstanding and the system is primed to recieve more objects. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---bool
+--- 
+---checkModLoad
+---(
|   +---void
|   +--- 
|   +---*
|   +---loadHandle
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function postModLoad
|   +---
@abstract Finish postprocessing on a kernel module's meta-classes.
|   +---
@discussion As the order of static object construction is undefined it is necessary to process the constructors in two phases.  These phases rely on global information that is created be the preparation step, preModLoad, which also guarantees single threading between multiple modules.  Phase one was the static construction of each meta-class object one by one withing the context prepared by the preModLoad call.  postModLoad is the second phase of processing.  Inserts links all of the super class inheritance chains up, inserts the meta-classes into the global register of classes and records for each meta-class which kernel module caused it's construction.  Finally it cleans up the temporary storage and releases the single threading lock and returns whatever error has been recorded in during the construction phase or the post processing phase. 
|   +---
@param loadHandle Handle returned when a successful call to preModLoad is made.
|   +---
@result Error code of the first error encountered. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSReturn
+--- 
+---postModLoad
+---(
|   +---void
|   +--- 
|   +---*
|   +---loadHandle
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function modHasInstance
|   +---
@abstract Do any of the objects represented by OSMetaClass and associated with the given kernel module name have instances?
|   +---
@discussion Check all meta-classes associated with the module name and check their instance counts.  This function is used to check to see if a module can be unloaded.  Obviously if an instance is still outstanding it isn't safe to unload the code that relies on that object.
|   +---
@param kmodName cString of the kernel module name.
|   +---
@result true if there are any current instances of any class in the module.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---bool
+--- 
+---modHasInstance
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---kmodName
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function reportModInstances
|   +---
@abstract Log any object that has instances in a module.
|   +---
@discussion When a developer ask for a module to be unloaded but the unload fails due to outstanding instances.  This function will report which classes still have instances.  It is intended mostly for developers to find problems with unloading classes and will be called automatically by 'verbose' unloads.
|   +---
@param kmodName cString of the kernel module name. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---reportModInstances
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---kmodName
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function considerUnloads
|   +---
@abstract Schedule module unloading.
|   +---
@discussion Schedule unused modules to be unloaded; called when IOKit matching goes idle. 
|   +---*/
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---considerUnloads
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function allocClassWithName
|   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   +---
@param name Name of the desired class. 
|   +---
@result pointer to an new object, 0 if not found or so memory. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---allocClassWithName
+---(
|   +---const
|   +--- 
|   +---OSSymbol
|   +--- 
|   +---*
|   +---name
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function allocClassWithName
|   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   +---
@param name Name of the desired class. 
|   +---
@result pointer to an new object, 0 if not found or so memory. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---allocClassWithName
+---(
|   +---const
|   +--- 
|   +---OSString
|   +--- 
|   +---*
|   +---name
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function allocClassWithName
|   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   +---
@param name Name of the desired class. 
|   +---
@result pointer to an new object, 0 if not found or so memory. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---allocClassWithName
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---name
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCastWithName
|   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   +---
@param name Name of the desired class or super class. 
|   +---
@param in object to be introspected. 
|   +---
@result in parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSMetaClassBase
+--- 
+---*
+---[ NEWLINE ]
+---        
+---checkMetaCastWithName
+---(
|   +---const
|   +--- 
|   +---OSSymbol
|   +--- 
|   +---*
|   +---name
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---in
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCastWithName
|   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   +---
@param name Name of the desired class or super class.
|   +---
@param in object to be introspected.
|   +---
@result in parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSMetaClassBase
+--- 
+---*
+---[ NEWLINE ]
+---        
+---checkMetaCastWithName
+---(
|   +---const
|   +--- 
|   +---OSString
|   +--- 
|   +---*
|   +---name
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---in
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCastWithName
|   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   +---
@param name Name of the desired class or super class.
|   +---
@param in object to be introspected.
|   +---
@result in parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSMetaClassBase
+--- 
+---*
+---[ NEWLINE ]
+---        
+---checkMetaCastWithName
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---name
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---in
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function instanceConstructed
|   +---
@abstract Counts the instances of the class behind this metaclass.
|   +---
@discussion Every non-abstract class that inherits from OSObject has a default constructor that calls it's own meta-class' instanceConstructed function.  This constructor is defined by the OSDefineMetaClassAndStructors macro (qv) that all OSObject subclasses must use.  Also if the instance count goes from 0 to 1, ie the first instance, then increment the instance count of the super class 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---instanceConstructed
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function instanceDestructed
|   +---
@abstract Removes one instance of the class behind this metaclass.
|   +---
@discussion OSObject's free function calls this method just before it does a 'delete this' on itself.  If the instance count transitions from 1 to 0, i.e. the last object, then one instance of the superclasses is also removed. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---instanceDestructed
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCast
|   +---
@abstract Ask a OSMetaClass instance if the given object is either an instance of it or an instance of a subclass of it.
|   +---
@param check Pointer of object to introspect.
|   +---
@result check parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-OSMetaClassBase (HAS STATE)
+--- 
+---*
+---checkMetaCast
+---(
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---check
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getInstanceCount
|   +---
@abstract How many instances of the class have been created.
|   +---
@result Count of the number of instances. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-unsigned (HAS STATE)
+--- 
+---int
+--- 
+---getInstanceCount
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getSuperClass
|   +---
@abstract 'Get'ter for the super class.
|   +---
@result Pointer to superclass, chain ends with 0 for OSObject. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-const (HAS STATE)
+--- 
+---OSMetaClass
+--- 
+---*
+---getSuperClass
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getKmodName
|   +---
@abstract 'Get'ter for the name of the kmod.
|   +---
@result OSSymbol representing the kmod name. 
|   +---*/
+---[ NEWLINE ]
+---        
+-*-const (HAS STATE)
+--- 
+---OSSymbol
+--- 
+---*
+---getKmodName
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getClassName
|   +---
@abstract 'Get'ter for class name.
|   +---
@result cString of the class name. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-const (HAS STATE)
+--- 
+---char
+--- 
+---*
+---getClassName
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getClassSize
|   +---
@abstract 'Get'ter for sizeof(class).
|   +---
@result sizeof of class that this OSMetaClass instance represents. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-unsigned (HAS STATE)
+--- 
+---int
+--- 
+---getClassSize
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function alloc
|   +---
@abstract Allocate an instance of the class that this OSMetaClass instance represents.
|   +---
@discussion This alloc function is analogous to the old ObjC class alloc method.  Typically not used by clients as the static function allocClassWithName is more generally useful.  Infact that function is implemented in terms of this  virtual function.  All subclass's of OSMetaClass must implement this function but that is what the OSDefineMetaClassAndStructor's families of macros does for the developer automatically. 
|   +---
@result Pointer to a new object with a retain count of 1. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---alloc
+---(
|   +---)
+--- 
+---const
+--- 
+---=
+--- 
+---0
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDeclareCommonStructors
|   +---
@abstract Basic helper macro for the OSDeclare for Default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDeclareCommonStructors
|   +---(
|   +---className
|   +---)
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---superClass
|   +---;
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---metaClass
|   +---;
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---class
|   +--- 
|   +---MetaClass
|   +--- 
|   +---:
|   +--- 
|   +---public
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---{
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---public
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---MetaClass
|   +---(
|   +---)
|   +---;
|   +---                                                
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---virtual
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---}
|   +--- 
|   +---gMetaClass
|   +---;
|   +---                                                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---friend
|   +--- 
|   +---class
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---)
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---~
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDeclareDefaultStructors
|   +---
@abstract One of the macro's used in the class declaration of all subclasses of OSObject, declares runtime type information data and interfaces. 
|   +---
@discussion Macro used in the class declaration all subclasses of OSObject, declares runtime type information data and interfaces.  By convention it should be 'called' immediately after the opening brace in a class declaration.  It leaves the current privacy state as 'protected:'.
|   +---
@param className Name of class. NO QUOTES. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDeclareDefaultStructors
|   +---(
|   +---className
|   +---)
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---         
|   +---private
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---superClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---metaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---class
|   +--- 
|   +---MetaClass
|   +--- 
|   +---:
|   +--- 
|   +---public
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---{
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---MetaClass
|   +---(
|   +---)
|   +---;
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---virtual
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---}
|   +--- 
|   +---gMetaClass
|   +---;
|   +---                                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---friend
|   +--- 
|   +---class
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---)
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---~
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +---                                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDeclareAbstractStructors
|   +---
@abstract One of the macro's used in the class declaration of all subclasses of OSObject, declares runtime type information data and interfaces. 
|   +---
@discussion This macro is used when the class being declared has one or more '= 0' pure virtual methods and thus it is illegal to create an instance of this class.  It leaves the current privacy state as 'protected:'.
|   +---
@param className Name of class. NO QUOTES. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDeclareAbstractStructors
|   +---(
|   +---className
|   +---)
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---         
|   +---private
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---superClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---metaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---class
|   +--- 
|   +---MetaClass
|   +--- 
|   +---:
|   +--- 
|   +---public
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---{
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---MetaClass
|   +---(
|   +---)
|   +---;
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---virtual
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---}
|   +--- 
|   +---gMetaClass
|   +---;
|   +---                                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---friend
|   +--- 
|   +---class
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---)
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---~
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---/*
|   |   +--- 
|   |   +---Make primary constructor private in abstract 
|   |   +---*/
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassWithInit
|   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassWithInit
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---,
|   +--- 
|   +---init
|   +---)
|   +---        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---/*
|   |   +--- 
|   |   +---Class global data 
|   |   +---*/
|   +---                                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---/*
|   |   +--- 
|   |   +---Class member functions 
|   |   +---*/
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +--- 
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---/*
|   |   +--- 
|   |   +---The ::MetaClass constructor 
|   |   +---*/
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---#
|   +---className
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---init
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineAbstractStructors
|   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineAbstractStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +--- 
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---0
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineDefaultStructors
|   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineDefaultStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---new
|   +--- 
|   +---className
|   +---;
|   +--- 
|   +---}
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +--- 
|   +---:
|   +--- 
|   +---superClassName
|   +--- 
|   +---(
|   +---&
|   +---gMetaClass
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---gMetaClass
|   +---.
|   +---instanceConstructed
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndAbstractStructorsWithInit
|   +---
@abstract Primary definition macro for all abstract classes that a subclasses of OSObject.
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that is an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.  Once the OSMetaClass has been constructed, at load time, call the init routine.  NB you can not rely on the order of execution of the init routines.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndAbstractStructorsWithInit
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---,
|   +--- 
|   +---init
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---  
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---  
|   +---init
|   +---;
|   +--- 
|   +---}
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +--- 
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndStructorsWithInit
|   +---
@abstract See OSDefineMetaClassAndStructors
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that isn't an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.  Once the OSMetaClass has been constructed, at load time, call the init routine.  NB you can not rely on the order of execution of the init routines.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndStructorsWithInit
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---,
|   +--- 
|   +---init
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---  
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---  
|   +---init
|   +---;
|   +--- 
|   +---}
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---new
|   +--- 
|   +---className
|   +---;
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +--- 
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---&
|   +---gMetaClass
|   +---)
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---gMetaClass
|   +---.
|   +---instanceConstructed
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +--- 
|   +---Helpers 
|   +---*/
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClass
|   +---
@abstract Define an OSMetaClass instance, used for backward compatiblility only.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClass
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---  
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---  
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndStructors
|   +---
@abstract Define an OSMetaClass subclass and the runtime system routines.
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that isn't an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---        
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---   
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---   
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                  
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---   
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---   
|   +---;
|   +--- 
|   +---}
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---new
|   +--- 
|   +---className
|   +---;
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +--- 
|   +---:
|   +---   
|   +---superClassName
|   +--- 
|   +---(
|   +---&
|   +---gMetaClass
|   +---)
|   +---                  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---gMetaClass
|   +---.
|   +---instanceConstructed
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndAbstractStructors
|   +---
@abstract Define an OSMetaClass subclass and the runtime system routines.
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that is an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndAbstractStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---   
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---   
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                  
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---   
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---   
|   +---;
|   +--- 
|   +---}
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +--- 
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Dynamic vtable patchup support routines and types
|   +---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---reservedCalled
+---(
|   +---int
|   +--- 
|   +---ind
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDeclareReservedUnused
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---APPLE_KEXT_PAD_METHOD
|   +--- 
|   +---void
|   +--- 
|   +---_RESERVED
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---classname
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---index
|   +--- 
|   +---(
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDeclareReservedUsed
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDefineReservedUnused
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---void
|   +--- 
|   +---classname
|   +--- 
|   +---::
|   +---_RESERVED
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---classname
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---index
|   +--- 
|   +---(
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---{
|   +--- 
|   +---APPLE_KEXT_PAD_IMPL
|   +---(
|   +---index
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDefineReservedUsed
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---IOKit debug internal routines.
|   +---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---printInstanceCounts
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---serializeClassDictionary
+---(
|   +---OSDictionary
|   +--- 
|   +---*
|   +---dict
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---private
+---:
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Obsolete APIs
|   +---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSDictionary
+--- 
+---*
+---getClassDictionary
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---serialize
+---(
|   +---OSSerialize
|   +--- 
|   +---*
|   +---s
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Virtual Padding functions for MetaClass's
|   +---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---0
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---1
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---2
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---3
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---4
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---5
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---6
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---7
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: taggedRelease (HeaderDoc::Function)
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---taggedRelease
+---(
|   +---const
|   +--- 
|   +---void
|   +--- 
|   +---*
|   +---tag
|   +--- 
|   +---=
|   +--- 
|   +---0
|   +---)
+--- 
+---const
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function release
|   +---
@abstract Release a tagged reference to this object
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---taggedRelease
+---(
|   +---const
|   +--- 
|   +---void
|   +--- 
|   +---*
|   +---tag
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---int
|   +--- 
|   +---when
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getRetainCount
|   +---
@abstract Implement abstract but should no dynamic allocation is allowed 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---int
+--- 
+---getRetainCount
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---const
+--- 
+---OSMetaClass
+--- 
+---*
+--- 
+---getMetaClass
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSMetaClass
|   +---
@abstract Constructor for OSMetaClass objects
|   +---
@discussion This constructor is protected and cannot not be used to instantiate an OSMetaClass object, i.e. OSMetaClass is an abstract class.  This function stores the currently constructing OSMetaClass instance away for later processing.  See preModLoad and postModLoad.
|   +---
@param inClassName cString of the name of the class this meta-class represents.
|   +---
@param inSuperClassName cString of the name of the super class.
|   +---
@param inClassSize sizeof the class. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-OSMetaClass (HAS STATE)
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---inClassName
|   +---,
|   +---[ NEWLINE ]
|   +---                
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---inSuperClass
|   +---,
|   +---[ NEWLINE ]
|   +---                
|   +---unsigned
|   +--- 
|   +---int
|   +--- 
|   +---inClassSize
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function ~OSMetaClass
|   +---
@abstract Destructor for OSMetaClass objects
|   +---
@discussion If this function is called it means that the object code that implemented this class is actually in the process of unloading.  The destructor removes all reference's to the subclass from the runtime type information system. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---~
+---OSMetaClass
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Needs to be overriden as NULL as all OSMetaClass objects are allocated
|   +---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---statically at compile time, don't accidently try to free them.
|   +---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---operator
+--- 
+---delete
+---(
|   +---void
|   +--- 
|   +---*
|   +---,
|   +--- 
|   +---size_t
|   +---)
+--- 
+---;
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---const
+--- 
+---OSMetaClass
+--- 
+---*
+--- 
+---const
+--- 
+---metaClass
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function preModLoad
|   +---
@abstract Prepare the runtime type system for the load of a module.
|   +---
@discussion Prepare the runtime type information system for the loading of new all meta-classes constructed between now and the next postModLoad.  preModLoad grab's a lock so that the runtime type information system loading can be protected, the lock is released by the postModLoad function.  Any OSMetaClass that is constructed between the bracketing pre and post calls will be assosiated with the module name.
|   +---
@param kmodName globally unique cString name of the kernel module being loaded. 
|   +---
@result If success full return a handle to be used in later calls 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---*
+---preModLoad
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---kmodName
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkModLoad
|   +---
@abstract Check if the current load attempt is still OK.
|   +---
@param loadHandle Handle returned when a successful call to preModLoad is made.
|   +---
@result true if no error's are outstanding and the system is primed to recieve more objects. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---bool
+--- 
+---checkModLoad
+---(
|   +---void
|   +--- 
|   +---*
|   +---loadHandle
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function postModLoad
|   +---
@abstract Finish postprocessing on a kernel module's meta-classes.
|   +---
@discussion As the order of static object construction is undefined it is necessary to process the constructors in two phases.  These phases rely on global information that is created be the preparation step, preModLoad, which also guarantees single threading between multiple modules.  Phase one was the static construction of each meta-class object one by one withing the context prepared by the preModLoad call.  postModLoad is the second phase of processing.  Inserts links all of the super class inheritance chains up, inserts the meta-classes into the global register of classes and records for each meta-class which kernel module caused it's construction.  Finally it cleans up the temporary storage and releases the single threading lock and returns whatever error has been recorded in during the construction phase or the post processing phase. 
|   +---
@param loadHandle Handle returned when a successful call to preModLoad is made.
|   +---
@result Error code of the first error encountered. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSReturn
+--- 
+---postModLoad
+---(
|   +---void
|   +--- 
|   +---*
|   +---loadHandle
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function modHasInstance
|   +---
@abstract Do any of the objects represented by OSMetaClass and associated with the given kernel module name have instances?
|   +---
@discussion Check all meta-classes associated with the module name and check their instance counts.  This function is used to check to see if a module can be unloaded.  Obviously if an instance is still outstanding it isn't safe to unload the code that relies on that object.
|   +---
@param kmodName cString of the kernel module name.
|   +---
@result true if there are any current instances of any class in the module.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---bool
+--- 
+---modHasInstance
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---kmodName
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function reportModInstances
|   +---
@abstract Log any object that has instances in a module.
|   +---
@discussion When a developer ask for a module to be unloaded but the unload fails due to outstanding instances.  This function will report which classes still have instances.  It is intended mostly for developers to find problems with unloading classes and will be called automatically by 'verbose' unloads.
|   +---
@param kmodName cString of the kernel module name. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---reportModInstances
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---kmodName
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function considerUnloads
|   +---
@abstract Schedule module unloading.
|   +---
@discussion Schedule unused modules to be unloaded; called when IOKit matching goes idle. 
|   +---*/
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---considerUnloads
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function allocClassWithName
|   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   +---
@param name Name of the desired class. 
|   +---
@result pointer to an new object, 0 if not found or so memory. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---allocClassWithName
+---(
|   +---const
|   +--- 
|   +---OSSymbol
|   +--- 
|   +---*
|   +---name
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function allocClassWithName
|   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   +---
@param name Name of the desired class. 
|   +---
@result pointer to an new object, 0 if not found or so memory. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---allocClassWithName
+---(
|   +---const
|   +--- 
|   +---OSString
|   +--- 
|   +---*
|   +---name
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function allocClassWithName
|   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   +---
@param name Name of the desired class. 
|   +---
@result pointer to an new object, 0 if not found or so memory. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---allocClassWithName
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---name
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCastWithName
|   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   +---
@param name Name of the desired class or super class. 
|   +---
@param in object to be introspected. 
|   +---
@result in parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSMetaClassBase
+--- 
+---*
+---[ NEWLINE ]
+---        
+---checkMetaCastWithName
+---(
|   +---const
|   +--- 
|   +---OSSymbol
|   +--- 
|   +---*
|   +---name
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---in
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCastWithName
|   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   +---
@param name Name of the desired class or super class.
|   +---
@param in object to be introspected.
|   +---
@result in parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSMetaClassBase
+--- 
+---*
+---[ NEWLINE ]
+---        
+---checkMetaCastWithName
+---(
|   +---const
|   +--- 
|   +---OSString
|   +--- 
|   +---*
|   +---name
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---in
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCastWithName
|   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   +---
@param name Name of the desired class or super class.
|   +---
@param in object to be introspected.
|   +---
@result in parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSMetaClassBase
+--- 
+---*
+---[ NEWLINE ]
+---        
+---checkMetaCastWithName
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---name
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---in
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function instanceConstructed
|   +---
@abstract Counts the instances of the class behind this metaclass.
|   +---
@discussion Every non-abstract class that inherits from OSObject has a default constructor that calls it's own meta-class' instanceConstructed function.  This constructor is defined by the OSDefineMetaClassAndStructors macro (qv) that all OSObject subclasses must use.  Also if the instance count goes from 0 to 1, ie the first instance, then increment the instance count of the super class 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---instanceConstructed
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function instanceDestructed
|   +---
@abstract Removes one instance of the class behind this metaclass.
|   +---
@discussion OSObject's free function calls this method just before it does a 'delete this' on itself.  If the instance count transitions from 1 to 0, i.e. the last object, then one instance of the superclasses is also removed. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---instanceDestructed
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCast
|   +---
@abstract Ask a OSMetaClass instance if the given object is either an instance of it or an instance of a subclass of it.
|   +---
@param check Pointer of object to introspect.
|   +---
@result check parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-OSMetaClassBase (HAS STATE)
+--- 
+---*
+---checkMetaCast
+---(
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---check
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getInstanceCount
|   +---
@abstract How many instances of the class have been created.
|   +---
@result Count of the number of instances. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-unsigned (HAS STATE)
+--- 
+---int
+--- 
+---getInstanceCount
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getSuperClass
|   +---
@abstract 'Get'ter for the super class.
|   +---
@result Pointer to superclass, chain ends with 0 for OSObject. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-const (HAS STATE)
+--- 
+---OSMetaClass
+--- 
+---*
+---getSuperClass
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getKmodName
|   +---
@abstract 'Get'ter for the name of the kmod.
|   +---
@result OSSymbol representing the kmod name. 
|   +---*/
+---[ NEWLINE ]
+---        
+-*-const (HAS STATE)
+--- 
+---OSSymbol
+--- 
+---*
+---getKmodName
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getClassName
|   +---
@abstract 'Get'ter for class name.
|   +---
@result cString of the class name. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-const (HAS STATE)
+--- 
+---char
+--- 
+---*
+---getClassName
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getClassSize
|   +---
@abstract 'Get'ter for sizeof(class).
|   +---
@result sizeof of class that this OSMetaClass instance represents. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-unsigned (HAS STATE)
+--- 
+---int
+--- 
+---getClassSize
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function alloc
|   +---
@abstract Allocate an instance of the class that this OSMetaClass instance represents.
|   +---
@discussion This alloc function is analogous to the old ObjC class alloc method.  Typically not used by clients as the static function allocClassWithName is more generally useful.  Infact that function is implemented in terms of this  virtual function.  All subclass's of OSMetaClass must implement this function but that is what the OSDefineMetaClassAndStructor's families of macros does for the developer automatically. 
|   +---
@result Pointer to a new object with a retain count of 1. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---alloc
+---(
|   +---)
+--- 
+---const
+--- 
+---=
+--- 
+---0
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDeclareCommonStructors
|   +---
@abstract Basic helper macro for the OSDeclare for Default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDeclareCommonStructors
|   +---(
|   +---className
|   +---)
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---superClass
|   +---;
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---metaClass
|   +---;
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---class
|   +--- 
|   +---MetaClass
|   +--- 
|   +---:
|   +--- 
|   +---public
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---{
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---public
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---MetaClass
|   +---(
|   +---)
|   +---;
|   +---                                                
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---virtual
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---}
|   +--- 
|   +---gMetaClass
|   +---;
|   +---                                                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---friend
|   +--- 
|   +---class
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---)
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---~
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDeclareDefaultStructors
|   +---
@abstract One of the macro's used in the class declaration of all subclasses of OSObject, declares runtime type information data and interfaces. 
|   +---
@discussion Macro used in the class declaration all subclasses of OSObject, declares runtime type information data and interfaces.  By convention it should be 'called' immediately after the opening brace in a class declaration.  It leaves the current privacy state as 'protected:'.
|   +---
@param className Name of class. NO QUOTES. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDeclareDefaultStructors
|   +---(
|   +---className
|   +---)
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---         
|   +---private
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---superClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---metaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---class
|   +--- 
|   +---MetaClass
|   +--- 
|   +---:
|   +--- 
|   +---public
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---{
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---MetaClass
|   +---(
|   +---)
|   +---;
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---virtual
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---}
|   +--- 
|   +---gMetaClass
|   +---;
|   +---                                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---friend
|   +--- 
|   +---class
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---)
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---~
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +---                                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDeclareAbstractStructors
|   +---
@abstract One of the macro's used in the class declaration of all subclasses of OSObject, declares runtime type information data and interfaces. 
|   +---
@discussion This macro is used when the class being declared has one or more '= 0' pure virtual methods and thus it is illegal to create an instance of this class.  It leaves the current privacy state as 'protected:'.
|   +---
@param className Name of class. NO QUOTES. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDeclareAbstractStructors
|   +---(
|   +---className
|   +---)
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---         
|   +---private
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---superClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---metaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---class
|   +--- 
|   +---MetaClass
|   +--- 
|   +---:
|   +--- 
|   +---public
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---{
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---MetaClass
|   +---(
|   +---)
|   +---;
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---virtual
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---}
|   +--- 
|   +---gMetaClass
|   +---;
|   +---                                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---friend
|   +--- 
|   +---class
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---)
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---~
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---/*
|   |   +--- 
|   |   +---Make primary constructor private in abstract 
|   |   +---*/
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassWithInit
|   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassWithInit
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---,
|   +--- 
|   +---init
|   +---)
|   +---        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---/*
|   |   +--- 
|   |   +---Class global data 
|   |   +---*/
|   +---                                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---/*
|   |   +--- 
|   |   +---Class member functions 
|   |   +---*/
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +--- 
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---/*
|   |   +--- 
|   |   +---The ::MetaClass constructor 
|   |   +---*/
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---#
|   +---className
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---init
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineAbstractStructors
|   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineAbstractStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +--- 
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---0
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineDefaultStructors
|   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineDefaultStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---new
|   +--- 
|   +---className
|   +---;
|   +--- 
|   +---}
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +--- 
|   +---:
|   +--- 
|   +---superClassName
|   +--- 
|   +---(
|   +---&
|   +---gMetaClass
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---gMetaClass
|   +---.
|   +---instanceConstructed
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndAbstractStructorsWithInit
|   +---
@abstract Primary definition macro for all abstract classes that a subclasses of OSObject.
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that is an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.  Once the OSMetaClass has been constructed, at load time, call the init routine.  NB you can not rely on the order of execution of the init routines.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndAbstractStructorsWithInit
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---,
|   +--- 
|   +---init
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---  
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---  
|   +---init
|   +---;
|   +--- 
|   +---}
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +--- 
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndStructorsWithInit
|   +---
@abstract See OSDefineMetaClassAndStructors
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that isn't an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.  Once the OSMetaClass has been constructed, at load time, call the init routine.  NB you can not rely on the order of execution of the init routines.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndStructorsWithInit
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---,
|   +--- 
|   +---init
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---  
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---  
|   +---init
|   +---;
|   +--- 
|   +---}
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---new
|   +--- 
|   +---className
|   +---;
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +--- 
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---&
|   +---gMetaClass
|   +---)
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---gMetaClass
|   +---.
|   +---instanceConstructed
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +--- 
|   +---Helpers 
|   +---*/
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClass
|   +---
@abstract Define an OSMetaClass instance, used for backward compatiblility only.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClass
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---  
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---  
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndStructors
|   +---
@abstract Define an OSMetaClass subclass and the runtime system routines.
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that isn't an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---        
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---   
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---   
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                  
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---   
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---   
|   +---;
|   +--- 
|   +---}
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---new
|   +--- 
|   +---className
|   +---;
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +--- 
|   +---:
|   +---   
|   +---superClassName
|   +--- 
|   +---(
|   +---&
|   +---gMetaClass
|   +---)
|   +---                  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---gMetaClass
|   +---.
|   +---instanceConstructed
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndAbstractStructors
|   +---
@abstract Define an OSMetaClass subclass and the runtime system routines.
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that is an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndAbstractStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                           
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---   
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---   
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                  
|   +---\
|   +---[ NEWLINE ]
|   +---                                              
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---   
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---   
|   +---;
|   +--- 
|   +---}
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +--- 
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Dynamic vtable patchup support routines and types
|   +---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---reservedCalled
+---(
|   +---int
|   +--- 
|   +---ind
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDeclareReservedUnused
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---APPLE_KEXT_PAD_METHOD
|   +--- 
|   +---void
|   +--- 
|   +---_RESERVED
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---classname
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---index
|   +--- 
|   +---(
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDeclareReservedUsed
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDefineReservedUnused
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---void
|   +--- 
|   +---classname
|   +--- 
|   +---::
|   +---_RESERVED
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---classname
|   +--- 
|   +---#
|   +---#
|   +--- 
|   +---index
|   +--- 
|   +---(
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---{
|   +--- 
|   +---APPLE_KEXT_PAD_IMPL
|   +---(
|   +---index
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSMetaClassDefineReservedUsed
|   +---(
|   +---classname
|   +---,
|   +--- 
|   +---index
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---IOKit debug internal routines.
|   +---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---printInstanceCounts
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---serializeClassDictionary
+---(
|   +---OSDictionary
|   +--- 
|   +---*
|   +---dict
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---private
+---:
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Obsolete APIs
|   +---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSDictionary
+--- 
+---*
+---getClassDictionary
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---bool
+--- 
+---serialize
+---(
|   +---OSSerialize
|   +--- 
|   +---*
|   +---s
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Virtual Padding functions for MetaClass's
|   +---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---0
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---1
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---2
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---3
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---4
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---5
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---6
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---                   
+---[ NEWLINE ]
+---    
+---private
+---:
+---                                                                
+---[ NEWLINE ]
+---    
+-*-APPLE_KEXT_PAD_METHOD (HAS STATE)
+--- 
+---void
+--- 
+---_RESERVED
+---  
+---OSMetaClass
+---   
+---7
+--- 
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---}
END OF OBJECT


OBJECT: taggedRelease (HeaderDoc::Function)
+-*-virtual (HAS STATE)
+--- 
+---void
+--- 
+---taggedRelease
+---(
|   +---const
|   +--- 
|   +---void
|   +--- 
|   +---*
|   +---tag
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---int
|   +--- 
|   +---when
|   +---)
+--- 
+---const
+---;
+--- 
-=-=-=-=-=-=- EODEC -=-=-=-=-=-=-
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getRetainCount
|   +---
@abstract Implement abstract but should no dynamic allocation is allowed 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---int
+--- 
+---getRetainCount
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---const
+--- 
+---OSMetaClass
+--- 
+---*
+--- 
+---getMetaClass
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSMetaClass
|   +---
@abstract Constructor for OSMetaClass objects
|   +---
@discussion This constructor is protected and cannot not be used to instantiate an OSMetaClass object, i.e. OSMetaClass is an abstract class.  This function stores the currently constructing OSMetaClass instance away for later processing.  See preModLoad and postModLoad.
|   +---
@param inClassName cString of the name of the class this meta-class represents.
|   +---
@param inSuperClassName cString of the name of the super class.
|   +---
@param inClassSize sizeof the class. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-OSMetaClass (HAS STATE)
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---inClassName
|   +---,
|   +---[ NEWLINE ]
|   +---                
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---inSuperClass
|   +---,
|   +---[ NEWLINE ]
|   +---                
|   +---unsigned
|   +--- 
|   +---int
|   +--- 
|   +---inClassSize
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function ~OSMetaClass
|   +---
@abstract Destructor for OSMetaClass objects
|   +---
@discussion If this function is called it means that the object code that implemented this class is actually in the process of unloading.  The destructor removes all reference's to the subclass from the runtime type information system. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---~
+---OSMetaClass
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---Needs to be overriden as NULL as all OSMetaClass objects are allocated
|   +---[ NEWLINE ]
+---    
+---//
|   +--- 
|   +---statically at compile time, don't accidently try to free them.
|   +---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---operator
+--- 
+---delete
+---(
|   +---void
|   +--- 
|   +---*
|   +---,
|   +--- 
|   +---size_t
|   +---)
+--- 
+---;
+---[ NEWLINE ]
+---[ NEWLINE ]
+---public
+---:
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---const
+--- 
+---OSMetaClass
+--- 
+---*
+--- 
+---const
+--- 
+---metaClass
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function preModLoad
|   +---
@abstract Prepare the runtime type system for the load of a module.
|   +---
@discussion Prepare the runtime type information system for the loading of new all meta-classes constructed between now and the next postModLoad.  preModLoad grab's a lock so that the runtime type information system loading can be protected, the lock is released by the postModLoad function.  Any OSMetaClass that is constructed between the bracketing pre and post calls will be assosiated with the module name.
|   +---
@param kmodName globally unique cString name of the kernel module being loaded. 
|   +---
@result If success full return a handle to be used in later calls 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---*
+---preModLoad
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---kmodName
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkModLoad
|   +---
@abstract Check if the current load attempt is still OK.
|   +---
@param loadHandle Handle returned when a successful call to preModLoad is made.
|   +---
@result true if no error's are outstanding and the system is primed to recieve more objects. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---bool
+--- 
+---checkModLoad
+---(
|   +---void
|   +--- 
|   +---*
|   +---loadHandle
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function postModLoad
|   +---
@abstract Finish postprocessing on a kernel module's meta-classes.
|   +---
@discussion As the order of static object construction is undefined it is necessary to process the constructors in two phases.  These phases rely on global information that is created be the preparation step, preModLoad, which also guarantees single threading between multiple modules.  Phase one was the static construction of each meta-class object one by one withing the context prepared by the preModLoad call.  postModLoad is the second phase of processing.  Inserts links all of the super class inheritance chains up, inserts the meta-classes into the global register of classes and records for each meta-class which kernel module caused it's construction.  Finally it cleans up the temporary storage and releases the single threading lock and returns whatever error has been recorded in during the construction phase or the post processing phase. 
|   +---
@param loadHandle Handle returned when a successful call to preModLoad is made.
|   +---
@result Error code of the first error encountered. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSReturn
+--- 
+---postModLoad
+---(
|   +---void
|   +--- 
|   +---*
|   +---loadHandle
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function modHasInstance
|   +---
@abstract Do any of the objects represented by OSMetaClass and associated with the given kernel module name have instances?
|   +---
@discussion Check all meta-classes associated with the module name and check their instance counts.  This function is used to check to see if a module can be unloaded.  Obviously if an instance is still outstanding it isn't safe to unload the code that relies on that object.
|   +---
@param kmodName cString of the kernel module name.
|   +---
@result true if there are any current instances of any class in the module.
|   +---[ NEWLINE ]
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---bool
+--- 
+---modHasInstance
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---kmodName
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function reportModInstances
|   +---
@abstract Log any object that has instances in a module.
|   +---
@discussion When a developer ask for a module to be unloaded but the unload fails due to outstanding instances.  This function will report which classes still have instances.  It is intended mostly for developers to find problems with unloading classes and will be called automatically by 'verbose' unloads.
|   +---
@param kmodName cString of the kernel module name. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---reportModInstances
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---kmodName
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function considerUnloads
|   +---
@abstract Schedule module unloading.
|   +---
@discussion Schedule unused modules to be unloaded; called when IOKit matching goes idle. 
|   +---*/
+---[ NEWLINE ]
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---void
+--- 
+---considerUnloads
+---(
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function allocClassWithName
|   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   +---
@param name Name of the desired class. 
|   +---
@result pointer to an new object, 0 if not found or so memory. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---allocClassWithName
+---(
|   +---const
|   +--- 
|   +---OSSymbol
|   +--- 
|   +---*
|   +---name
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function allocClassWithName
|   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   +---
@param name Name of the desired class. 
|   +---
@result pointer to an new object, 0 if not found or so memory. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---allocClassWithName
+---(
|   +---const
|   +--- 
|   +---OSString
|   +--- 
|   +---*
|   +---name
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function allocClassWithName
|   +---
@abstract Lookup a meta-class in the runtime type information system and return the results of an alloc call.
|   +---
@param name Name of the desired class. 
|   +---
@result pointer to an new object, 0 if not found or so memory. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---allocClassWithName
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---name
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCastWithName
|   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   +---
@param name Name of the desired class or super class. 
|   +---
@param in object to be introspected. 
|   +---
@result in parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSMetaClassBase
+--- 
+---*
+---[ NEWLINE ]
+---        
+---checkMetaCastWithName
+---(
|   +---const
|   +--- 
|   +---OSSymbol
|   +--- 
|   +---*
|   +---name
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---in
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCastWithName
|   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   +---
@param name Name of the desired class or super class.
|   +---
@param in object to be introspected.
|   +---
@result in parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSMetaClassBase
+--- 
+---*
+---[ NEWLINE ]
+---        
+---checkMetaCastWithName
+---(
|   +---const
|   +--- 
|   +---OSString
|   +--- 
|   +---*
|   +---name
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---in
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCastWithName
|   +---
@abstract Introspect an objects inheritance tree looking for a class of the given name.  Basis of MacOSX's kernel dynamic casting mechanism.
|   +---
@param name Name of the desired class or super class.
|   +---
@param in object to be introspected.
|   +---
@result in parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-static (HAS STATE)
+--- 
+---OSMetaClassBase
+--- 
+---*
+---[ NEWLINE ]
+---        
+---checkMetaCastWithName
+---(
|   +---const
|   +--- 
|   +---char
|   +--- 
|   +---*
|   +---name
|   +---,
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---in
|   +---)
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function instanceConstructed
|   +---
@abstract Counts the instances of the class behind this metaclass.
|   +---
@discussion Every non-abstract class that inherits from OSObject has a default constructor that calls it's own meta-class' instanceConstructed function.  This constructor is defined by the OSDefineMetaClassAndStructors macro (qv) that all OSObject subclasses must use.  Also if the instance count goes from 0 to 1, ie the first instance, then increment the instance count of the super class 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---instanceConstructed
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function instanceDestructed
|   +---
@abstract Removes one instance of the class behind this metaclass.
|   +---
@discussion OSObject's free function calls this method just before it does a 'delete this' on itself.  If the instance count transitions from 1 to 0, i.e. the last object, then one instance of the superclasses is also removed. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-void (HAS STATE)
+--- 
+---instanceDestructed
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function checkMetaCast
|   +---
@abstract Ask a OSMetaClass instance if the given object is either an instance of it or an instance of a subclass of it.
|   +---
@param check Pointer of object to introspect.
|   +---
@result check parameter if cast valid, 0 otherwise. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-OSMetaClassBase (HAS STATE)
+--- 
+---*
+---checkMetaCast
+---(
|   +---const
|   +--- 
|   +---OSMetaClassBase
|   +--- 
|   +---*
|   +---check
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getInstanceCount
|   +---
@abstract How many instances of the class have been created.
|   +---
@result Count of the number of instances. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-unsigned (HAS STATE)
+--- 
+---int
+--- 
+---getInstanceCount
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getSuperClass
|   +---
@abstract 'Get'ter for the super class.
|   +---
@result Pointer to superclass, chain ends with 0 for OSObject. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-const (HAS STATE)
+--- 
+---OSMetaClass
+--- 
+---*
+---getSuperClass
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getKmodName
|   +---
@abstract 'Get'ter for the name of the kmod.
|   +---
@result OSSymbol representing the kmod name. 
|   +---*/
+---[ NEWLINE ]
+---        
+-*-const (HAS STATE)
+--- 
+---OSSymbol
+--- 
+---*
+---getKmodName
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getClassName
|   +---
@abstract 'Get'ter for class name.
|   +---
@result cString of the class name. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-const (HAS STATE)
+--- 
+---char
+--- 
+---*
+---getClassName
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function getClassSize
|   +---
@abstract 'Get'ter for sizeof(class).
|   +---
@result sizeof of class that this OSMetaClass instance represents. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-unsigned (HAS STATE)
+--- 
+---int
+--- 
+---getClassSize
+---(
|   +---)
+--- 
+---const
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function alloc
|   +---
@abstract Allocate an instance of the class that this OSMetaClass instance represents.
|   +---
@discussion This alloc function is analogous to the old ObjC class alloc method.  Typically not used by clients as the static function allocClassWithName is more generally useful.  Infact that function is implemented in terms of this  virtual function.  All subclass's of OSMetaClass must implement this function but that is what the OSDefineMetaClassAndStructor's families of macros does for the developer automatically. 
|   +---
@result Pointer to a new object with a retain count of 1. 
|   +---*/
+---[ NEWLINE ]
+---    
+-*-virtual (HAS STATE)
+--- 
+---OSObject
+--- 
+---*
+---alloc
+---(
|   +---)
+--- 
+---const
+--- 
+---=
+--- 
+---0
+---;
+--- 
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDeclareCommonStructors
|   +---
@abstract Basic helper macro for the OSDeclare for Default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDeclareCommonStructors
|   +---(
|   +---className
|   +---)
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---superClass
|   +---;
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---metaClass
|   +---;
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---class
|   +--- 
|   +---MetaClass
|   +--- 
|   +---:
|   +--- 
|   +---public
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---{
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---public
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---MetaClass
|   +---(
|   +---)
|   +---;
|   +---                                                
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---virtual
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---}
|   +--- 
|   +---gMetaClass
|   +---;
|   +---                                                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---friend
|   +--- 
|   +---class
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---)
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---~
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDeclareDefaultStructors
|   +---
@abstract One of the macro's used in the class declaration of all subclasses of OSObject, declares runtime type information data and interfaces. 
|   +---
@discussion Macro used in the class declaration all subclasses of OSObject, declares runtime type information data and interfaces.  By convention it should be 'called' immediately after the opening brace in a class declaration.  It leaves the current privacy state as 'protected:'.
|   +---
@param className Name of class. NO QUOTES. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDeclareDefaultStructors
|   +---(
|   +---className
|   +---)
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---         
|   +---private
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---superClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---metaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---class
|   +--- 
|   +---MetaClass
|   +--- 
|   +---:
|   +--- 
|   +---public
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---{
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---MetaClass
|   +---(
|   +---)
|   +---;
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---virtual
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---}
|   +--- 
|   +---gMetaClass
|   +---;
|   +---                                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---friend
|   +--- 
|   +---class
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---)
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---~
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +---                                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDeclareAbstractStructors
|   +---
@abstract One of the macro's used in the class declaration of all subclasses of OSObject, declares runtime type information data and interfaces. 
|   +---
@discussion This macro is used when the class being declared has one or more '= 0' pure virtual methods and thus it is illegal to create an instance of this class.  It leaves the current privacy state as 'protected:'.
|   +---
@param className Name of class. NO QUOTES. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDeclareAbstractStructors
|   +---(
|   +---className
|   +---)
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---         
|   +---private
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---superClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---metaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---static
|   +--- 
|   +---class
|   +--- 
|   +---MetaClass
|   +--- 
|   +---:
|   +--- 
|   +---public
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---{
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---public
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---MetaClass
|   +---(
|   +---)
|   +---;
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---virtual
|   +--- 
|   +---OSObject
|   +--- 
|   +---*
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---}
|   +--- 
|   +---gMetaClass
|   +---;
|   +---                                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---friend
|   +--- 
|   +---class
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---;
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---                                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---)
|   +---;
|   +---                                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---virtual
|   +--- 
|   +---~
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +---                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---private
|   +---:
|   +---                                                                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---className
|   +--- 
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---/*
|   |   +--- 
|   |   +---Make primary constructor private in abstract 
|   |   +---*/
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---protected
|   +---:
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassWithInit
|   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassWithInit
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---,
|   +--- 
|   +---init
|   +---)
|   +---        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---/*
|   |   +--- 
|   |   +---Class global data 
|   |   +---*/
|   +---                                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---/*
|   |   +--- 
|   |   +---Class member functions 
|   |   +---*/
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +--- 
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---/*
|   |   +--- 
|   |   +---The ::MetaClass constructor 
|   |   +---*/
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---#
|   +---className
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---init
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineAbstractStructors
|   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineAbstractStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +--- 
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---0
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineDefaultStructors
|   +---
@abstract Basic helper macro for the OSDefineMetaClass for the default and Abstract macros, qv.  DO NOT USE.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineDefaultStructors
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                        
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---new
|   +--- 
|   +---className
|   +---;
|   +--- 
|   +---}
|   +---                                        
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +--- 
|   +---:
|   +--- 
|   +---superClassName
|   +--- 
|   +---(
|   +---&
|   +---gMetaClass
|   +---)
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---gMetaClass
|   +---.
|   +---instanceConstructed
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndAbstractStructorsWithInit
|   +---
@abstract Primary definition macro for all abstract classes that a subclasses of OSObject.
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that is an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.  Once the OSMetaClass has been constructed, at load time, call the init routine.  NB you can not rely on the order of execution of the init routines.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndAbstractStructorsWithInit
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---,
|   +--- 
|   +---init
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---  
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---  
|   +---init
|   +---;
|   +--- 
|   +---}
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +--- 
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClassAndStructorsWithInit
|   +---
@abstract See OSDefineMetaClassAndStructors
|   +---
@discussion Define an OSMetaClass subclass and the primary constructors and destructors for a subclass of OSObject that isn't an abstract class.  In general this 'function' is 'called' at the top of the file just before the first function is implemented for a particular class.  Once the OSMetaClass has been constructed, at load time, call the init routine.  NB you can not rely on the order of execution of the init routines.
|   +---
@param className Name of class. NO QUOTES and NO MACROS.
|   +---
@param superClassName Name of super class. NO QUOTES and NO MACROS.
|   +---
@param init Name of a function to call after the OSMetaClass is constructed. 
|   +---*/
+---[ NEWLINE ]
+-*-#define (HAS STATE)
|   +--- 
|   +---OSDefineMetaClassAndStructorsWithInit
|   +---(
|   +---className
|   +---,
|   +--- 
|   +---superClassName
|   +---,
|   +--- 
|   +---init
|   +---)
|   +--- 
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---metaClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---const
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---superClass
|   +--- 
|   +---=
|   +---                          
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---&
|   +---  
|   +---superClassName
|   +--- 
|   +---::
|   +---gMetaClass
|   +---;
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +---(
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +---meta
|   +---)
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---            
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---meta
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---~
|   +--- 
|   +---className
|   +---(
|   +---)
|   +--- 
|   +---{
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---const
|   +--- 
|   +---OSMetaClass
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---getMetaClass
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---&
|   +---gMetaClass
|   +---;
|   +--- 
|   +---}
|   +---                                                 
|   +---\
|   +---[ NEWLINE ]
|   +---                                             
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---MetaClass
|   +---(
|   +---)
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---:
|   +--- 
|   +---OSMetaClass
|   +---(
|   +---"
|   +---className
|   +---"
|   +---,
|   +--- 
|   +---className
|   +---::
|   +---superClass
|   +---,
|   +--- 
|   +---sizeof
|   +---(
|   +---className
|   +---)
|   +---)
|   +---  
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +---  
|   +---init
|   +---;
|   +--- 
|   +---}
|   +---                
|   +---\
|   +---[ NEWLINE ]
|   +---     
|   +---OSObject
|   +--- 
|   +---*
|   +--- 
|   +---className
|   +--- 
|   +---::
|   +---MetaClass
|   +---::
|   +---alloc
|   +---(
|   +---)
|   +--- 
|   +---const
|   +---                         
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---return
|   +--- 
|   +---new
|   +--- 
|   +---className
|   +---;
|   +--- 
|   +---}
|   +---                                         
|   +---\
|   +---[ NEWLINE ]
|   +---    
|   +---className
|   +--- 
|   +---::
|   +--- 
|   +---className
|   +--- 
|   +---(
|   +---)
|   +--- 
|   +---:
|   +---  
|   +---superClassName
|   +--- 
|   +---(
|   +---&
|   +---gMetaClass
|   +---)
|   +---                 
|   +---\
|   +---[ NEWLINE ]
|   +---        
|   +---{
|   +--- 
|   +---gMetaClass
|   +---.
|   +---instanceConstructed
|   +---(
|   +---)
|   +---;
|   +--- 
|   +---}
|   +---[ NEWLINE ]
+---[ NEWLINE ]
+---/*
|   +--- 
|   +---Helpers 
|   +---*/
+---[ NEWLINE ]
+---/*
|   +---!
|   +--- @function OSDefineMetaClass
|   +---
@abstract Define an OSMetaClass ins