     getClassList: (ctor)->
       result = while ctor and ctor isnt Factory
         item = ctor
-        ctor = ctor.super_
+        ctor = getParentClass ctor
         item
     getClassNameList: getClassNameList = (ctor)->
       result = while ctor and ctor isnt Factory
         item = ctor::name
-        ctor = ctor.super_
+        ctor = getParentClass ctor
         item
     path: (aClass, aRootName)->
       '/' + @pathArray(aClass, aRootName).join '/'

        result = result.substring(0, len-vFactoryName.length)
      ###
      if aBaseNameOnly # then remove Parent Name if any
        aParentClass = aClass.super_ unless aParentClass
        names = getClassNameList aParentClass
        names.push Factory.name
        if names.length

inherits              = require('inherits-ex/lib/inherits')
isInheritedFrom       = require('inherits-ex/lib/isInheritedFrom')
createObject          = require('inherits-ex/lib/createObject')
getPrototypeOf        = require('inherits-ex/lib/getPrototypeOf')
extend                = require('./extend')
isFunction            = (v)-> 'function' is typeof v
isString              = (v)-> 'string' is typeof v
isObject              = (v)-> v? and 'object' is typeof v
getObjectKeys         = Object.keys

getParentClass = (ctor)-> ctor.super_ || getPrototypeOf(ctor)

exports = module.exports = (Factory, aOptions)->
  if isObject aOptions
