 getkeys         = Object.keys
 
 module.exports  = class AbstractPropertyManager
+
+  nonExported1stChar: '$'
 
   constrcutor: ->
     @initialize.apply @, arguments


    vAttrs = @getProperties()
    for k,v of vAttrs
      continue if !vAttrs.hasOwnProperty(k) or (k in aExclude)
      continue if v and v.name and (v.name in aExclude)
      @assignPropertyTo(dest, @, k, @[k], vAttrs)
    dest._assign(@) if isFunction dest._assign

    for k,v of vAttrs
      continue if k in aExclude
      continue if v and v.name and (v.name in aExclude)
      continue if skipReadOnly and v.writable is false and !v.set
      if !dest.hasOwnProperty(k)
        @assignPropertyTo(dest, @, k, @[k], vAttrs, skipDefault, isExported)
    dest

  exportTo: (dest, aExclude, skipDefault, skipReadOnly)->
    skipDefault?=true
    @mergeTo(dest, aExclude, skipDefault, skipReadOnly, true)

  toObject: (options)->
    @exportTo(options)
