func IsStart(ev core.Event) bool {
	return ev.Label(0).Key() == keys.Start
}
IsStart returns true if the event was built by the Start function.
It is intended to be used in exporters to identify the semantics of the
event when deciding what to do with it.
package event
import (
	"context"
	"golang.org/x/tools/internal/event/core"
	"golang.org/x/tools/internal/event/keys"
	"golang.org/x/tools/internal/event/label"
)
type Exporter func(context.Context, core.Event, label.Map) context.Context
func SetExporter(e Exporter) {
	core.SetExporter(core.Exporter(e))
}
func Log(ctx context.Context, message string, labels ...label.Label) {
	core.Export(ctx, core.MakeEvent([3]label.Label{
		keys.Msg.Of(message),
	}, labels))
}
func IsLog(ev core.Event) bool {
	return ev.Label(0).Key() == keys.Msg
}
func Error(ctx context.Context, message string, err error, labels ...label.Label) {
	core.Export(ctx, core.MakeEvent([3]label.Label{
		keys.Msg.Of(message),
		keys.Err.Of(err),
	}, labels))
}
func IsError(ev core.Event) bool {
	return ev.Label(0).Key() == keys.Msg &&
		ev.Label(1).Key() == keys.Err
}
func Metric(ctx context.Context, labels ...label.Label) {
	core.Export(ctx, core.MakeEvent([3]label.Label{
		keys.Metric.New(),
	}, labels))
}
func IsMetric(ev core.Event) bool {
	return ev.Label(0).Key() == keys.Metric
}
func Label(ctx context.Context, labels ...label.Label) context.Context {
	return core.Export(ctx, core.MakeEvent([3]label.Label{
		keys.Label.New(),
	}, labels))
}
func IsLabel(ev core.Event) bool {
	return ev.Label(0).Key() == keys.Label
}
func Start(ctx context.Context, name string, labels ...label.Label) (context.Context, func()) {
	return core.ExportPair(ctx,
		core.MakeEvent([3]label.Label{
			keys.Start.Of(name),
		}, labels),
		core.MakeEvent([3]label.Label{
			keys.End.New(),
		}, nil))
}