     new @_ReferenceField args...
 
   @_GeneratedField: class extends @_TargetedFieldsObservingField
+    # Arguments:
+    #   targetDocument, fields
+    #   targetDocument, fields, generator
     constructor: (targetDocument, fields, @generator) ->
       super targetDocument, fields
 

    _.extend @, @constructor.objectify '', null, (doc or {}), (@constructor?.Meta?.fields or {})

  @_Trigger: class
    constructor: (@fields, @trigger) ->
      @fields ?= []


      assert.equal @targetDocument.Meta.document.Meta, @targetDocument.Meta

  @_ReferenceField: class extends @_TargetedFieldsObservingField
    # Arguments:
    #   targetDocument, fields
    #   targetDocument, fields, required
    #   targetDocument, fields, required, reverseName
    #   targetDocument, fields, required, reverseName, reverseFields
    constructor: (targetDocument, fields, @required, @reverseName, @reverseFields) ->
      super targetDocument, fields

