code: func NewReader(r io.Reader) io.Reader {
  	buf := bufio.NewReader(r)
  	b, err := buf.Peek(3)
  	if err != nil {
  		// not enough bytes
  		return buf
  	}
  	if b[0] == bom0 && b[1] == bom1 && b[2] == bom2 {
  		discardBytes(buf, 3)
  	}
  	return buf
  }
docs: // NewReader returns an io.Reader that will skip over initial UTF-8 byte order marks.