packages/remark-parse/lib/tokenizer.js
function add(node, parent) {
      var children = parent ? parent.children : tokens
      var prev = children[children.length - 1]
      var fn

      if (
        prev &&
        node.type === prev.type &&
        (node.type === 'text' || node.type === 'blockquote') &&
        mergeable(prev) &&
        mergeable(node)
      ) {
        fn = node.type === 'text' ? mergeText : mergeBlockquote
        node = fn.call(self, prev, node)
      }

      if (node !== prev) {
        children.push(node)
      }

      if (self.atStart && tokens.length !== 0) {
        self.exitStart()
      }

      return node
    }
function add(node, parent) {
      var children = parent ? parent.children : tokens
      var prev = children[children.length - 1]
      var fn

      if (
        prev &&
        node.type === prev.type &&
        (node.type === 'text' || node.type === 'blockquote') &&
        mergeable(prev) &&
        mergeable(node)
      ) {
        fn = node.type === 'text' ? mergeText : mergeBlockquote
        node = fn.call(self, prev, node)
      }

      if (node !== prev) {
        children.push(node)
      }

      if (self.atStart && tokens.length !== 0) {
        self.exitStart()
      }

      return node
    }
function add ( node , parent ) { var children = parent ? parent . children : tokens var prev = children [ children . length - 1 ] var fn if ( prev && node . type === prev . type && ( node . type === 'text' || node . type === 'blockquote' ) && mergeable ( prev ) && mergeable ( node ) ) { fn = node . type === 'text' ? mergeText : mergeBlockquote node = fn . call ( self , prev , node ) } if ( node !== prev ) { children . push ( node ) } if ( self . atStart && tokens . length !== 0 ) { self . exitStart ( ) } return node }
Add `node` to `parent`s children or to `tokens`.  Performs merges where possible.
Add node to parent s children or to tokens . Performs merges where possible .