     ]).join "\n"
     eval functionString
 
+
   virtualPropertySecondPassMetaProperties = []
   virtualPropertySecondPassValues = []
   _initProperties: (options) ->
     {metaProperties} = @
 
     unless @__proto__.hasOwnProperty "_initPropertiesAuto"
-      @__proto__._initPropertiesAuto = @class.generateSetPropertyDefaults()
+      @__proto__._initPropertiesAuto = @class._generateSetPropertyDefaults()
 
     @_initPropertiesAuto options
 

      newValues[k] = v
    log "ElementBase pending state changes": element: @inspectedName, old: oldValues, new: newValues

  @getter
    props: ->
      ret = {}
      for k, {virtual} of @metaProperties
        ret[k] = @[k]
      ret

    concreteProps: ->
      ret = {}
      for k, {internalName, virtual} of @metaProperties when !virtual
        ret[k] = @[internalName]
      ret

    virtualProps: ->
      ret = {}
      for k, {virtual} of @metaProperties when virtual
        ret[k] = @[k]
      ret

  ##########################
  # EPOCHED STATE
  ##########################
  _getIsChangingElement: -> stateEpoch._isChangingElement @

  onNextReady: (callback, forceEpoch = true) ->
    stateEpoch.onNextReady callback, forceEpoch

  @onNextReady: (callback, forceEpoch = true) ->
    stateEpoch.onNextReady callback, forceEpoch

  onIdle: (callback) ->
    stateEpoch.onNextReady callback

  getState: (pending = false) ->
    if pending then @_pendingState else @

  _elementChanged: (layoutPropertyChanged, drawPropertyChanged, drawAreaPropertyChanged)->
    {_pendingState} = @

          @[prop] = v
    else
      mergeInto @, @_pendingState
