code: func (d *Decoder) pushEOF() {
  	// Walk down stack to find Start.
  	// It might not be the top, because there might be stkNs
  	// entries above it.
  	start := d.stk
  	for start.kind != stkStart {
  		start = start.next
  	}
  	// The stkNs entries below a start are associated with that
  	// element too; skip over them.
  	for start.next != nil && start.next.kind == stkNs {
  		start = start.next
  	}
  	s := d.free
  	if s != nil {
  		d.free = s.next
  	} else {
  		s = new(stack)
  	}
  	s.kind = stkEOF
  	s.next = start.next
  	start.next = s
  }
docs: // Record that after the current element is finished
  // (that element is already pushed on the stack)
  // Token should return EOF until popEOF is called.