 coreMethods = [
   'assign', 'assignPropertyTo', 'getProperties'
   'defineProperties'
+  'nonExported1stChar'
 ]
 module.exports = customAbility getPropertyManagerClass, coreMethods,  true
 

        extend @, Default
        extend @::, Default::

    # the non-enumerable property can not be replaced in an ability,
    # but beginning with '$' will be injected to `initialize` method.
    defineProperty @::, '$initialize', ->

  gOptPos = aOptions.optionsPosition || 0
  # it could be null(Simple), ctor(complex attributes), object
  gManager  = String(aOptions.name)
  nonExported1stChar = aOptions.nonExported1stChar

  class PropertyManager
    constructor: ->@initialize.call @, arguments[gOptPos]
