                     @_reactives.get reactiveName
 
                 else
+                    # Denormed reactives behave like non-denormed reactives on
+                    # unattached instances.
                     @reactives[reactiveName].get()
 
         else


        @_fields = J.Dict()

        for fieldName of @modelClass.fieldSpecs
            @_fields.setOrAdd fieldName, null
        for fieldName, value of nonIdInitFields
            @_fields.set fieldName, J.Var.wrap value, true

        if @_id? and @modelClass.idSpec is J.PropTypes.key
            keyReady = false
            try
                key = Tracker.nonreactive => @key()
                keyReady = true
            catch e
                throw e if e not instanceof J.VALUE_NOT_READY

            if keyReady and @_id isnt key
                console.warn "#{@modelClass.name}._id is #{@_id} but key() is #{key}"

        @reactives = {} # reactiveName: autoVar
        for reactiveName, reactiveSpec of @modelClass.reactiveSpecs

                    ret[@escapeDot k] = helper v
                ret
            else if value instanceof J.Model
                value.toDoc()
            else if (
                _.isNumber(value) or _.isBoolean(value) or _.isString(value) or
                    value instanceof Date or value instanceof RegExp or
