 
       base.emit 'update', [ key ]
       return true
-
-
-    getPrototypeOf: (target) ->
-
-      return KDData.prototype

        lengthChanged = target.length isnt currentLength
        return true  if key is 'length' and not lengthChanged

      if root = receiver[KDData.NAME]
        key = "#{root}.#{key}"
      else
        root = ''

      return true  if typeof key is 'symbol' or /^__|__$/.test key

      if lengthChanged
        prefix = if key.indexOf('.') >= 0 then "#{root}." else ''


  proxyHandler = (base) ->

    set: (target, key, value, receiver) ->

      if base.isArray
        currentLength = target.length

      if value instanceof Object and value not instanceof Date
        if root = receiver[KDData.NAME]
          key = "#{root}.#{key}"
        value = createProxy value, proxyHandler base
        Object.defineProperty value, KDData.NAME, {
          value: key, configurable: yes
        }

      target[key] = value

