1// compile
2
3// Copyright 2023 The Go Authors. All rights reserved.
4// Use of this source code is governed by a BSD-style
5// license that can be found in the LICENSE file.
6
7package main
8
9type explainer struct {
10	m map[string]string
11}
12
13func init() {
14	RegisterExplainer(newExplainer())
15}
16
17type Explainer interface {
18	Name() string
19	Map() map[string]string
20}
21
22func (e explainer) Name() string {
23	return "HelloWorldExplainer"
24}
25
26func (e explainer) Map() map[string]string {
27	return e.m
28}
29
30//go:noinline
31func newExplainer() explainer {
32	m := make(map[string]string)
33	m["Hello"] = "World!"
34	return explainer{m}
35}
36
37var explainers = make(map[string]Explainer)
38
39func RegisterExplainer(e Explainer) {
40	explainers[e.Name()] = e
41}
42
43func main() {
44
45}
46