           extendFilter aClass, AbilityClass, (k)-> not (k in vExcludes)
           if vAddtionalAbilityInjected
             aClassPrototype = vAddtionalAbilityInjected::
-          if !vParentHasAbility
+          if !vInjectedOnParent
             vExcludes = injectMethodsFromNonEnum aClassPrototype, AbilityClass::
             extend aClassPrototype, AbilityClass::, (k)-> not (k in vExcludes)
         else

        #vHasAddtionalAbility = hasAdditionalAbility aClass, vName
        # how to judge whether injected??
        $abilities = aClass::$abilities
        vParentHasAbility = hasAbilityOnParent aClass, vName
        $abilities = null unless aClass::hasOwnProperty '$abilities'
      # inject the ability:
      if not (vhasCoreMethod or ($abilities and $abilities['$'+vName]))

defineProperty  = require('util-ex/lib/defineProperty')
getNonEnumNames = require('util-ex/lib/get-non-enumerable-names')

isInjectedOnParent  = require('./injected-on-parent')


injectMethodsFromNonEnum = (aTargetClass, aObject, filter)->
