func (d *Decoder) Peek() (Token, error) {
	defer func() { d.lastCall = peekCall }()
	if d.lastCall == readCall {
		d.lastToken, d.lastErr = d.Read()
	}
	return d.lastToken, d.lastErr
}
Peek looks ahead and returns the next token and error without advancing a read.
package text
import (
	"bytes"
	"fmt"
	"io"
	"regexp"
	"strconv"
	"unicode/utf8"
	"google.golang.org/protobuf/internal/errors"
)
type Decoder struct {
	lastCall call
	lastToken Token
	lastErr error
	openStack []byte
	orig []byte
	in []byte
}
func NewDecoder(b []byte) *Decoder {
	return &Decoder{orig: b, in: b}
}
var ErrUnexpectedEOF = errors.New("%v", io.ErrUnexpectedEOF)
type call uint8
const (
	readCall call = iota
	peekCall
)