     clone: ->
         # Nonreactive because the clone's fields are
         # their own new piece of application state.
-        doc = Tracker.nonreactive => @toDoc false
-
-        # Note that clones substitute null for undefined.
-        for fieldName, value of doc
-            if value is undefined
-                doc[fieldName] = null
+        doc = Tracker.nonreactive => @toDoc()
+
+        for fieldName in _.keys doc
+            if doc[fieldName] is undefined
+                delete doc[fieldName]
 
         instance = @modelClass.fromDoc doc
         instance.collection = @collection

        null


    toDoc: (denormalize = false) ->
        # Reactive.
        # Returns an EJSON object with all the
        # user-defined types serialized into JSON, but

            aren't returned as JSON.
        ###

        @toDoc()


    toString: ->
