   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]

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


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

    if isString(nonExported1stChar) and nonExported1stChar.length is 1
      @::nonExported1stChar = nonExported1stChar

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