func (p SourcePath) String() string {
	b := p.appendFileDescriptorProto(nil)
	for _, i := range p {
		b = append(b, '.')
		b = strconv.AppendInt(b, int64(i), 10)
	}
	return string(b)
}
String formats the path in a humanly readable manner.
The output is guaranteed to be deterministic,
making it suitable for use as a key into a Go map.
It is not guaranteed to be stable as the exact output could change
in a future version of this module.

Example output:
.message_type[6].nested_type[15].field[3]
package protoreflect
import (
	"strconv"
)
type SourceLocations interface {
	Len() int
	Get(int) SourceLocation
	ByPath(path SourcePath) SourceLocation
	ByDescriptor(desc Descriptor) SourceLocation
	doNotImplement
}
type SourceLocation struct {
	Path SourcePath
	StartLine, StartColumn int
	EndLine, EndColumn int
	LeadingDetachedComments []string
	LeadingComments string
	TrailingComments string
	Next int
}
type SourcePath []int32
func (p1 SourcePath) Equal(p2 SourcePath) bool {
	if len(p1) != len(p2) {
		return false
	}
	for i := range p1 {
		if p1[i] != p2[i] {
			return false
		}
	}
	return true
}