code: function eat(subvalue) {
        var indent = getOffset()
        var pos = position()
        var current = now()
  
        validateEat(subvalue)
  
        apply.reset = reset
        reset.test = test
        apply.test = test
  
        value = value.substring(subvalue.length)
  
        updatePosition(subvalue)
  
        indent = indent()
  
        return apply
  
        // Add the given arguments, add `position` to the returned node, and
        // return the node.
        function apply(node, parent) {
          return pos(add(pos(node), parent), indent)
        }
  
        // Functions just like apply, but resets the content: the line and
        // column are reversed, and the eaten value is re-added.   This is
        // useful for nodes with a single type of content, such as lists and
        // tables.  See `apply` above for what parameters are expected.
        function reset() {
          var node = apply.apply(null, arguments)
  
          line = current.line
          column = current.column
          value = subvalue + value
  
          return node
        }
  
        // Test the position, after eating, and reverse to a not-eaten state.
        function test() {
          var result = pos({})
  
          line = current.line
          column = current.column
          value = subvalue + value
  
          return result.position
        }
      }
docs: Remove `subvalue` from `value`.  `subvalue` must be at the start of `value`.