code: function position() {
        var before = now()
  
        return update
  
        // Add the position to a node.
        function update(node, indent) {
          var prev = node.position
          var start = prev ? prev.start : before
          var combined = []
          var n = prev && prev.end.line
          var l = before.line
  
          node.position = new Position(start)
  
          // If there was already a `position`, this node was merged.  Fixing
          // `start` wasn’t hard, but the indent is different.  Especially
          // because some information, the indent between `n` and `l` wasn’t
          // tracked.  Luckily, that space is (should be?) empty, so we can
          // safely check for it now.
          if (prev && indent && prev.indent) {
            combined = prev.indent
  
            if (n < l) {
              while (++n < l) {
                combined.push((offset[n] || 0) + 1)
              }
  
              combined.push(before.column)
            }
  
            indent = combined.concat(indent)
          }
  
          node.position.indent = indent || []
  
          return node
        }
      }
docs: Mark position and patch `node.position`.