   @_ObservingField: class extends @_Field
 
   @_TargetedFieldsObservingField: class extends @_ObservingField
+    # Arguments:
+    #   targetDocument, fields
     constructor: (targetDocument, @fields) ->
       super()
 

    new @_ReferenceField args...

  @_GeneratedField: class extends @_TargetedFieldsObservingField
    constructor: (targetDocument, fields, @generator) ->
      super targetDocument, 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

