     if parent?
       #_messageParent id, parent, position, null  ## there's no old parent
       _messageAddChild id, parent, position
-      ## Because we preset root, even _messageParent won't call this for us.
-      ## We already simulated the effect when message is its own root.
-      _submessagesChanged message.root
+      ## Because we preset root, even _messageParent won't call
+      ## _submessagesChanged for us.
+      ## (We already simulated the effect when message is its own root.)
+      #_submessagesChanged message.root
+      ## In fact, in this special case, we can efficiently simulate the
+      ## behavior of _submessagesChanged via a direct update to the root:
+      if _consideredSubmessage message
+        Messages.update message.root,
+          $inc: submessageCount: 1
+          $max: submessageLastUpdate: message.updated
     ## Prepare for MessagesDiff
     delete message.creator
     delete message.created

  message.id = id
  diffid = MessagesDiff.insert message
  message._id = diffid
  _submessagesChanged old.root ? id
  notifyMessageUpdate message if Meteor.isServer  ## client in simulation
  diffid


  updated = root.updated
  query = Messages.find
    root: root._id
    ## Mimicking _consideredSubmessage above
    published: $ne: false    ## published is false or Date
    deleted: $ne: true
    private: $ne: true
