internal: change Symbol.Children to SymbolMeta

The children of a symbol will always have the same build context and no
other children. As a result, Symbol.Children are changed to the
SymbolMeta type.

For golang/go#37102

Change-Id: I89c361f86eff7179c18572e57a5dd0788fea4b1d
Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/315432
Trust: Julie Qiu <julie@golang.org>
Run-TryBot: Julie Qiu <julie@golang.org>
TryBot-Result: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jonathan Amsterdam <jba@google.com>
diff --git a/internal/fetch/fetchdata_test.go b/internal/fetch/fetchdata_test.go
index 3fa9f23..73cc835 100644
--- a/internal/fetch/fetchdata_test.go
+++ b/internal/fetch/fetchdata_test.go
@@ -75,15 +75,13 @@
 						Section:  "Types",
 						Kind:     "Type",
 					},
-					Children: []*internal.Symbol{
+					Children: []*internal.SymbolMeta{
 						{
-							SymbolMeta: internal.SymbolMeta{
-								Name:       "F",
-								Synopsis:   "func F(t time.Time, s string) (T, u)",
-								Section:    "Types",
-								Kind:       "Function",
-								ParentName: "T",
-							},
+							Name:       "F",
+							Synopsis:   "func F(t time.Time, s string) (T, u)",
+							Section:    "Types",
+							Kind:       "Function",
+							ParentName: "T",
 						},
 					},
 				},
@@ -1151,15 +1149,13 @@
 										Section:  "Types",
 										Kind:     "Type",
 									},
-									Children: []*internal.Symbol{
+									Children: []*internal.SymbolMeta{
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "error.Error",
-												Synopsis:   "Error func() string",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "error",
-											},
+											Name:       "error.Error",
+											Synopsis:   "Error func() string",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "error",
 										},
 									},
 								},
@@ -1412,69 +1408,55 @@
 										Section:  "Types",
 										Kind:     "Type",
 									},
-									Children: []*internal.Symbol{
+									Children: []*internal.SymbolMeta{
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "Background",
-												Synopsis:   "func Background() Context",
-												Section:    "Types",
-												Kind:       "Function",
-												ParentName: "Context",
-											},
+											Name:       "Background",
+											Synopsis:   "func Background() Context",
+											Section:    "Types",
+											Kind:       "Function",
+											ParentName: "Context",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "TODO",
-												Synopsis:   "func TODO() Context",
-												Section:    "Types",
-												Kind:       "Function",
-												ParentName: "Context",
-											},
+											Name:       "TODO",
+											Synopsis:   "func TODO() Context",
+											Section:    "Types",
+											Kind:       "Function",
+											ParentName: "Context",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "WithValue",
-												Synopsis:   "func WithValue(parent Context, key, val interface{}) Context",
-												Section:    "Types",
-												Kind:       "Function",
-												ParentName: "Context",
-											},
+											Name:       "WithValue",
+											Synopsis:   "func WithValue(parent Context, key, val interface{}) Context",
+											Section:    "Types",
+											Kind:       "Function",
+											ParentName: "Context",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "Context.Deadline",
-												Synopsis:   "Deadline func() (deadline time.Time, ok bool)",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "Context",
-											},
+											Name:       "Context.Deadline",
+											Synopsis:   "Deadline func() (deadline time.Time, ok bool)",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "Context",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "Context.Done",
-												Synopsis:   "Done func() <-chan struct{}",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "Context",
-											},
+											Name:       "Context.Done",
+											Synopsis:   "Done func() <-chan struct{}",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "Context",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "Context.Err",
-												Synopsis:   "Err func() error",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "Context",
-											},
+											Name:       "Context.Err",
+											Synopsis:   "Err func() error",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "Context",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "Context.Value",
-												Synopsis:   "Value func(key interface{}) interface{}",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "Context",
-											},
+											Name:       "Context.Value",
+											Synopsis:   "Value func(key interface{}) interface{}",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "Context",
 										},
 									},
 								},
@@ -1562,69 +1544,55 @@
 										Section:  "Types",
 										Kind:     "Type",
 									},
-									Children: []*internal.Symbol{
+									Children: []*internal.SymbolMeta{
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "NewDecoder",
-												Synopsis:   "func NewDecoder(r io.Reader) *Decoder",
-												Section:    "Types",
-												Kind:       "Function",
-												ParentName: "Decoder",
-											},
+											Name:       "NewDecoder",
+											Synopsis:   "func NewDecoder(r io.Reader) *Decoder",
+											Section:    "Types",
+											Kind:       "Function",
+											ParentName: "Decoder",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "Decoder.Buffered",
-												Synopsis:   "func (dec *Decoder) Buffered() io.Reader",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "Decoder",
-											},
+											Name:       "Decoder.Buffered",
+											Synopsis:   "func (dec *Decoder) Buffered() io.Reader",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "Decoder",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "Decoder.Decode",
-												Synopsis:   "func (dec *Decoder) Decode(v interface{}) error",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "Decoder",
-											},
+											Name:       "Decoder.Decode",
+											Synopsis:   "func (dec *Decoder) Decode(v interface{}) error",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "Decoder",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "Decoder.DisallowUnknownFields",
-												Synopsis:   "func (dec *Decoder) DisallowUnknownFields()",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "Decoder",
-											},
+											Name:       "Decoder.DisallowUnknownFields",
+											Synopsis:   "func (dec *Decoder) DisallowUnknownFields()",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "Decoder",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "Decoder.More",
-												Synopsis:   "func (dec *Decoder) More() bool",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "Decoder",
-											},
+											Name:       "Decoder.More",
+											Synopsis:   "func (dec *Decoder) More() bool",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "Decoder",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "Decoder.Token",
-												Synopsis:   "func (dec *Decoder) Token() (Token, error)",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "Decoder",
-											},
+											Name:       "Decoder.Token",
+											Synopsis:   "func (dec *Decoder) Token() (Token, error)",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "Decoder",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "Decoder.UseNumber",
-												Synopsis:   "func (dec *Decoder) UseNumber()",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "Decoder",
-											},
+											Name:       "Decoder.UseNumber",
+											Synopsis:   "func (dec *Decoder) UseNumber()",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "Decoder",
 										},
 									},
 								},
@@ -1635,15 +1603,13 @@
 										Section:  "Types",
 										Kind:     "Type",
 									},
-									Children: []*internal.Symbol{
+									Children: []*internal.SymbolMeta{
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "Delim.String",
-												Synopsis:   "func (d Delim) String() string",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "Delim",
-											},
+											Name:       "Delim.String",
+											Synopsis:   "func (d Delim) String() string",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "Delim",
 										},
 									},
 								},
@@ -1654,42 +1620,34 @@
 										Section:  "Types",
 										Kind:     "Type",
 									},
-									Children: []*internal.Symbol{
+									Children: []*internal.SymbolMeta{
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "NewEncoder",
-												Synopsis:   "func NewEncoder(w io.Writer) *Encoder",
-												Section:    "Types",
-												Kind:       "Function",
-												ParentName: "Encoder",
-											},
+											Name:       "NewEncoder",
+											Synopsis:   "func NewEncoder(w io.Writer) *Encoder",
+											Section:    "Types",
+											Kind:       "Function",
+											ParentName: "Encoder",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "Encoder.Encode",
-												Synopsis:   "func (enc *Encoder) Encode(v interface{}) error",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "Encoder",
-											},
+											Name:       "Encoder.Encode",
+											Synopsis:   "func (enc *Encoder) Encode(v interface{}) error",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "Encoder",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "Encoder.SetEscapeHTML",
-												Synopsis:   "func (enc *Encoder) SetEscapeHTML(on bool)",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "Encoder",
-											},
+											Name:       "Encoder.SetEscapeHTML",
+											Synopsis:   "func (enc *Encoder) SetEscapeHTML(on bool)",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "Encoder",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "Encoder.SetIndent",
-												Synopsis:   "func (enc *Encoder) SetIndent(prefix, indent string)",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "Encoder",
-											},
+											Name:       "Encoder.SetIndent",
+											Synopsis:   "func (enc *Encoder) SetIndent(prefix, indent string)",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "Encoder",
 										},
 									},
 								},
@@ -1700,24 +1658,20 @@
 										Section:  "Types",
 										Kind:     "Type",
 									},
-									Children: []*internal.Symbol{
+									Children: []*internal.SymbolMeta{
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "InvalidUTF8Error.S",
-												Synopsis:   "S string",
-												Section:    "Types",
-												Kind:       "Field",
-												ParentName: "InvalidUTF8Error",
-											},
+											Name:       "InvalidUTF8Error.S",
+											Synopsis:   "S string",
+											Section:    "Types",
+											Kind:       "Field",
+											ParentName: "InvalidUTF8Error",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "InvalidUTF8Error.Error",
-												Synopsis:   "func (e *InvalidUTF8Error) Error() string",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "InvalidUTF8Error",
-											},
+											Name:       "InvalidUTF8Error.Error",
+											Synopsis:   "func (e *InvalidUTF8Error) Error() string",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "InvalidUTF8Error",
 										},
 									},
 								},
@@ -1728,24 +1682,20 @@
 										Section:  "Types",
 										Kind:     "Type",
 									},
-									Children: []*internal.Symbol{
+									Children: []*internal.SymbolMeta{
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "InvalidUnmarshalError.Type",
-												Synopsis:   "Type reflect.Type",
-												Section:    "Types",
-												Kind:       "Field",
-												ParentName: "InvalidUnmarshalError",
-											},
+											Name:       "InvalidUnmarshalError.Type",
+											Synopsis:   "Type reflect.Type",
+											Section:    "Types",
+											Kind:       "Field",
+											ParentName: "InvalidUnmarshalError",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "InvalidUnmarshalError.Error",
-												Synopsis:   "func (e *InvalidUnmarshalError) Error() string",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "InvalidUnmarshalError",
-											},
+											Name:       "InvalidUnmarshalError.Error",
+											Synopsis:   "func (e *InvalidUnmarshalError) Error() string",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "InvalidUnmarshalError",
 										},
 									},
 								},
@@ -1756,15 +1706,13 @@
 										Section:  "Types",
 										Kind:     "Type",
 									},
-									Children: []*internal.Symbol{
+									Children: []*internal.SymbolMeta{
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "Marshaler.MarshalJSON",
-												Synopsis:   "MarshalJSON func() ([]byte, error)",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "Marshaler",
-											},
+											Name:       "Marshaler.MarshalJSON",
+											Synopsis:   "MarshalJSON func() ([]byte, error)",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "Marshaler",
 										},
 									},
 								},
@@ -1775,33 +1723,27 @@
 										Section:  "Types",
 										Kind:     "Type",
 									},
-									Children: []*internal.Symbol{
+									Children: []*internal.SymbolMeta{
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "MarshalerError.Type",
-												Synopsis:   "Type reflect.Type",
-												Section:    "Types",
-												Kind:       "Field",
-												ParentName: "MarshalerError",
-											},
+											Name:       "MarshalerError.Type",
+											Synopsis:   "Type reflect.Type",
+											Section:    "Types",
+											Kind:       "Field",
+											ParentName: "MarshalerError",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "MarshalerError.Err",
-												Synopsis:   "Err error",
-												Section:    "Types",
-												Kind:       "Field",
-												ParentName: "MarshalerError",
-											},
+											Name:       "MarshalerError.Err",
+											Synopsis:   "Err error",
+											Section:    "Types",
+											Kind:       "Field",
+											ParentName: "MarshalerError",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "MarshalerError.Error",
-												Synopsis:   "func (e *MarshalerError) Error() string",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "MarshalerError",
-											},
+											Name:       "MarshalerError.Error",
+											Synopsis:   "func (e *MarshalerError) Error() string",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "MarshalerError",
 										},
 									},
 								},
@@ -1812,33 +1754,27 @@
 										Section:  "Types",
 										Kind:     "Type",
 									},
-									Children: []*internal.Symbol{
+									Children: []*internal.SymbolMeta{
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "Number.Float64",
-												Synopsis:   "func (n Number) Float64() (float64, error)",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "Number",
-											},
+											Name:       "Number.Float64",
+											Synopsis:   "func (n Number) Float64() (float64, error)",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "Number",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "Number.Int64",
-												Synopsis:   "func (n Number) Int64() (int64, error)",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "Number",
-											},
+											Name:       "Number.Int64",
+											Synopsis:   "func (n Number) Int64() (int64, error)",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "Number",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "Number.String",
-												Synopsis:   "func (n Number) String() string",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "Number",
-											},
+											Name:       "Number.String",
+											Synopsis:   "func (n Number) String() string",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "Number",
 										},
 									},
 								},
@@ -1849,24 +1785,20 @@
 										Section:  "Types",
 										Kind:     "Type",
 									},
-									Children: []*internal.Symbol{
+									Children: []*internal.SymbolMeta{
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "RawMessage.MarshalJSON",
-												Synopsis:   "func (m RawMessage) MarshalJSON() ([]byte, error)",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "RawMessage",
-											},
+											Name:       "RawMessage.MarshalJSON",
+											Synopsis:   "func (m RawMessage) MarshalJSON() ([]byte, error)",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "RawMessage",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "RawMessage.UnmarshalJSON",
-												Synopsis:   "func (m *RawMessage) UnmarshalJSON(data []byte) error",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "RawMessage",
-											},
+											Name:       "RawMessage.UnmarshalJSON",
+											Synopsis:   "func (m *RawMessage) UnmarshalJSON(data []byte) error",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "RawMessage",
 										},
 									},
 								},
@@ -1877,24 +1809,20 @@
 										Section:  "Types",
 										Kind:     "Type",
 									},
-									Children: []*internal.Symbol{
+									Children: []*internal.SymbolMeta{
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "SyntaxError.Offset",
-												Synopsis:   "Offset int64",
-												Section:    "Types",
-												Kind:       "Field",
-												ParentName: "SyntaxError",
-											},
+											Name:       "SyntaxError.Offset",
+											Synopsis:   "Offset int64",
+											Section:    "Types",
+											Kind:       "Field",
+											ParentName: "SyntaxError",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "SyntaxError.Error",
-												Synopsis:   "func (e *SyntaxError) Error() string",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "SyntaxError",
-											},
+											Name:       "SyntaxError.Error",
+											Synopsis:   "func (e *SyntaxError) Error() string",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "SyntaxError",
 										},
 									},
 								},
@@ -1913,42 +1841,34 @@
 										Section:  "Types",
 										Kind:     "Type",
 									},
-									Children: []*internal.Symbol{
+									Children: []*internal.SymbolMeta{
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "UnmarshalFieldError.Key",
-												Synopsis:   "Key string",
-												Section:    "Types",
-												Kind:       "Field",
-												ParentName: "UnmarshalFieldError",
-											},
+											Name:       "UnmarshalFieldError.Key",
+											Synopsis:   "Key string",
+											Section:    "Types",
+											Kind:       "Field",
+											ParentName: "UnmarshalFieldError",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "UnmarshalFieldError.Type",
-												Synopsis:   "Type reflect.Type",
-												Section:    "Types",
-												Kind:       "Field",
-												ParentName: "UnmarshalFieldError",
-											},
+											Name:       "UnmarshalFieldError.Type",
+											Synopsis:   "Type reflect.Type",
+											Section:    "Types",
+											Kind:       "Field",
+											ParentName: "UnmarshalFieldError",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "UnmarshalFieldError.Field",
-												Synopsis:   "Field reflect.StructField",
-												Section:    "Types",
-												Kind:       "Field",
-												ParentName: "UnmarshalFieldError",
-											},
+											Name:       "UnmarshalFieldError.Field",
+											Synopsis:   "Field reflect.StructField",
+											Section:    "Types",
+											Kind:       "Field",
+											ParentName: "UnmarshalFieldError",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "UnmarshalFieldError.Error",
-												Synopsis:   "func (e *UnmarshalFieldError) Error() string",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "UnmarshalFieldError",
-											},
+											Name:       "UnmarshalFieldError.Error",
+											Synopsis:   "func (e *UnmarshalFieldError) Error() string",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "UnmarshalFieldError",
 										},
 									},
 								},
@@ -1959,60 +1879,48 @@
 										Section:  "Types",
 										Kind:     "Type",
 									},
-									Children: []*internal.Symbol{
+									Children: []*internal.SymbolMeta{
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "UnmarshalTypeError.Value",
-												Synopsis:   "Value string",
-												Section:    "Types",
-												Kind:       "Field",
-												ParentName: "UnmarshalTypeError",
-											},
+											Name:       "UnmarshalTypeError.Value",
+											Synopsis:   "Value string",
+											Section:    "Types",
+											Kind:       "Field",
+											ParentName: "UnmarshalTypeError",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "UnmarshalTypeError.Type",
-												Synopsis:   "Type reflect.Type",
-												Section:    "Types",
-												Kind:       "Field",
-												ParentName: "UnmarshalTypeError",
-											},
+											Name:       "UnmarshalTypeError.Type",
+											Synopsis:   "Type reflect.Type",
+											Section:    "Types",
+											Kind:       "Field",
+											ParentName: "UnmarshalTypeError",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "UnmarshalTypeError.Offset",
-												Synopsis:   "Offset int64",
-												Section:    "Types",
-												Kind:       "Field",
-												ParentName: "UnmarshalTypeError",
-											},
+											Name:       "UnmarshalTypeError.Offset",
+											Synopsis:   "Offset int64",
+											Section:    "Types",
+											Kind:       "Field",
+											ParentName: "UnmarshalTypeError",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "UnmarshalTypeError.Struct",
-												Synopsis:   "Struct string",
-												Section:    "Types",
-												Kind:       "Field",
-												ParentName: "UnmarshalTypeError",
-											},
+											Name:       "UnmarshalTypeError.Struct",
+											Synopsis:   "Struct string",
+											Section:    "Types",
+											Kind:       "Field",
+											ParentName: "UnmarshalTypeError",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "UnmarshalTypeError.Field",
-												Synopsis:   "Field string",
-												Section:    "Types",
-												Kind:       "Field",
-												ParentName: "UnmarshalTypeError",
-											},
+											Name:       "UnmarshalTypeError.Field",
+											Synopsis:   "Field string",
+											Section:    "Types",
+											Kind:       "Field",
+											ParentName: "UnmarshalTypeError",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "UnmarshalTypeError.Error",
-												Synopsis:   "func (e *UnmarshalTypeError) Error() string",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "UnmarshalTypeError",
-											},
+											Name:       "UnmarshalTypeError.Error",
+											Synopsis:   "func (e *UnmarshalTypeError) Error() string",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "UnmarshalTypeError",
 										},
 									},
 								},
@@ -2023,15 +1931,13 @@
 										Section:  "Types",
 										Kind:     "Type",
 									},
-									Children: []*internal.Symbol{
+									Children: []*internal.SymbolMeta{
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "Unmarshaler.UnmarshalJSON",
-												Synopsis:   "UnmarshalJSON func([]byte) error",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "Unmarshaler",
-											},
+											Name:       "Unmarshaler.UnmarshalJSON",
+											Synopsis:   "UnmarshalJSON func([]byte) error",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "Unmarshaler",
 										},
 									},
 								},
@@ -2042,24 +1948,20 @@
 										Section:  "Types",
 										Kind:     "Type",
 									},
-									Children: []*internal.Symbol{
+									Children: []*internal.SymbolMeta{
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "UnsupportedTypeError.Type",
-												Synopsis:   "Type reflect.Type",
-												Section:    "Types",
-												Kind:       "Field",
-												ParentName: "UnsupportedTypeError",
-											},
+											Name:       "UnsupportedTypeError.Type",
+											Synopsis:   "Type reflect.Type",
+											Section:    "Types",
+											Kind:       "Field",
+											ParentName: "UnsupportedTypeError",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "UnsupportedTypeError.Error",
-												Synopsis:   "func (e *UnsupportedTypeError) Error() string",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "UnsupportedTypeError",
-											},
+											Name:       "UnsupportedTypeError.Error",
+											Synopsis:   "func (e *UnsupportedTypeError) Error() string",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "UnsupportedTypeError",
 										},
 									},
 								},
@@ -2070,33 +1972,27 @@
 										Section:  "Types",
 										Kind:     "Type",
 									},
-									Children: []*internal.Symbol{
+									Children: []*internal.SymbolMeta{
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "UnsupportedValueError.Value",
-												Synopsis:   "Value reflect.Value",
-												Section:    "Types",
-												Kind:       "Field",
-												ParentName: "UnsupportedValueError",
-											},
+											Name:       "UnsupportedValueError.Value",
+											Synopsis:   "Value reflect.Value",
+											Section:    "Types",
+											Kind:       "Field",
+											ParentName: "UnsupportedValueError",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "UnsupportedValueError.Str",
-												Synopsis:   "Str string",
-												Section:    "Types",
-												Kind:       "Field",
-												ParentName: "UnsupportedValueError",
-											},
+											Name:       "UnsupportedValueError.Str",
+											Synopsis:   "Str string",
+											Section:    "Types",
+											Kind:       "Field",
+											ParentName: "UnsupportedValueError",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "UnsupportedValueError.Error",
-												Synopsis:   "func (e *UnsupportedValueError) Error() string",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "UnsupportedValueError",
-											},
+											Name:       "UnsupportedValueError.Error",
+											Synopsis:   "func (e *UnsupportedValueError) Error() string",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "UnsupportedValueError",
 										},
 									},
 								},
@@ -2411,33 +2307,27 @@
 										Section:  "Types",
 										Kind:     "Type",
 									},
-									Children: []*internal.Symbol{
+									Children: []*internal.SymbolMeta{
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "ContinueOnError",
-												Synopsis:   "const ContinueOnError",
-												Section:    "Types",
-												Kind:       "Constant",
-												ParentName: "ErrorHandling",
-											},
+											Name:       "ContinueOnError",
+											Synopsis:   "const ContinueOnError",
+											Section:    "Types",
+											Kind:       "Constant",
+											ParentName: "ErrorHandling",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "ExitOnError",
-												Synopsis:   "const ExitOnError",
-												Section:    "Types",
-												Kind:       "Constant",
-												ParentName: "ErrorHandling",
-											},
+											Name:       "ExitOnError",
+											Synopsis:   "const ExitOnError",
+											Section:    "Types",
+											Kind:       "Constant",
+											ParentName: "ErrorHandling",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "PanicOnError",
-												Synopsis:   "const PanicOnError",
-												Section:    "Types",
-												Kind:       "Constant",
-												ParentName: "ErrorHandling",
-											},
+											Name:       "PanicOnError",
+											Synopsis:   "const PanicOnError",
+											Section:    "Types",
+											Kind:       "Constant",
+											ParentName: "ErrorHandling",
 										},
 									},
 								},
@@ -2448,51 +2338,41 @@
 										Section:  "Types",
 										Kind:     "Type",
 									},
-									Children: []*internal.Symbol{
+									Children: []*internal.SymbolMeta{
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "Lookup",
-												Synopsis:   "func Lookup(name string) *Flag",
-												Section:    "Types",
-												Kind:       "Function",
-												ParentName: "Flag",
-											},
+											Name:       "Lookup",
+											Synopsis:   "func Lookup(name string) *Flag",
+											Section:    "Types",
+											Kind:       "Function",
+											ParentName: "Flag",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "Flag.Name",
-												Synopsis:   "Name string",
-												Section:    "Types",
-												Kind:       "Field",
-												ParentName: "Flag",
-											},
+											Name:       "Flag.Name",
+											Synopsis:   "Name string",
+											Section:    "Types",
+											Kind:       "Field",
+											ParentName: "Flag",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "Flag.Usage",
-												Synopsis:   "Usage string",
-												Section:    "Types",
-												Kind:       "Field",
-												ParentName: "Flag",
-											},
+											Name:       "Flag.Usage",
+											Synopsis:   "Usage string",
+											Section:    "Types",
+											Kind:       "Field",
+											ParentName: "Flag",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "Flag.Value",
-												Synopsis:   "Value Value",
-												Section:    "Types",
-												Kind:       "Field",
-												ParentName: "Flag",
-											},
+											Name:       "Flag.Value",
+											Synopsis:   "Value Value",
+											Section:    "Types",
+											Kind:       "Field",
+											ParentName: "Flag",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "Flag.DefValue",
-												Synopsis:   "DefValue string",
-												Section:    "Types",
-												Kind:       "Field",
-												ParentName: "Flag",
-											},
+											Name:       "Flag.DefValue",
+											Synopsis:   "DefValue string",
+											Section:    "Types",
+											Kind:       "Field",
+											ParentName: "Flag",
 										},
 									},
 								},
@@ -2503,321 +2383,251 @@
 										Section:  "Types",
 										Kind:     "Type",
 									},
-									Children: []*internal.Symbol{
+									Children: []*internal.SymbolMeta{
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "NewFlagSet",
-												Synopsis:   "func NewFlagSet(name string, errorHandling ErrorHandling) *FlagSet",
-												Section:    "Types",
-												Kind:       "Function",
-												ParentName: "FlagSet",
-											},
+											Name:       "NewFlagSet",
+											Synopsis:   "func NewFlagSet(name string, errorHandling ErrorHandling) *FlagSet",
+											Section:    "Types",
+											Kind:       "Function",
+											ParentName: "FlagSet",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "FlagSet.Usage",
-												Synopsis:   "Usage func()",
-												Section:    "Types",
-												Kind:       "Field",
-												ParentName: "FlagSet",
-											},
+											Name:       "FlagSet.Usage",
+											Synopsis:   "Usage func()",
+											Section:    "Types",
+											Kind:       "Field",
+											ParentName: "FlagSet",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "FlagSet.Arg",
-												Synopsis:   "func (f *FlagSet) Arg(i int) string",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "FlagSet",
-											},
+											Name:       "FlagSet.Arg",
+											Synopsis:   "func (f *FlagSet) Arg(i int) string",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "FlagSet",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "FlagSet.Args",
-												Synopsis:   "func (f *FlagSet) Args() []string",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "FlagSet",
-											},
+											Name:       "FlagSet.Args",
+											Synopsis:   "func (f *FlagSet) Args() []string",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "FlagSet",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "FlagSet.Bool",
-												Synopsis:   "func (f *FlagSet) Bool(name string, value bool, usage string) *bool",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "FlagSet",
-											},
+											Name:       "FlagSet.Bool",
+											Synopsis:   "func (f *FlagSet) Bool(name string, value bool, usage string) *bool",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "FlagSet",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "FlagSet.BoolVar",
-												Synopsis:   "func (f *FlagSet) BoolVar(p *bool, name string, value bool, usage string)",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "FlagSet",
-											},
+											Name:       "FlagSet.BoolVar",
+											Synopsis:   "func (f *FlagSet) BoolVar(p *bool, name string, value bool, usage string)",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "FlagSet",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "FlagSet.Duration",
-												Synopsis:   "func (f *FlagSet) Duration(name string, value time.Duration, usage string) *time.Duration",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "FlagSet",
-											},
+											Name:       "FlagSet.Duration",
+											Synopsis:   "func (f *FlagSet) Duration(name string, value time.Duration, usage string) *time.Duration",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "FlagSet",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "FlagSet.DurationVar",
-												Synopsis:   "func (f *FlagSet) DurationVar(p *time.Duration, name string, value time.Duration, usage string)",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "FlagSet",
-											},
+											Name:       "FlagSet.DurationVar",
+											Synopsis:   "func (f *FlagSet) DurationVar(p *time.Duration, name string, value time.Duration, usage string)",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "FlagSet",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "FlagSet.ErrorHandling",
-												Synopsis:   "func (f *FlagSet) ErrorHandling() ErrorHandling",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "FlagSet",
-											},
+											Name:       "FlagSet.ErrorHandling",
+											Synopsis:   "func (f *FlagSet) ErrorHandling() ErrorHandling",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "FlagSet",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "FlagSet.Float64",
-												Synopsis:   "func (f *FlagSet) Float64(name string, value float64, usage string) *float64",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "FlagSet",
-											},
+											Name:       "FlagSet.Float64",
+											Synopsis:   "func (f *FlagSet) Float64(name string, value float64, usage string) *float64",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "FlagSet",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "FlagSet.Float64Var",
-												Synopsis:   "func (f *FlagSet) Float64Var(p *float64, name string, value float64, usage string)",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "FlagSet",
-											},
+											Name:       "FlagSet.Float64Var",
+											Synopsis:   "func (f *FlagSet) Float64Var(p *float64, name string, value float64, usage string)",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "FlagSet",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "FlagSet.Init",
-												Synopsis:   "func (f *FlagSet) Init(name string, errorHandling ErrorHandling)",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "FlagSet",
-											},
+											Name:       "FlagSet.Init",
+											Synopsis:   "func (f *FlagSet) Init(name string, errorHandling ErrorHandling)",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "FlagSet",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "FlagSet.Int",
-												Synopsis:   "func (f *FlagSet) Int(name string, value int, usage string) *int",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "FlagSet",
-											},
+											Name:       "FlagSet.Int",
+											Synopsis:   "func (f *FlagSet) Int(name string, value int, usage string) *int",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "FlagSet",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "FlagSet.Int64",
-												Synopsis:   "func (f *FlagSet) Int64(name string, value int64, usage string) *int64",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "FlagSet",
-											},
+											Name:       "FlagSet.Int64",
+											Synopsis:   "func (f *FlagSet) Int64(name string, value int64, usage string) *int64",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "FlagSet",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "FlagSet.Int64Var",
-												Synopsis:   "func (f *FlagSet) Int64Var(p *int64, name string, value int64, usage string)",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "FlagSet",
-											},
+											Name:       "FlagSet.Int64Var",
+											Synopsis:   "func (f *FlagSet) Int64Var(p *int64, name string, value int64, usage string)",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "FlagSet",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "FlagSet.IntVar",
-												Synopsis:   "func (f *FlagSet) IntVar(p *int, name string, value int, usage string)",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "FlagSet",
-											},
+											Name:       "FlagSet.IntVar",
+											Synopsis:   "func (f *FlagSet) IntVar(p *int, name string, value int, usage string)",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "FlagSet",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "FlagSet.Lookup",
-												Synopsis:   "func (f *FlagSet) Lookup(name string) *Flag",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "FlagSet",
-											},
+											Name:       "FlagSet.Lookup",
+											Synopsis:   "func (f *FlagSet) Lookup(name string) *Flag",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "FlagSet",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "FlagSet.NArg",
-												Synopsis:   "func (f *FlagSet) NArg() int",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "FlagSet",
-											},
+											Name:       "FlagSet.NArg",
+											Synopsis:   "func (f *FlagSet) NArg() int",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "FlagSet",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "FlagSet.NFlag",
-												Synopsis:   "func (f *FlagSet) NFlag() int",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "FlagSet",
-											},
+											Name:       "FlagSet.NFlag",
+											Synopsis:   "func (f *FlagSet) NFlag() int",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "FlagSet",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "FlagSet.Name",
-												Synopsis:   "func (f *FlagSet) Name() string",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "FlagSet",
-											},
+											Name:       "FlagSet.Name",
+											Synopsis:   "func (f *FlagSet) Name() string",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "FlagSet",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "FlagSet.Output",
-												Synopsis:   "func (f *FlagSet) Output() io.Writer",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "FlagSet",
-											},
+											Name:       "FlagSet.Output",
+											Synopsis:   "func (f *FlagSet) Output() io.Writer",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "FlagSet",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "FlagSet.Parse",
-												Synopsis:   "func (f *FlagSet) Parse(arguments []string) error",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "FlagSet",
-											},
+											Name:       "FlagSet.Parse",
+											Synopsis:   "func (f *FlagSet) Parse(arguments []string) error",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "FlagSet",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "FlagSet.Parsed",
-												Synopsis:   "func (f *FlagSet) Parsed() bool",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "FlagSet",
-											},
+											Name:       "FlagSet.Parsed",
+											Synopsis:   "func (f *FlagSet) Parsed() bool",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "FlagSet",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "FlagSet.PrintDefaults",
-												Synopsis:   "func (f *FlagSet) PrintDefaults()",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "FlagSet",
-											},
+											Name:       "FlagSet.PrintDefaults",
+											Synopsis:   "func (f *FlagSet) PrintDefaults()",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "FlagSet",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "FlagSet.Set",
-												Synopsis:   "func (f *FlagSet) Set(name, value string) error",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "FlagSet",
-											},
+											Name:       "FlagSet.Set",
+											Synopsis:   "func (f *FlagSet) Set(name, value string) error",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "FlagSet",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "FlagSet.SetOutput",
-												Synopsis:   "func (f *FlagSet) SetOutput(output io.Writer)",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "FlagSet",
-											},
+											Name:       "FlagSet.SetOutput",
+											Synopsis:   "func (f *FlagSet) SetOutput(output io.Writer)",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "FlagSet",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "FlagSet.String",
-												Synopsis:   "func (f *FlagSet) String(name string, value string, usage string) *string",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "FlagSet",
-											},
+											Name:       "FlagSet.String",
+											Synopsis:   "func (f *FlagSet) String(name string, value string, usage string) *string",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "FlagSet",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "FlagSet.StringVar",
-												Synopsis:   "func (f *FlagSet) StringVar(p *string, name string, value string, usage string)",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "FlagSet",
-											},
+											Name:       "FlagSet.StringVar",
+											Synopsis:   "func (f *FlagSet) StringVar(p *string, name string, value string, usage string)",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "FlagSet",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "FlagSet.Uint",
-												Synopsis:   "func (f *FlagSet) Uint(name string, value uint, usage string) *uint",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "FlagSet",
-											},
+											Name:       "FlagSet.Uint",
+											Synopsis:   "func (f *FlagSet) Uint(name string, value uint, usage string) *uint",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "FlagSet",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "FlagSet.Uint64",
-												Synopsis:   "func (f *FlagSet) Uint64(name string, value uint64, usage string) *uint64",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "FlagSet",
-											},
+											Name:       "FlagSet.Uint64",
+											Synopsis:   "func (f *FlagSet) Uint64(name string, value uint64, usage string) *uint64",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "FlagSet",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "FlagSet.Uint64Var",
-												Synopsis:   "func (f *FlagSet) Uint64Var(p *uint64, name string, value uint64, usage string)",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "FlagSet",
-											},
+											Name:       "FlagSet.Uint64Var",
+											Synopsis:   "func (f *FlagSet) Uint64Var(p *uint64, name string, value uint64, usage string)",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "FlagSet",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "FlagSet.UintVar",
-												Synopsis:   "func (f *FlagSet) UintVar(p *uint, name string, value uint, usage string)",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "FlagSet",
-											},
+											Name:       "FlagSet.UintVar",
+											Synopsis:   "func (f *FlagSet) UintVar(p *uint, name string, value uint, usage string)",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "FlagSet",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "FlagSet.Var",
-												Synopsis:   "func (f *FlagSet) Var(value Value, name string, usage string)",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "FlagSet",
-											},
+											Name:       "FlagSet.Var",
+											Synopsis:   "func (f *FlagSet) Var(value Value, name string, usage string)",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "FlagSet",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "FlagSet.Visit",
-												Synopsis:   "func (f *FlagSet) Visit(fn func(*Flag))",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "FlagSet",
-											},
+											Name:       "FlagSet.Visit",
+											Synopsis:   "func (f *FlagSet) Visit(fn func(*Flag))",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "FlagSet",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "FlagSet.VisitAll",
-												Synopsis:   "func (f *FlagSet) VisitAll(fn func(*Flag))",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "FlagSet",
-											},
+											Name:       "FlagSet.VisitAll",
+											Synopsis:   "func (f *FlagSet) VisitAll(fn func(*Flag))",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "FlagSet",
 										},
 									},
 								},
@@ -2828,15 +2638,13 @@
 										Section:  "Types",
 										Kind:     "Type",
 									},
-									Children: []*internal.Symbol{
+									Children: []*internal.SymbolMeta{
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "Getter.Get",
-												Synopsis:   "Get func() interface{}",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "Getter",
-											},
+											Name:       "Getter.Get",
+											Synopsis:   "Get func() interface{}",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "Getter",
 										},
 									},
 								},
@@ -2847,24 +2655,20 @@
 										Section:  "Types",
 										Kind:     "Type",
 									},
-									Children: []*internal.Symbol{
+									Children: []*internal.SymbolMeta{
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "Value.String",
-												Synopsis:   "String func() string",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "Value",
-											},
+											Name:       "Value.String",
+											Synopsis:   "String func() string",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "Value",
 										},
 										{
-											SymbolMeta: internal.SymbolMeta{
-												Name:       "Value.Set",
-												Synopsis:   "Set func(string) error",
-												Section:    "Types",
-												Kind:       "Method",
-												ParentName: "Value",
-											},
+											Name:       "Value.Set",
+											Synopsis:   "Set func(string) error",
+											Section:    "Types",
+											Kind:       "Method",
+											ParentName: "Value",
 										},
 									},
 								},
@@ -3096,15 +2900,13 @@
 				Section:  "Types",
 				Kind:     "Type",
 			},
-			Children: []*internal.Symbol{
+			Children: []*internal.SymbolMeta{
 				{
-					SymbolMeta: internal.SymbolMeta{
-						Name:       "T.M",
-						Synopsis:   "func (*T) M()",
-						Section:    "Types",
-						Kind:       "Method",
-						ParentName: "T",
-					},
+					Name:       "T.M",
+					Synopsis:   "func (*T) M()",
+					Section:    "Types",
+					Kind:       "Method",
+					ParentName: "T",
 				},
 			},
 		},
diff --git a/internal/fetch/helper_test.go b/internal/fetch/helper_test.go
index a746174..161f3b6 100644
--- a/internal/fetch/helper_test.go
+++ b/internal/fetch/helper_test.go
@@ -77,10 +77,6 @@
 			for _, s := range d.API {
 				s.GOOS = d.GOOS
 				s.GOARCH = d.GOARCH
-				for _, c := range s.Children {
-					c.GOOS = d.GOOS
-					c.GOARCH = d.GOARCH
-				}
 			}
 		}
 	}
diff --git a/internal/fetch/load.go b/internal/fetch/load.go
index 5f6e139..4988eef 100644
--- a/internal/fetch/load.go
+++ b/internal/fetch/load.go
@@ -101,12 +101,7 @@
 				s2.Children = nil
 				s2.GOOS = bc.GOOS
 				s2.GOARCH = bc.GOARCH
-				for _, c := range s.Children {
-					c2 := *c
-					c2.GOOS = bc.GOOS
-					c2.GOARCH = bc.GOARCH
-					s2.Children = append(s2.Children, &c2)
-				}
+				s2.Children = append(s2.Children, s.Children...)
 				doc2.API = append(doc2.API, &s2)
 			}
 			pkg.docs = append(pkg.docs, &doc2)
@@ -117,10 +112,6 @@
 		for _, s := range api {
 			s.GOOS = bc.GOOS
 			s.GOARCH = bc.GOARCH
-			for _, c := range s.Children {
-				c.GOOS = bc.GOOS
-				c.GOARCH = bc.GOARCH
-			}
 		}
 
 		switch {
@@ -190,10 +181,6 @@
 		for _, s := range pkg.docs[0].API {
 			s.GOOS = internal.All
 			s.GOARCH = internal.All
-			for _, c := range s.Children {
-				c.GOOS = internal.All
-				c.GOARCH = internal.All
-			}
 		}
 	}
 	return pkg, nil
diff --git a/internal/godoc/dochtml/symbol.go b/internal/godoc/dochtml/symbol.go
index 1438dc0..1dd0ef4 100644
--- a/internal/godoc/dochtml/symbol.go
+++ b/internal/godoc/dochtml/symbol.go
@@ -148,49 +148,53 @@
 	return syms, nil
 }
 
-func constantsForType(t *doc.Type) []*internal.Symbol {
+func constantsForType(t *doc.Type) []*internal.SymbolMeta {
 	consts := constants(t.Consts)
+	var typConsts []*internal.SymbolMeta
 	for _, c := range consts {
-		c.ParentName = t.Name
-		c.Section = internal.SymbolSectionTypes
+		c2 := c.SymbolMeta
+		c2.ParentName = t.Name
+		c2.Section = internal.SymbolSectionTypes
+		typConsts = append(typConsts, &c2)
 	}
-	return consts
+	return typConsts
 }
 
-func variablesForType(t *doc.Type, fset *token.FileSet) (_ []*internal.Symbol, err error) {
+func variablesForType(t *doc.Type, fset *token.FileSet) (_ []*internal.SymbolMeta, err error) {
 	vars, err := variables(t.Vars, fset)
 	if err != nil {
 		return nil, err
 	}
+	var typVars []*internal.SymbolMeta
 	for _, v := range vars {
-		v.ParentName = t.Name
-		v.Section = internal.SymbolSectionTypes
+		v2 := v.SymbolMeta
+		v2.ParentName = t.Name
+		v2.Section = internal.SymbolSectionTypes
+		typVars = append(typVars, &v2)
 	}
-	return vars, nil
+	return typVars, nil
 }
 
-func functionsForType(t *doc.Type, fset *token.FileSet) []*internal.Symbol {
-	var syms []*internal.Symbol
+func functionsForType(t *doc.Type, fset *token.FileSet) []*internal.SymbolMeta {
+	var syms []*internal.SymbolMeta
 	for _, f := range t.Funcs {
-		syms = append(syms, &internal.Symbol{
-			SymbolMeta: internal.SymbolMeta{
-				Name:       f.Name,
-				ParentName: t.Name,
-				Kind:       internal.SymbolKindFunction,
-				Synopsis:   render.OneLineNodeDepth(fset, f.Decl, 0),
-				Section:    internal.SymbolSectionTypes,
-			},
+		syms = append(syms, &internal.SymbolMeta{
+			Name:       f.Name,
+			ParentName: t.Name,
+			Kind:       internal.SymbolKindFunction,
+			Synopsis:   render.OneLineNodeDepth(fset, f.Decl, 0),
+			Section:    internal.SymbolSectionTypes,
 		})
 	}
 	return syms
 }
 
-func fieldsForType(typName string, spec *ast.TypeSpec, fset *token.FileSet) []*internal.Symbol {
+func fieldsForType(typName string, spec *ast.TypeSpec, fset *token.FileSet) []*internal.SymbolMeta {
 	st, ok := spec.Type.(*ast.StructType)
 	if !ok {
 		return nil
 	}
-	var syms []*internal.Symbol
+	var syms []*internal.SymbolMeta
 	for _, f := range st.Fields.List {
 		// It's not possible for there to be more than one name.
 		// FieldList is also used by go/ast for st.Methods, which is the
@@ -198,31 +202,27 @@
 		for _, n := range f.Names {
 			synopsis := fmt.Sprintf("%s %s", n, render.OneLineNodeDepth(fset, f.Type, 0))
 			name := typName + "." + n.Name
-			syms = append(syms, &internal.Symbol{
-				SymbolMeta: internal.SymbolMeta{
-					Name:       name,
-					ParentName: typName,
-					Kind:       internal.SymbolKindField,
-					Synopsis:   synopsis,
-					Section:    internal.SymbolSectionTypes,
-				},
+			syms = append(syms, &internal.SymbolMeta{
+				Name:       name,
+				ParentName: typName,
+				Kind:       internal.SymbolKindField,
+				Synopsis:   synopsis,
+				Section:    internal.SymbolSectionTypes,
 			})
 		}
 	}
 	return syms
 }
 
-func methodsForType(t *doc.Type, spec *ast.TypeSpec, fset *token.FileSet) ([]*internal.Symbol, error) {
-	var syms []*internal.Symbol
+func methodsForType(t *doc.Type, spec *ast.TypeSpec, fset *token.FileSet) ([]*internal.SymbolMeta, error) {
+	var syms []*internal.SymbolMeta
 	for _, m := range t.Methods {
-		syms = append(syms, &internal.Symbol{
-			SymbolMeta: internal.SymbolMeta{
-				Name:       t.Name + "." + m.Name,
-				ParentName: t.Name,
-				Kind:       internal.SymbolKindMethod,
-				Synopsis:   render.OneLineNodeDepth(fset, m.Decl, 0),
-				Section:    internal.SymbolSectionTypes,
-			},
+		syms = append(syms, &internal.SymbolMeta{
+			Name:       t.Name + "." + m.Name,
+			ParentName: t.Name,
+			Kind:       internal.SymbolKindMethod,
+			Synopsis:   render.OneLineNodeDepth(fset, m.Decl, 0),
+			Section:    internal.SymbolSectionTypes,
 		})
 	}
 	if st, ok := spec.Type.(*ast.InterfaceType); ok {
@@ -236,14 +236,12 @@
 			for _, n := range m.Names {
 				name := t.Name + "." + n.Name
 				synopsis := render.OneLineField(fset, m, 0)
-				syms = append(syms, &internal.Symbol{
-					SymbolMeta: internal.SymbolMeta{
-						Name:       name,
-						ParentName: t.Name,
-						Kind:       internal.SymbolKindMethod,
-						Synopsis:   synopsis,
-						Section:    internal.SymbolSectionTypes,
-					},
+				syms = append(syms, &internal.SymbolMeta{
+					Name:       name,
+					ParentName: t.Name,
+					Kind:       internal.SymbolKindMethod,
+					Synopsis:   synopsis,
+					Section:    internal.SymbolSectionTypes,
 				})
 			}
 		}
diff --git a/internal/godoc/dochtml/symbol_test.go b/internal/godoc/dochtml/symbol_test.go
index a037701..bd13b41 100644
--- a/internal/godoc/dochtml/symbol_test.go
+++ b/internal/godoc/dochtml/symbol_test.go
@@ -125,15 +125,13 @@
 				Section:  "Types",
 				Kind:     "Type",
 			},
-			Children: []*internal.Symbol{
+			Children: []*internal.SymbolMeta{
 				{
-					SymbolMeta: internal.SymbolMeta{
-						Name:       "I1.M1",
-						Synopsis:   "M1 func()",
-						Section:    "Types",
-						ParentName: "I1",
-						Kind:       "Method",
-					},
+					Name:       "I1.M1",
+					Synopsis:   "M1 func()",
+					Section:    "Types",
+					ParentName: "I1",
+					Kind:       "Method",
 				},
 			},
 		},
@@ -144,15 +142,13 @@
 				Section:  "Types",
 				Kind:     "Type",
 			},
-			Children: []*internal.Symbol{
+			Children: []*internal.SymbolMeta{
 				{
-					SymbolMeta: internal.SymbolMeta{
-						Name:       "I2.M2",
-						Synopsis:   "M2 func()",
-						Section:    "Types",
-						ParentName: "I2",
-						Kind:       "Method",
-					},
+					Name:       "I2.M2",
+					Synopsis:   "M2 func()",
+					Section:    "Types",
+					ParentName: "I2",
+					Kind:       "Method",
 				},
 			},
 		},
@@ -163,33 +159,27 @@
 				Section:  "Types",
 				Kind:     "Type",
 			},
-			Children: []*internal.Symbol{
+			Children: []*internal.SymbolMeta{
 				{
-					SymbolMeta: internal.SymbolMeta{
-						Name:       "DD",
-						Synopsis:   "const DD",
-						Section:    "Types",
-						Kind:       "Constant",
-						ParentName: "Num",
-					},
+					Name:       "DD",
+					Synopsis:   "const DD",
+					Section:    "Types",
+					Kind:       "Constant",
+					ParentName: "Num",
 				},
 				{
-					SymbolMeta: internal.SymbolMeta{
-						Name:       "EE",
-						Synopsis:   "const EE",
-						Section:    "Types",
-						Kind:       "Constant",
-						ParentName: "Num",
-					},
+					Name:       "EE",
+					Synopsis:   "const EE",
+					Section:    "Types",
+					Kind:       "Constant",
+					ParentName: "Num",
 				},
 				{
-					SymbolMeta: internal.SymbolMeta{
-						Name:       "FF",
-						Synopsis:   "const FF",
-						Section:    "Types",
-						Kind:       "Constant",
-						ParentName: "Num",
-					},
+					Name:       "FF",
+					Synopsis:   "const FF",
+					Section:    "Types",
+					Kind:       "Constant",
+					ParentName: "Num",
 				},
 			},
 		},
@@ -200,15 +190,13 @@
 				Section:  "Types",
 				Kind:     "Type",
 			},
-			Children: []*internal.Symbol{
+			Children: []*internal.SymbolMeta{
 				{
-					SymbolMeta: internal.SymbolMeta{
-						Name:       "S1.F",
-						Synopsis:   "F int",
-						Section:    "Types",
-						ParentName: "S1",
-						Kind:       "Field",
-					},
+					Name:       "S1.F",
+					Synopsis:   "F int",
+					Section:    "Types",
+					ParentName: "S1",
+					Kind:       "Field",
 				},
 			},
 		},
@@ -219,15 +207,13 @@
 				Section:  "Types",
 				Kind:     "Type",
 			},
-			Children: []*internal.Symbol{
+			Children: []*internal.SymbolMeta{
 				{
-					SymbolMeta: internal.SymbolMeta{
-						Name:       "S2.G",
-						Synopsis:   "G int",
-						Section:    "Types",
-						ParentName: "S2",
-						Kind:       "Field",
-					},
+					Name:       "S2.G",
+					Synopsis:   "G int",
+					Section:    "Types",
+					ParentName: "S2",
+					Kind:       "Field",
 				},
 			},
 		},
@@ -238,42 +224,34 @@
 				Section:  "Types",
 				Kind:     "Type",
 			},
-			Children: []*internal.Symbol{
+			Children: []*internal.SymbolMeta{
 				{
-					SymbolMeta: internal.SymbolMeta{
-						Name:       "CT",
-						Synopsis:   "const CT",
-						Section:    "Types",
-						ParentName: "T",
-						Kind:       "Constant",
-					},
+					Name:       "CT",
+					Synopsis:   "const CT",
+					Section:    "Types",
+					ParentName: "T",
+					Kind:       "Constant",
 				},
 				{
-					SymbolMeta: internal.SymbolMeta{
-						Name:       "VT",
-						Synopsis:   "var VT T",
-						Section:    "Types",
-						ParentName: "T",
-						Kind:       "Variable",
-					},
+					Name:       "VT",
+					Synopsis:   "var VT T",
+					Section:    "Types",
+					ParentName: "T",
+					Kind:       "Variable",
 				},
 				{
-					SymbolMeta: internal.SymbolMeta{
-						Name:       "TF",
-						Synopsis:   "func TF() T",
-						Section:    "Types",
-						ParentName: "T",
-						Kind:       "Function",
-					},
+					Name:       "TF",
+					Synopsis:   "func TF() T",
+					Section:    "Types",
+					ParentName: "T",
+					Kind:       "Function",
 				},
 				{
-					SymbolMeta: internal.SymbolMeta{
-						Name:       "T.M",
-						Synopsis:   "func (T) M()",
-						Section:    "Types",
-						ParentName: "T",
-						Kind:       "Method",
-					},
+					Name:       "T.M",
+					Synopsis:   "func (T) M()",
+					Section:    "Types",
+					ParentName: "T",
+					Kind:       "Method",
 				},
 			},
 		},
diff --git a/internal/postgres/insert_symbol_history.go b/internal/postgres/insert_symbol_history.go
index 167d96a..59868fa 100644
--- a/internal/postgres/insert_symbol_history.go
+++ b/internal/postgres/insert_symbol_history.go
@@ -57,7 +57,7 @@
 					}
 				}
 				seen := map[string]bool{}
-				if err := updateSymbols(doc.API, func(s *internal.Symbol) error {
+				if err := updateSymbols(doc.API, func(sm *internal.SymbolMeta) error {
 					// While a package with duplicate symbol names won't build,
 					// the documentation for these packages are currently
 					// rendered on pkg.go.dev, so doc.API may contain more than
@@ -65,13 +65,13 @@
 					//
 					// For the purpose of symbol_history, just use the first
 					// symbol name we see.
-					if seen[s.Name] {
+					if seen[sm.Name] {
 						return nil
 					}
-					seen[s.Name] = true
+					seen[sm.Name] = true
 
-					if shouldUpdateSymbolHistory(s.Name, ver, dbNameToVersion) {
-						values, err = appendSymbolHistoryRow(s, values,
+					if shouldUpdateSymbolHistory(sm.Name, ver, dbNameToVersion) {
+						values, err = appendSymbolHistoryRow(sm, values,
 							packagePath, modulePath, ver, b, pathToID, nameToID,
 							pathToPkgsymID)
 						if err != nil {
@@ -117,21 +117,21 @@
 	return nil
 }
 
-func appendSymbolHistoryRow(s *internal.Symbol, values []interface{},
+func appendSymbolHistoryRow(sm *internal.SymbolMeta, values []interface{},
 	packagePath, modulePath, ver string, build internal.BuildContext,
 	pathToID, symToID map[string]int,
 	pathToPkgsymID map[string]map[packageSymbol]int) (_ []interface{}, err error) {
-	defer derrors.WrapStack(&err, "appendSymbolHistoryRow(%q, %q, %q, %q)", s.Name, packagePath, modulePath, ver)
-	symbolID := symToID[s.Name]
+	defer derrors.WrapStack(&err, "appendSymbolHistoryRow(%q, %q, %q, %q)", sm.Name, packagePath, modulePath, ver)
+	symbolID := symToID[sm.Name]
 	if symbolID == 0 {
-		return nil, fmt.Errorf("symbolID cannot be 0: %q", s.Name)
+		return nil, fmt.Errorf("symbolID cannot be 0: %q", sm.Name)
 	}
-	if s.ParentName == "" {
-		s.ParentName = s.Name
+	if sm.ParentName == "" {
+		sm.ParentName = sm.Name
 	}
-	parentID := symToID[s.ParentName]
+	parentID := symToID[sm.ParentName]
 	if parentID == 0 {
-		return nil, fmt.Errorf("parentSymbolID cannot be 0: %q", s.ParentName)
+		return nil, fmt.Errorf("parentSymbolID cannot be 0: %q", sm.ParentName)
 	}
 	packagePathID := pathToID[packagePath]
 	if packagePathID == 0 {
@@ -141,7 +141,7 @@
 	if modulePathID == 0 {
 		return nil, fmt.Errorf("modulePathID cannot be 0: %q", modulePathID)
 	}
-	pkgsymID := pathToPkgsymID[packagePath][packageSymbol{synopsis: s.Synopsis, name: s.Name, parentName: s.ParentName}]
+	pkgsymID := pathToPkgsymID[packagePath][packageSymbol{synopsis: sm.Synopsis, name: sm.Name, parentName: sm.ParentName}]
 	return append(values,
 		symbolID,
 		parentID,
diff --git a/internal/postgres/symbol.go b/internal/postgres/symbol.go
index e6fb508..7212ac2 100644
--- a/internal/postgres/symbol.go
+++ b/internal/postgres/symbol.go
@@ -69,9 +69,9 @@
 	docIDToPkgsymIDs := map[int]map[int]bool{}
 	for path, docIDToDoc := range pathToDocIDToDoc {
 		for docID, doc := range docIDToDoc {
-			err := updateSymbols(doc.API, func(s *internal.Symbol) error {
+			err := updateSymbols(doc.API, func(sm *internal.SymbolMeta) error {
 				pkgsymToID := pathToPkgsymID[path]
-				pkgsymID := pkgsymToID[packageSymbol{synopsis: s.Synopsis, name: s.Name, parentName: s.ParentName}]
+				pkgsymID := pkgsymToID[packageSymbol{synopsis: sm.Synopsis, name: sm.Name, parentName: sm.ParentName}]
 				_, ok := docIDToPkgsymIDs[docID]
 				if !ok {
 					docIDToPkgsymIDs[docID] = map[int]bool{}
@@ -227,23 +227,23 @@
 			return nil, fmt.Errorf("pathID cannot be 0: %q", path)
 		}
 		for _, doc := range docs {
-			if err := updateSymbols(doc.API, func(s *internal.Symbol) error {
-				ps := packageSymbol{synopsis: s.Synopsis, name: s.Name, parentName: s.ParentName}
-				symID := nameToID[s.Name]
+			if err := updateSymbols(doc.API, func(sm *internal.SymbolMeta) error {
+				ps := packageSymbol{synopsis: sm.Synopsis, name: sm.Name, parentName: sm.ParentName}
+				symID := nameToID[sm.Name]
 				if symID == 0 {
-					return fmt.Errorf("symID cannot be 0: %q", s.Name)
+					return fmt.Errorf("symID cannot be 0: %q", sm.Name)
 				}
-				if s.ParentName == "" {
-					s.ParentName = s.Name
+				if sm.ParentName == "" {
+					sm.ParentName = sm.Name
 				}
-				parentID := nameToID[s.ParentName]
+				parentID := nameToID[sm.ParentName]
 				if parentID == 0 {
-					return fmt.Errorf("parentSymID cannot be 0: %q", s.ParentName)
+					return fmt.Errorf("parentSymID cannot be 0: %q", sm.ParentName)
 				}
 				if _, ok := pathTopkgsymToID[path][ps]; !ok {
 					packageSymbols = append(packageSymbols, pathID,
-						modulePathID, symID, parentID, s.Section, s.Kind,
-						s.Synopsis)
+						modulePathID, symID, parentID, sm.Section, sm.Kind,
+						sm.Synopsis)
 				}
 				return nil
 			}); err != nil {
@@ -275,8 +275,8 @@
 	var names []string
 	for _, docIDToDocs := range pathToDocIDToDocs {
 		for _, doc := range docIDToDocs {
-			if err := updateSymbols(doc.API, func(s *internal.Symbol) error {
-				names = append(names, s.Name)
+			if err := updateSymbols(doc.API, func(sm *internal.SymbolMeta) error {
+				names = append(names, sm.Name)
 				return nil
 			}); err != nil {
 				return nil, err
@@ -351,38 +351,46 @@
 	// so that we can map the children to those symbols.
 	buildToNameToType := map[internal.BuildContext]map[string]*internal.Symbol{}
 	collect := func(rows *sql.Rows) error {
-		var s internal.Symbol
+		var (
+			sm    internal.SymbolMeta
+			build internal.BuildContext
+		)
 		if err := rows.Scan(
-			&s.Name, &s.ParentName,
-			&s.Section, &s.Kind, &s.Synopsis,
-			&s.GOOS, &s.GOARCH); err != nil {
+			&sm.Name, &sm.ParentName,
+			&sm.Section, &sm.Kind, &sm.Synopsis,
+			&build.GOOS, &build.GOARCH); err != nil {
 			return fmt.Errorf("row.Scan(): %v", err)
 		}
-		build := internal.BuildContext{GOOS: s.GOOS, GOARCH: s.GOARCH}
-		switch s.Section {
+
+		s := &internal.Symbol{
+			SymbolMeta: sm,
+			GOOS:       build.GOOS,
+			GOARCH:     build.GOARCH,
+		}
+		switch sm.Section {
 		// For symbols that belong to a type, map that symbol as a children of
 		// the parent type.
 		case internal.SymbolSectionTypes:
-			if s.Kind == internal.SymbolKindType {
+			if sm.Kind == internal.SymbolKindType {
 				_, ok := buildToNameToType[build]
 				if !ok {
 					buildToNameToType[build] = map[string]*internal.Symbol{}
 				}
-				buildToNameToType[build][s.Name] = &s
-				buildToSymbols[build] = append(buildToSymbols[build], &s)
+				buildToNameToType[build][sm.Name] = s
+				buildToSymbols[build] = append(buildToSymbols[build], s)
 			} else {
 				nameToType, ok := buildToNameToType[build]
 				if !ok {
-					return fmt.Errorf("build context %v for parent type %q could not be found for symbol %q", build, s.ParentName, s.Name)
+					return fmt.Errorf("build context %v for parent type %q could not be found for symbol %q", build, sm.ParentName, sm.Name)
 				}
-				parent, ok := nameToType[s.ParentName]
+				parent, ok := nameToType[sm.ParentName]
 				if !ok {
-					return fmt.Errorf("parent type %q could not be found for symbol %q", s.ParentName, s.Name)
+					return fmt.Errorf("parent type %q could not be found for symbol %q", sm.ParentName, sm.Name)
 				}
-				parent.Children = append(parent.Children, &s)
+				parent.Children = append(parent.Children, &sm)
 			}
 		default:
-			buildToSymbols[build] = append(buildToSymbols[build], &s)
+			buildToSymbols[build] = append(buildToSymbols[build], s)
 		}
 		return nil
 	}
@@ -392,13 +400,13 @@
 	return buildToSymbols, nil
 }
 
-func updateSymbols(symbols []*internal.Symbol, updateFunc func(s *internal.Symbol) error) error {
+func updateSymbols(symbols []*internal.Symbol, updateFunc func(sm *internal.SymbolMeta) error) error {
 	for _, s := range symbols {
-		if err := updateFunc(s); err != nil {
+		if err := updateFunc(&s.SymbolMeta); err != nil {
 			return err
 		}
-		for _, s := range s.Children {
-			if err := updateFunc(s); err != nil {
+		for _, c := range s.Children {
+			if err := updateFunc(c); err != nil {
 				return err
 			}
 		}
diff --git a/internal/postgres/symbol_test.go b/internal/postgres/symbol_test.go
index 87deb31..0168c56 100644
--- a/internal/postgres/symbol_test.go
+++ b/internal/postgres/symbol_test.go
@@ -77,9 +77,9 @@
 			"Variable":    unitSymbolFromSymbol(sample.Variable, "v1.0.0"),
 			"Function":    unitSymbolFromSymbol(sample.Function, "v1.0.0"),
 			"Type":        unitSymbolFromSymbol(sample.Type, "v1.0.0"),
-			"Type.Field":  unitSymbolFromSymbol(sample.Type.Children[0], "v1.0.0"),
-			"New":         unitSymbolFromSymbol(sample.Type.Children[1], "v1.0.0"),
-			"Type.Method": unitSymbolFromSymbol(sample.Type.Children[2], "v1.0.0"),
+			"Type.Field":  unitSymbolFromSymbolMeta(sample.Type.Children[0], "v1.0.0", internal.BuildContextAll),
+			"New":         unitSymbolFromSymbolMeta(sample.Type.Children[1], "v1.0.0", internal.BuildContextAll),
+			"Type.Method": unitSymbolFromSymbolMeta(sample.Type.Children[2], "v1.0.0", internal.BuildContextAll),
 		},
 	}
 	if diff := cmp.Diff(wantHist, gotHist,
@@ -159,9 +159,9 @@
 		},
 	}
 	typA := typ
-	typA.Children = []*internal.Symbol{&methodA}
+	typA.Children = []*internal.SymbolMeta{&methodA.SymbolMeta}
 	typB := typ
-	typB.Children = []*internal.Symbol{&methodA, &methodB}
+	typB.Children = []*internal.SymbolMeta{&methodA.SymbolMeta, &methodB.SymbolMeta}
 
 	mod10 := moduleWithSymbols(t, "v1.0.0", []*internal.Symbol{&typ})
 	mod11 := moduleWithSymbols(t, "v1.1.0", []*internal.Symbol{&typA})
@@ -301,7 +301,7 @@
 		for _, m := range methods {
 			m.GOOS = goos
 			m.GOARCH = goarch
-			newTyp.Children = append(newTyp.Children, &m)
+			newTyp.Children = append(newTyp.Children, &m.SymbolMeta)
 		}
 		return []*internal.Symbol{&newTyp}
 	}
@@ -505,26 +505,30 @@
 
 func unitSymbolsFromAPI(api []*internal.Symbol, version string) map[string]*internal.UnitSymbol {
 	nameToUnitSymbols := map[string]*internal.UnitSymbol{}
-	updateSymbols(api, func(s *internal.Symbol) error {
+	updateSymbols(api, func(s *internal.SymbolMeta) error {
 		if _, ok := nameToUnitSymbols[s.Name]; !ok {
-			us := unitSymbolFromSymbol(s, version)
+			us := unitSymbolFromSymbolMeta(s, version, internal.BuildContextAll)
 			nameToUnitSymbols[s.Name] = us
 		}
 		return nil
 	})
 	return nameToUnitSymbols
 }
+
 func unitSymbolFromSymbol(s *internal.Symbol, version string) *internal.UnitSymbol {
 	us := &internal.UnitSymbol{
-		SymbolMeta: internal.SymbolMeta{
-			Name:       s.Name,
-			ParentName: s.ParentName,
-			Section:    s.Section,
-			Kind:       s.Kind,
-			Synopsis:   s.Synopsis,
-		},
-		Version: version,
+		SymbolMeta: s.SymbolMeta,
+		Version:    version,
 	}
 	us.AddBuildContext(internal.BuildContext{GOOS: s.GOOS, GOARCH: s.GOARCH})
 	return us
 }
+
+func unitSymbolFromSymbolMeta(sm *internal.SymbolMeta, version string, b internal.BuildContext) *internal.UnitSymbol {
+	us := &internal.UnitSymbol{
+		SymbolMeta: *sm,
+		Version:    version,
+	}
+	us.AddBuildContext(b)
+	return us
+}
diff --git a/internal/symbol.go b/internal/symbol.go
index 7c4c21c..2e68a52 100644
--- a/internal/symbol.go
+++ b/internal/symbol.go
@@ -38,7 +38,7 @@
 	// children of net/http.Handler are FileServer, NotFoundHandler,
 	// RedirectHandler, StripPrefix, and TimeoutHandler. Each child
 	// symbol will have ParentName set to the Name of this type.
-	Children []*Symbol
+	Children []*SymbolMeta
 
 	// GOOS specifies the execution operating system where the symbol appears.
 	GOOS string
diff --git a/internal/testing/sample/sample.go b/internal/testing/sample/sample.go
index ee4f789..eb9ef9f 100644
--- a/internal/testing/sample/sample.go
+++ b/internal/testing/sample/sample.go
@@ -112,29 +112,24 @@
 		},
 		GOOS:   internal.All,
 		GOARCH: internal.All,
-		Children: []*internal.Symbol{
-			FunctionNew,
+		Children: []*internal.SymbolMeta{
+			func() *internal.SymbolMeta {
+				n := FunctionNew.SymbolMeta
+				return &n
+			}(),
 			{
-				SymbolMeta: internal.SymbolMeta{
-					Name:       "Type.Field",
-					Synopsis:   "field",
-					Section:    internal.SymbolSectionTypes,
-					Kind:       internal.SymbolKindField,
-					ParentName: "Type",
-				},
-				GOOS:   internal.All,
-				GOARCH: internal.All,
+				Name:       "Type.Field",
+				Synopsis:   "field",
+				Section:    internal.SymbolSectionTypes,
+				Kind:       internal.SymbolKindField,
+				ParentName: "Type",
 			},
 			{
-				SymbolMeta: internal.SymbolMeta{
-					Name:       "Type.Method",
-					Synopsis:   "method",
-					Section:    internal.SymbolSectionTypes,
-					Kind:       internal.SymbolKindMethod,
-					ParentName: "Type",
-				},
-				GOOS:   internal.All,
-				GOARCH: internal.All,
+				Name:       "Type.Method",
+				Synopsis:   "method",
+				Section:    internal.SymbolSectionTypes,
+				Kind:       internal.SymbolKindMethod,
+				ParentName: "Type",
 			},
 		},
 	}