 
 
 
-  getSourceNode: ->
-    if @sourceMessage?
-      @sourceMessage.getSourceNode()
-    else
-      @node
+  getSourceNodes: ->
+    if @sourceMessages.length
+      sourceNodes = []
+      for message in @sourceMessages
+        sourceNodes.push @sourceMessages.getSourceNodes()...
+      sourceNodes
+    else
+      [@node]
 
 
   markSourceMessageAsDelivered: ->
-    if @sourceMessage?
-      @sourceMessage.markSourceMessageAsDelivered()
+    if @sourceMessages.length
+      for message in @sourceMessages
+        message.markSourceMessageAsDelivered()
     else
       @wasDelivered = yes
     return this

      'M'
      'P:' + @precedence
      @direction.inspect()
      @getSourceNode()?.inspect() ? ''
      @wasDelivered and 'D' or ''
      @payload.inspect()
    ].filter( (s) -> s.length).join(' ')


  @createTransformed = (prevMessage, payload) ->
    new this(prevMessage.transmission, payload, {
      precedence:     prevMessage.precedence
      direction:      prevMessage.direction
      nesting:        prevMessage.nesting
      sourceMessages: [prevMessage]
    })


