// Copyright 2020 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package fetch

import (
	"net/http"
	"strings"

	"golang.org/x/pkgsite/internal"
	"golang.org/x/pkgsite/internal/derrors"
	"golang.org/x/pkgsite/internal/godoc"
	"golang.org/x/pkgsite/internal/proxy/proxytest"
	"golang.org/x/pkgsite/internal/source"
	"golang.org/x/pkgsite/internal/stdlib"
	"golang.org/x/pkgsite/internal/testing/testhelper"
)

type testModule struct {
	mod        *proxytest.Module
	modfunc    func() *proxytest.Module // call to get module if mod field is nil
	fr         *FetchResult
	docStrings map[string][]string
}

var singleUnits = []*internal.Unit{
	{
		UnitMeta: internal.UnitMeta{
			Path: "example.com/single",
		},
		Readme: &internal.Readme{
			Filepath: "README.md",
			Contents: "This is the README for a test module.",
		},
	},
	{
		UnitMeta: internal.UnitMeta{
			Name: "pkg",
			Path: "example.com/single/pkg",
		},
		Documentation: []*internal.Documentation{{
			GOOS:     internal.All,
			GOARCH:   internal.All,
			Synopsis: "Package pkg is a sample package.",
			API: []*internal.Symbol{
				{
					SymbolMeta: internal.SymbolMeta{
						Name:     "Version",
						Synopsis: "const Version",
						Section:  "Constants",
						Kind:     "Constant",
					},
				},
				{
					SymbolMeta: internal.SymbolMeta{
						Name:     "V",
						Synopsis: "var V = Version",
						Section:  "Variables",
						Kind:     "Variable",
					},
				},
				{
					SymbolMeta: internal.SymbolMeta{
						Name:     "G",
						Synopsis: "func G() int",
						Section:  "Functions",
						Kind:     "Function",
					},
				},
				{
					SymbolMeta: internal.SymbolMeta{
						Name:     "T",
						Synopsis: "type T int",
						Section:  "Types",
						Kind:     "Type",
					},
					Children: []*internal.SymbolMeta{
						{
							Name:       "F",
							Synopsis:   "func F(t time.Time, s string) (T, u)",
							Section:    "Types",
							Kind:       "Function",
							ParentName: "T",
						},
					},
				},
			},
		}},
		BuildContexts: []internal.BuildContext{internal.BuildContextAll},
		Imports:       []string{"time"},
	},
}

var moduleOnePackage = &testModule{
	modfunc: func() *proxytest.Module {
		return proxytest.FindModule(testModules, "example.com/single", "v1.0.0")
	},
	fr: &FetchResult{
		HasGoMod: true,
		Module: &internal.Module{
			ModuleInfo: internal.ModuleInfo{
				ModulePath:        "example.com/single",
				HasGoMod:          true,
				SourceInfo:        source.NewGitHubInfo("https://example.com/single", "", "v1.0.0"),
				IsRedistributable: true,
			},
			Units: singleUnits,
		},
	},
}

var moduleNoGoMod = &testModule{
	modfunc: func() *proxytest.Module {
		return proxytest.FindModule(testModules, "example.com/basic", "v1.0.0").
			ChangePath("example.com/nogo").
			DeleteFile("go.mod")
	},
	fr: &FetchResult{
		HasGoMod: false,
		Module: &internal.Module{
			ModuleInfo: internal.ModuleInfo{
				ModulePath:        "example.com/nogo",
				HasGoMod:          false,
				SourceInfo:        source.NewGitHubInfo("https://example.com/nogo", "", "v1.0.0"),
				IsRedistributable: true,
			},
			Units: []*internal.Unit{
				{
					UnitMeta: internal.UnitMeta{
						Name: "basic",
						Path: "example.com/nogo",
					},
					Readme: &internal.Readme{
						Filepath: "README.md",
						Contents: "This is the README for a test module.",
					},
					Documentation: []*internal.Documentation{
						{
							GOOS:     internal.All,
							GOARCH:   internal.All,
							Synopsis: "Package basic is a sample package.",
							API:      singleUnits[1].Documentation[0].API,
						},
					},
					BuildContexts: []internal.BuildContext{internal.BuildContextAll},
					Imports:       []string{"time"},
				},
			},
		},
	},
	docStrings: map[string][]string{
		"no.mod/module/p": {"const Year = 2009"},
	},
}

var moduleMultiPackage = &testModule{
	modfunc: func() *proxytest.Module { return proxytest.FindModule(testModules, "example.com/multi", "v1.0.0") },
	fr: &FetchResult{
		HasGoMod: true,
		Module: &internal.Module{
			ModuleInfo: internal.ModuleInfo{
				ModulePath:        "example.com/multi",
				HasGoMod:          true,
				SourceInfo:        source.NewGitHubInfo("https://example.com/multi", "", "v1.0.0"),
				IsRedistributable: true,
			},
			Units: []*internal.Unit{
				{
					UnitMeta: internal.UnitMeta{
						Path: "example.com/multi",
					},
					Readme: &internal.Readme{
						Filepath: "README.md",
						Contents: "README file for testing.",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "bar",
						Path: "example.com/multi/bar",
					},
					Readme: &internal.Readme{
						Filepath: "bar/README",
						Contents: "Another README file for testing.",
					},
					Documentation: []*internal.Documentation{
						{
							GOOS:     internal.All,
							GOARCH:   internal.All,
							Synopsis: "package bar",
							API: []*internal.Symbol{
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Bar",
										Synopsis: "func Bar() string",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
							},
						},
					},
					BuildContexts: []internal.BuildContext{internal.BuildContextAll},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "foo",
						Path: "example.com/multi/foo",
					},
					Documentation: []*internal.Documentation{{
						GOOS:     internal.All,
						GOARCH:   internal.All,
						Synopsis: "package foo",
						API: []*internal.Symbol{
							{
								SymbolMeta: internal.SymbolMeta{
									Name:     "FooBar",
									Synopsis: "func FooBar() string",
									Section:  "Functions",
									Kind:     "Function",
								},
							},
						},
					}},
					BuildContexts: []internal.BuildContext{internal.BuildContextAll},
					Imports:       []string{"example.com/multi/bar", "fmt"},
				},
			},
		},
	},
	docStrings: map[string][]string{
		"github.com/my/module/bar": {"Bar returns the string &#34;bar&#34;."},
		"github.com/my/module/foo": {"FooBar returns the string &#34;foo bar&#34;."},
	},
}

var moduleEmpty = &testModule{
	mod: &proxytest.Module{
		ModulePath: "emp.ty/module",
	},
	fr: &FetchResult{Module: &internal.Module{}},
}

var moduleNoGo = &testModule{
	mod: &proxytest.Module{
		ModulePath: "no.go/files",
		Files:      map[string]string{"go.mod": "module no.go/files"},
	},
	fr: &FetchResult{Module: &internal.Module{}},
}

var moduleBadPackages = &testModule{
	mod: &proxytest.Module{
		ModulePath: "bad.mod/module",
		Files: map[string]string{
			"LICENSE": testhelper.BSD0License,
			"good/good.go": `
			// Package good is inside a module that has bad packages.
			package good

			// Good is whether this package is good.
			const Good = true`,

			"illegalchar/p.go": `
			package p

			func init() {
				var c00 uint8 = '\0';  // ERROR "oct|char"
				var c01 uint8 = '\07';  // ERROR "oct|char"
				var cx0 uint8 = '\x0';  // ERROR "hex|char"
				var cx1 uint8 = '\x';  // ERROR "hex|char"
				_, _, _, _ = c00, c01, cx0, cx1
			}
			`,
			"multiplepkgs/a.go": "package a",
			"multiplepkgs/b.go": "package b",
			// For the package at the root, all files are excluded by build constraints.
			"root.go": `
					//go:build tools

					package main
				`,
		},
	},
	fr: &FetchResult{
		Status: derrors.ToStatus(derrors.HasIncompletePackages),
		Module: &internal.Module{
			ModuleInfo: internal.ModuleInfo{
				ModulePath:        "bad.mod/module",
				IsRedistributable: true,
			},
			Units: []*internal.Unit{
				{
					// The module itself.
					UnitMeta: internal.UnitMeta{
						Path: "bad.mod/module",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "good",
						Path: "bad.mod/module/good",
					},
					Documentation: []*internal.Documentation{{
						GOOS:     internal.All,
						GOARCH:   internal.All,
						Synopsis: "Package good is inside a module that has bad packages.",
						API: []*internal.Symbol{{
							SymbolMeta: internal.SymbolMeta{
								Name:     "Good",
								Synopsis: "const Good",
								Section:  "Constants",
								Kind:     "Constant",
							},
						}},
					}},
					BuildContexts: []internal.BuildContext{internal.BuildContextAll},
				},
			},
		},
		PackageVersionStates: []*internal.PackageVersionState{
			{
				PackagePath: "bad.mod/module",
				ModulePath:  "bad.mod/module",
				Version:     "v1.0.0",
				Status:      600,
			},
			{
				PackagePath: "bad.mod/module/good",
				ModulePath:  "bad.mod/module",
				Version:     "v1.0.0",
				Status:      200,
			},
			{
				PackagePath: "bad.mod/module/illegalchar",
				ModulePath:  "bad.mod/module",
				Version:     "v1.0.0",
				Status:      600, //TODO(jba): this should be InvalidContents (604), not a build context error
			},
			{
				PackagePath: "bad.mod/module/multiplepkgs",
				ModulePath:  "bad.mod/module",
				Version:     "v1.0.0",
				Status:      600,
			},
		},
	},
	docStrings: map[string][]string{
		"bad.mod/module/good": {`const Good = <a href="/builtin#true">true</a>`},
	},
}

var moduleBuildConstraints = &testModule{
	modfunc: func() *proxytest.Module {
		return proxytest.FindModule(testModules, "example.com/build-constraints", "")
	},
	fr: &FetchResult{
		Status:   derrors.ToStatus(derrors.HasIncompletePackages),
		HasGoMod: true,
		Module: &internal.Module{
			ModuleInfo: internal.ModuleInfo{
				ModulePath:        "example.com/build-constraints",
				HasGoMod:          true,
				SourceInfo:        source.NewGitHubInfo("https://example.com/build-constraints", "", "v1.0.0"),
				IsRedistributable: true,
			},
			Units: []*internal.Unit{
				{
					UnitMeta: internal.UnitMeta{
						Path: "example.com/build-constraints",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "cpu",
						Path: "example.com/build-constraints/cpu",
					},
					Documentation: []*internal.Documentation{
						{
							GOOS:     "linux",
							GOARCH:   "amd64",
							Synopsis: "Package cpu implements processor feature detection used by the Go standard library.",
							API: []*internal.Symbol{
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "CacheLinePadSize",
										Synopsis: "const CacheLinePadSize",
										Section:  "Constants",
										Kind:     "Constant",
									},
								},
							},
						},
						{
							GOOS:     "windows",
							GOARCH:   "amd64",
							Synopsis: "Package cpu implements processor feature detection used by the Go standard library.",
							API: []*internal.Symbol{
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "CacheLinePadSize",
										Synopsis: "const CacheLinePadSize",
										Section:  "Constants",
										Kind:     "Constant",
									},
								},
							},
						},
						{
							GOOS:     "darwin",
							GOARCH:   "amd64",
							Synopsis: "Package cpu implements processor feature detection used by the Go standard library.",
							API: []*internal.Symbol{
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "CacheLinePadSize",
										Synopsis: "const CacheLinePadSize",
										Section:  "Constants",
										Kind:     "Constant",
									},
								},
							},
						},
						{
							GOOS:     "js",
							GOARCH:   "wasm",
							Synopsis: "Package cpu implements processor feature detection used by the Go standard library.",
						},
					},
					BuildContexts: []internal.BuildContext{
						internal.BuildContextLinux, internal.BuildContextWindows,
						internal.BuildContextDarwin, internal.BuildContextJS,
					},
				},
			},
		},
		PackageVersionStates: []*internal.PackageVersionState{
			{
				ModulePath:  "example.com/build-constraints",
				Version:     "v1.0.0",
				PackagePath: "example.com/build-constraints/cpu",
				Status:      http.StatusOK,
			},
			{
				ModulePath:  "example.com/build-constraints",
				Version:     "v1.0.0",
				PackagePath: "example.com/build-constraints/ignore",
				Status:      derrors.ToStatus(derrors.PackageBuildContextNotSupported),
			},
		},
	},
	docStrings: map[string][]string{
		"build.constraints/module/cpu": {"const CacheLinePadSize = 3"},
	},
}

// The package in this module is broken for one build context, but not all.
var moduleBadBuildContext = &testModule{
	mod: &proxytest.Module{
		ModulePath: "github.com/bad-context",
		Files: map[string]string{
			"pkg/linux.go": `
					// +build linux js

					package pkg`,
			"pkg/js.go": `
					// +build js

					package js`,
		},
	},
	fr: &FetchResult{
		Module: &internal.Module{
			ModuleInfo: internal.ModuleInfo{
				ModulePath:        "github.com/bad-context",
				HasGoMod:          false,
				IsRedistributable: false,
			},
			Units: []*internal.Unit{
				{
					UnitMeta: internal.UnitMeta{
						Path: "github.com/bad-context",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "pkg",
						Path: "github.com/bad-context/pkg",
					},
					Documentation: []*internal.Documentation{{
						GOOS:   "linux",
						GOARCH: "amd64",
					}},
					BuildContexts: []internal.BuildContext{internal.BuildContextLinux},
				},
			},
		},
	},
}

var moduleNonRedist = &testModule{
	modfunc: func() *proxytest.Module { return proxytest.FindModule(testModules, "example.com/nonredist", "") },
	fr: &FetchResult{
		HasGoMod: true,
		Module: &internal.Module{
			ModuleInfo: internal.ModuleInfo{
				ModulePath:        "example.com/nonredist",
				HasGoMod:          true,
				SourceInfo:        source.NewGitHubInfo("https://example.com/nonredist", "", "v1.0.0"),
				IsRedistributable: true,
			},
			Units: []*internal.Unit{
				{
					UnitMeta: internal.UnitMeta{
						Path: "example.com/nonredist",
					},
					Readme: &internal.Readme{
						Filepath: "README.md",
						Contents: "README file for testing.",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "bar",
						Path: "example.com/nonredist/bar",
					},
					Documentation: []*internal.Documentation{
						{
							GOOS:     internal.All,
							GOARCH:   internal.All,
							Synopsis: "package bar",
							API: []*internal.Symbol{
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Bar",
										Synopsis: "func Bar() string",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
							},
						},
					},
					BuildContexts: []internal.BuildContext{internal.BuildContextAll},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "baz",
						Path: "example.com/nonredist/bar/baz",
					},
					Documentation: []*internal.Documentation{
						{
							GOOS:     internal.All,
							GOARCH:   internal.All,
							Synopsis: "package baz",
							API: []*internal.Symbol{
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Baz",
										Synopsis: "func Baz() string",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
							},
						},
					},
					BuildContexts: []internal.BuildContext{internal.BuildContextAll},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "unk",
						Path: "example.com/nonredist/unk",
					},
					Readme: &internal.Readme{
						Filepath: "unk/README.md",
						Contents: "README file will be removed before DB insert.",
					},
					Documentation: []*internal.Documentation{
						{
							GOOS:     internal.All,
							GOARCH:   internal.All,
							Synopsis: "package unk",
							API: []*internal.Symbol{
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "FooBar",
										Synopsis: "func FooBar() string",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
							},
						},
					},
					BuildContexts: []internal.BuildContext{internal.BuildContextAll},
					Imports:       []string{"example.com/nonredist/bar", "fmt"},
				},
			},
		},
	},
	docStrings: map[string][]string{
		"example.com/nonredist/bar":     {"Bar returns the string"},
		"example.com/nonredist/bar/baz": {"Baz returns the string"},
		"example.com/nonredist/foo":     {"FooBar returns the string"},
	},
}

var moduleBadImportPath = &testModule{
	mod: &proxytest.Module{
		ModulePath: "bad.import.path.com",
		Files: map[string]string{
			"good/import/path/foo.go": "package foo",
			"bad/import path/foo.go":  "package foo",
		},
	},
	fr: &FetchResult{
		Status: derrors.ToStatus(derrors.HasIncompletePackages),
		Module: &internal.Module{
			ModuleInfo: internal.ModuleInfo{
				ModulePath: "bad.import.path.com",
			},
			Units: []*internal.Unit{
				{
					UnitMeta: internal.UnitMeta{
						Path: "bad.import.path.com",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Path: "bad.import.path.com/good",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Path: "bad.import.path.com/good/import",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "foo",
						Path: "bad.import.path.com/good/import/path",
					},
					Documentation: []*internal.Documentation{{GOOS: internal.All, GOARCH: internal.All}},
					BuildContexts: []internal.BuildContext{internal.BuildContextAll},
				},
			},
		},
		PackageVersionStates: []*internal.PackageVersionState{
			{
				ModulePath:  "bad.import.path.com",
				PackagePath: "bad.import.path.com/bad/import path",
				Version:     "v1.0.0",
				Status:      derrors.ToStatus(derrors.PackageBadImportPath),
			},
			{
				ModulePath:  "bad.import.path.com",
				PackagePath: "bad.import.path.com/good/import/path",
				Version:     "v1.0.0",
				Status:      http.StatusOK,
			},
		},
	},
}

var moduleDocTest = &testModule{
	mod: &proxytest.Module{
		ModulePath: "doc.test",
		Files: map[string]string{
			"LICENSE": testhelper.BSD0License,
			"permalink/doc.go": `
				// Package permalink is for testing the heading
				// permalink documentation rendering feature.
				//
				// This is a heading
				//
				// This is a paragraph.
				//
				// This is yet another
				// paragraph.
				//
				package permalink`,
		},
	},
	fr: &FetchResult{
		HasGoMod:  false,
		GoModPath: "doc.test",
		Module: &internal.Module{
			ModuleInfo: internal.ModuleInfo{
				ModulePath:        "doc.test",
				HasGoMod:          false,
				IsRedistributable: true,
			},
			Units: []*internal.Unit{
				{
					UnitMeta: internal.UnitMeta{
						Path: "doc.test",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "permalink",
						Path: "doc.test/permalink",
					},
					Documentation: []*internal.Documentation{{
						GOOS:     internal.All,
						GOARCH:   internal.All,
						Synopsis: "Package permalink is for testing the heading permalink documentation rendering feature.",
					}},
					BuildContexts: []internal.BuildContext{internal.BuildContextAll},
				},
			},
		},
	},
	docStrings: map[string][]string{
		"doc.test/permalink": {
			"<h4 id=\"hdr-This_is_a_heading\">This is a heading <a",
			"href=\"#hdr-This_is_a_heading\" title=\"Go to This is a heading\" aria-label=\"Go to This is a heading\">¶</a></h4>",
		},
	},
}

var moduleDocTooLarge = &testModule{
	mod: &proxytest.Module{
		ModulePath: "bigdoc.test",
		Files: map[string]string{
			"LICENSE": testhelper.BSD0License,
			"doc.go": "// This documentation is big.\n" +
				strings.Repeat("// Too big.\n", 100_000) +
				"package bigdoc",
		},
	},
	fr: &FetchResult{
		HasGoMod:  false,
		GoModPath: "bigdoc.test",
		Module: &internal.Module{
			ModuleInfo: internal.ModuleInfo{
				ModulePath:        "bigdoc.test",
				HasGoMod:          false,
				IsRedistributable: true,
			},
			Units: []*internal.Unit{
				{
					UnitMeta: internal.UnitMeta{
						Name: "bigdoc",
						Path: "bigdoc.test",
					},
					Documentation: []*internal.Documentation{{
						GOOS:     internal.All,
						GOARCH:   internal.All,
						Synopsis: "This documentation is big.",
					}},
					BuildContexts: []internal.BuildContext{internal.BuildContextAll},
				},
			},
		},
		PackageVersionStates: []*internal.PackageVersionState{
			{
				PackagePath: "bigdoc.test",
				ModulePath:  "bigdoc.test",
				Version:     "v1.0.0",
				Status:      200,
			},
		},
	},
	docStrings: map[string][]string{
		"bigdoc.test": {godoc.DocTooLargeReplacement},
	},
}

var moduleWasm = &testModule{
	mod: &proxytest.Module{
		ModulePath: "github.com/my/module/js",
		Files: map[string]string{
			"README.md": "THIS IS A README",
			"LICENSE":   testhelper.BSD0License,
			"js/js.go": `
					// +build js,wasm

					// Package js only works with wasm.
					package js
					type Value int`,
		},
	},
	fr: &FetchResult{
		Module: &internal.Module{
			ModuleInfo: internal.ModuleInfo{
				ModulePath:        "github.com/my/module/js",
				SourceInfo:        source.NewGitHubInfo("https://github.com/my/module", "js", "js/v1.0.0"),
				IsRedistributable: true,
			},
			Units: []*internal.Unit{
				{
					UnitMeta: internal.UnitMeta{
						Path: "github.com/my/module/js",
					},
					Readme: &internal.Readme{
						Filepath: "README.md",
						Contents: "THIS IS A README",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "js",
						Path: "github.com/my/module/js/js",
					},
					Documentation: []*internal.Documentation{
						{
							Synopsis: "Package js only works with wasm.",
							GOOS:     "js",
							GOARCH:   "wasm",
							API: []*internal.Symbol{
								{
									SymbolMeta: internal.SymbolMeta{Name: "Value",
										Synopsis: "type Value int",
										Section:  "Types",
										Kind:     "Type",
									},
								},
							},
						},
					},
					BuildContexts: []internal.BuildContext{internal.BuildContextJS},
				},
			},
		},
	},
}

var moduleAlternative = &testModule{
	mod: &proxytest.Module{
		ModulePath: "github.com/my/module",
		Files:      map[string]string{"go.mod": "module canonical"},
	},
	fr: &FetchResult{
		GoModPath: "canonical",
	},
}

// See known_alternatives.go
var moduleKnownAlternative = &testModule{
	mod: &proxytest.Module{
		ModulePath: "github.com/msopentech/azure-sdk-for-go",
	},
	fr: &FetchResult{
		Status: derrors.ToStatus(derrors.AlternativeModule),
	},
}

var moduleStdMaster = &testModule{
	mod: &proxytest.Module{
		ModulePath: stdlib.ModulePath,
		Version:    "master",
		// No files necessary because the internal/stdlib package will read from
		// internal/stdlib/testdata.
	},
	fr: &FetchResult{
		RequestedVersion: "master",
		ResolvedVersion:  stdlib.TestMasterVersion,
		HasGoMod:         true,
		Module: &internal.Module{
			ModuleInfo: internal.ModuleInfo{
				ModulePath:        stdlib.ModulePath,
				Version:           stdlib.TestMasterVersion,
				CommitTime:        stdlib.TestCommitTime,
				HasGoMod:          true,
				SourceInfo:        source.NewStdlibInfoForTest("master"),
				IsRedistributable: true,
			},
			Units: []*internal.Unit{
				{
					UnitMeta: internal.UnitMeta{
						Path: "errors",
						Name: "errors",
						ModuleInfo: internal.ModuleInfo{
							Version:           stdlib.TestMasterVersion,
							ModulePath:        stdlib.ModulePath,
							IsRedistributable: true,
						},
					},
					IsRedistributable: true,
					Documentation: []*internal.Documentation{
						{
							GOOS:     internal.All,
							GOARCH:   internal.All,
							Synopsis: "Package errors implements functions to manipulate errors.",
							API: []*internal.Symbol{
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "New",
										Synopsis: "func New(text string) error",
										Section:  "Functions",
										Kind:     "Function",
									},
									GOOS:   internal.All,
									GOARCH: internal.All,
								},
							},
						},
					},
					BuildContexts: []internal.BuildContext{internal.BuildContextAll},
				},
				{
					UnitMeta: internal.UnitMeta{
						Path: "std",
						ModuleInfo: internal.ModuleInfo{
							Version:           stdlib.TestMasterVersion,
							ModulePath:        "std",
							IsRedistributable: true,
						},
					},
					IsRedistributable: true,
				},
			},
		},
		PackageVersionStates: []*internal.PackageVersionState{
			{
				PackagePath: "errors",
				ModulePath:  "std",
				Version:     stdlib.TestMasterVersion,
				Status:      200,
			},
		},
	},
}

var moduleStd = &testModule{
	mod: &proxytest.Module{
		ModulePath: stdlib.ModulePath,
		Version:    "v1.12.5",
		// No files necessary because the internal/stdlib package will read from
		// internal/stdlib/testdata.
	},
	fr: &FetchResult{
		HasGoMod: true,
		Module: &internal.Module{
			ModuleInfo: internal.ModuleInfo{
				ModulePath:        "std",
				Version:           "v1.12.5",
				CommitTime:        stdlib.TestCommitTime,
				HasGoMod:          true,
				SourceInfo:        source.NewStdlibInfoForTest("v1.12.5"),
				IsRedistributable: true,
			},
			Units: []*internal.Unit{
				{
					UnitMeta: internal.UnitMeta{
						Path: "std",
					},
					IsRedistributable: true,
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "builtin",
						Path: "builtin",
					},
					Documentation: []*internal.Documentation{
						{
							GOOS:     internal.All,
							GOARCH:   internal.All,
							Synopsis: "Package builtin provides documentation for Go's predeclared identifiers.",
							API: []*internal.Symbol{
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "true",
										Synopsis: "const true",
										Section:  "Constants",
										Kind:     "Constant",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "false",
										Synopsis: "const false",
										Section:  "Constants",
										Kind:     "Constant",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "iota",
										Synopsis: "const iota",
										Section:  "Constants",
										Kind:     "Constant",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "nil",
										Synopsis: "var nil Type",
										Section:  "Variables",
										Kind:     "Variable",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "append",
										Synopsis: "func append(slice []Type, elems ...Type) []Type",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "cap",
										Synopsis: "func cap(v Type) int",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "close",
										Synopsis: "func close(c chan<- Type)",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "complex",
										Synopsis: "func complex(r, i FloatType) ComplexType",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "copy",
										Synopsis: "func copy(dst, src []Type) int",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "delete",
										Synopsis: "func delete(m map[Type]Type1, key Type)",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "imag",
										Synopsis: "func imag(c ComplexType) FloatType",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "len",
										Synopsis: "func len(v Type) int",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "make",
										Synopsis: "func make(t Type, size ...IntegerType) Type",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "new",
										Synopsis: "func new(Type) *Type",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "panic",
										Synopsis: "func panic(v interface{})",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "print",
										Synopsis: "func print(args ...Type)",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "println",
										Synopsis: "func println(args ...Type)",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "real",
										Synopsis: "func real(c ComplexType) FloatType",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "recover",
										Synopsis: "func recover() interface{}",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "ComplexType",
										Synopsis: "type ComplexType complex64",
										Section:  "Types",
										Kind:     "Type",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "FloatType",
										Synopsis: "type FloatType float32",
										Section:  "Types",
										Kind:     "Type",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "IntegerType",
										Synopsis: "type IntegerType int",
										Section:  "Types",
										Kind:     "Type",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Type",
										Synopsis: "type Type int",
										Section:  "Types",
										Kind:     "Type",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Type1",
										Synopsis: "type Type1 int",
										Section:  "Types",
										Kind:     "Type",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "bool",
										Synopsis: "type bool bool",
										Section:  "Types",
										Kind:     "Type",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "byte",
										Synopsis: "type byte = uint8",
										Section:  "Types",
										Kind:     "Type",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "complex128",
										Synopsis: "type complex128 complex128",
										Section:  "Types",
										Kind:     "Type",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "complex64",
										Synopsis: "type complex64 complex64",
										Section:  "Types",
										Kind:     "Type",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "error",
										Synopsis: "type error interface{ ... }",
										Section:  "Types",
										Kind:     "Type",
									},
									Children: []*internal.SymbolMeta{
										{
											Name:       "error.Error",
											Synopsis:   "Error func() string",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "error",
										},
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "float32",
										Synopsis: "type float32 float32",
										Section:  "Types",
										Kind:     "Type",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "float64",
										Synopsis: "type float64 float64",
										Section:  "Types",
										Kind:     "Type",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "int",
										Synopsis: "type int int",
										Section:  "Types",
										Kind:     "Type",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "int16",
										Synopsis: "type int16 int16",
										Section:  "Types",
										Kind:     "Type",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "int32",
										Synopsis: "type int32 int32",
										Section:  "Types",
										Kind:     "Type",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "int64",
										Synopsis: "type int64 int64",
										Section:  "Types",
										Kind:     "Type",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "int8",
										Synopsis: "type int8 int8",
										Section:  "Types",
										Kind:     "Type",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "rune",
										Synopsis: "type rune = int32",
										Section:  "Types",
										Kind:     "Type"},
								},

								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "string",
										Synopsis: "type string string",
										Section:  "Types",
										Kind:     "Type",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "uint",
										Synopsis: "type uint uint",
										Section:  "Types",
										Kind:     "Type",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "uint16",
										Synopsis: "type uint16 uint16",
										Section:  "Types",
										Kind:     "Type",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "uint32",
										Synopsis: "type uint32 uint32",
										Section:  "Types",
										Kind:     "Type",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "uint64",
										Synopsis: "type uint64 uint64",
										Section:  "Types",
										Kind:     "Type",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "uint8",
										Synopsis: "type uint8 uint8",
										Section:  "Types",
										Kind:     "Type",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "uintptr",
										Synopsis: "type uintptr uintptr",
										Section:  "Types",
										Kind:     "Type",
									},
								},
							},
						},
					},
					BuildContexts: []internal.BuildContext{internal.BuildContextAll},
				},
				{
					UnitMeta: internal.UnitMeta{
						Path: "cmd",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "main",
						Path: "cmd/pprof",
					},
					Readme: &internal.Readme{
						Filepath: "cmd/pprof/README",
						Contents: "This directory is the copy of Google's pprof shipped as part of the Go distribution.\n",
					},
					// cmd/pprof has a file with a build constraint that does not include js/wasm.
					// Since the set files isn't the same across all build contexts, we represent
					// every build context.
					Documentation: []*internal.Documentation{
						{
							GOOS:     "linux",
							GOARCH:   "amd64",
							Synopsis: "Pprof interprets and displays profiles of Go programs.",
						},
						{
							GOOS:     "windows",
							GOARCH:   "amd64",
							Synopsis: "Pprof interprets and displays profiles of Go programs.",
						},
						{
							GOOS:     "darwin",
							GOARCH:   "amd64",
							Synopsis: "Pprof interprets and displays profiles of Go programs.",
						},
						{
							GOOS:     "js",
							GOARCH:   "wasm",
							Synopsis: "Pprof interprets and displays profiles of Go programs.",
						},
					},
					BuildContexts: []internal.BuildContext{
						internal.BuildContextLinux, internal.BuildContextWindows,
						internal.BuildContextDarwin, internal.BuildContextJS,
					},
					Imports: []string{
						"cmd/internal/objfile",
						"crypto/tls",
						"debug/dwarf",
						"fmt",
						"github.com/google/pprof/driver",
						"github.com/google/pprof/profile",
						"golang.org/x/crypto/ssh/terminal",
						"io",
						"net/http",
						"net/url",
						"os",
						"regexp",
						"strconv",
						"strings",
						"sync",
						"time",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "context",
						Path: "context",
					},
					Documentation: []*internal.Documentation{
						{
							GOOS:     internal.All,
							GOARCH:   internal.All,
							Synopsis: "Package context defines the Context type, which carries deadlines, cancellation signals, and other request-scoped values across API boundaries and between processes.",
							API: []*internal.Symbol{
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Canceled",
										Synopsis: `var Canceled = errors.New("context canceled")`,
										Section:  "Variables",
										Kind:     "Variable",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "DeadlineExceeded",
										Synopsis: "var DeadlineExceeded error = deadlineExceededError{}",
										Section:  "Variables",
										Kind:     "Variable",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "WithCancel",
										Synopsis: "func WithCancel(parent Context) (ctx Context, cancel CancelFunc)",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "WithDeadline",
										Synopsis: "func WithDeadline(parent Context, d time.Time) (Context, CancelFunc)",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "WithTimeout",
										Synopsis: "func WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc)",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "CancelFunc",
										Synopsis: "type CancelFunc func()",
										Section:  "Types",
										Kind:     "Type",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Context",
										Synopsis: "type Context interface{ ... }",
										Section:  "Types",
										Kind:     "Type",
									},
									Children: []*internal.SymbolMeta{
										{
											Name:       "Background",
											Synopsis:   "func Background() Context",
											Section:    "Types",
											Kind:       "Function",
											ParentName: "Context",
										},
										{
											Name:       "TODO",
											Synopsis:   "func TODO() Context",
											Section:    "Types",
											Kind:       "Function",
											ParentName: "Context",
										},
										{
											Name:       "WithValue",
											Synopsis:   "func WithValue(parent Context, key, val interface{}) Context",
											Section:    "Types",
											Kind:       "Function",
											ParentName: "Context",
										},
										{
											Name:       "Context.Deadline",
											Synopsis:   "Deadline func() (deadline time.Time, ok bool)",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Context",
										},
										{
											Name:       "Context.Done",
											Synopsis:   "Done func() <-chan struct{}",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Context",
										},
										{
											Name:       "Context.Err",
											Synopsis:   "Err func() error",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Context",
										},
										{
											Name:       "Context.Value",
											Synopsis:   "Value func(key interface{}) interface{}",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Context",
										},
									},
								},
							},
						},
					},
					BuildContexts: []internal.BuildContext{internal.BuildContextAll},
					Imports:       []string{"errors", "fmt", "reflect", "sync", "time"},
				},
				{
					UnitMeta: internal.UnitMeta{
						Path: "encoding",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "json",
						Path: "encoding/json",
					},
					Documentation: []*internal.Documentation{
						{
							GOOS:     internal.All,
							GOARCH:   internal.All,
							Synopsis: "Package json implements encoding and decoding of JSON as defined in RFC 7159.",
							API: []*internal.Symbol{
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Compact",
										Synopsis: "func Compact(dst *bytes.Buffer, src []byte) error",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "HTMLEscape",
										Synopsis: "func HTMLEscape(dst *bytes.Buffer, src []byte)",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Indent",
										Synopsis: "func Indent(dst *bytes.Buffer, src []byte, prefix, indent string) error",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Marshal",
										Synopsis: "func Marshal(v interface{}) ([]byte, error)",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "MarshalIndent",
										Synopsis: "func MarshalIndent(v interface{}, prefix, indent string) ([]byte, error)",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Unmarshal",
										Synopsis: "func Unmarshal(data []byte, v interface{}) error",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Valid",
										Synopsis: "func Valid(data []byte) bool",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Decoder",
										Synopsis: "type Decoder struct{}",
										Section:  "Types",
										Kind:     "Type",
									},
									Children: []*internal.SymbolMeta{
										{
											Name:       "NewDecoder",
											Synopsis:   "func NewDecoder(r io.Reader) *Decoder",
											Section:    "Types",
											Kind:       "Function",
											ParentName: "Decoder",
										},
										{
											Name:       "Decoder.Buffered",
											Synopsis:   "func (dec *Decoder) Buffered() io.Reader",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Decoder",
										},
										{
											Name:       "Decoder.Decode",
											Synopsis:   "func (dec *Decoder) Decode(v interface{}) error",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Decoder",
										},
										{
											Name:       "Decoder.DisallowUnknownFields",
											Synopsis:   "func (dec *Decoder) DisallowUnknownFields()",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Decoder",
										},
										{
											Name:       "Decoder.More",
											Synopsis:   "func (dec *Decoder) More() bool",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Decoder",
										},
										{
											Name:       "Decoder.Token",
											Synopsis:   "func (dec *Decoder) Token() (Token, error)",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Decoder",
										},
										{
											Name:       "Decoder.UseNumber",
											Synopsis:   "func (dec *Decoder) UseNumber()",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Decoder",
										},
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Delim",
										Synopsis: "type Delim rune",
										Section:  "Types",
										Kind:     "Type",
									},
									Children: []*internal.SymbolMeta{
										{
											Name:       "Delim.String",
											Synopsis:   "func (d Delim) String() string",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Delim",
										},
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Encoder",
										Synopsis: "type Encoder struct{}",
										Section:  "Types",
										Kind:     "Type",
									},
									Children: []*internal.SymbolMeta{
										{
											Name:       "NewEncoder",
											Synopsis:   "func NewEncoder(w io.Writer) *Encoder",
											Section:    "Types",
											Kind:       "Function",
											ParentName: "Encoder",
										},
										{
											Name:       "Encoder.Encode",
											Synopsis:   "func (enc *Encoder) Encode(v interface{}) error",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Encoder",
										},
										{
											Name:       "Encoder.SetEscapeHTML",
											Synopsis:   "func (enc *Encoder) SetEscapeHTML(on bool)",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Encoder",
										},
										{
											Name:       "Encoder.SetIndent",
											Synopsis:   "func (enc *Encoder) SetIndent(prefix, indent string)",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Encoder",
										},
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "InvalidUTF8Error",
										Synopsis: "type InvalidUTF8Error struct{ ... }",
										Section:  "Types",
										Kind:     "Type",
									},
									Children: []*internal.SymbolMeta{
										{
											Name:       "InvalidUTF8Error.S",
											Synopsis:   "S string",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "InvalidUTF8Error",
										},
										{
											Name:       "InvalidUTF8Error.Error",
											Synopsis:   "func (e *InvalidUTF8Error) Error() string",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "InvalidUTF8Error",
										},
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "InvalidUnmarshalError",
										Synopsis: "type InvalidUnmarshalError struct{ ... }",
										Section:  "Types",
										Kind:     "Type",
									},
									Children: []*internal.SymbolMeta{
										{
											Name:       "InvalidUnmarshalError.Type",
											Synopsis:   "Type reflect.Type",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "InvalidUnmarshalError",
										},
										{
											Name:       "InvalidUnmarshalError.Error",
											Synopsis:   "func (e *InvalidUnmarshalError) Error() string",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "InvalidUnmarshalError",
										},
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Marshaler",
										Synopsis: "type Marshaler interface{ ... }",
										Section:  "Types",
										Kind:     "Type",
									},
									Children: []*internal.SymbolMeta{
										{
											Name:       "Marshaler.MarshalJSON",
											Synopsis:   "MarshalJSON func() ([]byte, error)",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Marshaler",
										},
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "MarshalerError",
										Synopsis: "type MarshalerError struct{ ... }",
										Section:  "Types",
										Kind:     "Type",
									},
									Children: []*internal.SymbolMeta{
										{
											Name:       "MarshalerError.Type",
											Synopsis:   "Type reflect.Type",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "MarshalerError",
										},
										{
											Name:       "MarshalerError.Err",
											Synopsis:   "Err error",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "MarshalerError",
										},
										{
											Name:       "MarshalerError.Error",
											Synopsis:   "func (e *MarshalerError) Error() string",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "MarshalerError",
										},
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Number",
										Synopsis: "type Number string",
										Section:  "Types",
										Kind:     "Type",
									},
									Children: []*internal.SymbolMeta{
										{
											Name:       "Number.Float64",
											Synopsis:   "func (n Number) Float64() (float64, error)",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Number",
										},
										{
											Name:       "Number.Int64",
											Synopsis:   "func (n Number) Int64() (int64, error)",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Number",
										},
										{
											Name:       "Number.String",
											Synopsis:   "func (n Number) String() string",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Number",
										},
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "RawMessage",
										Synopsis: "type RawMessage []byte",
										Section:  "Types",
										Kind:     "Type",
									},
									Children: []*internal.SymbolMeta{
										{
											Name:       "RawMessage.MarshalJSON",
											Synopsis:   "func (m RawMessage) MarshalJSON() ([]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",
										},
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "SyntaxError",
										Synopsis: "type SyntaxError struct{ ... }",
										Section:  "Types",
										Kind:     "Type",
									},
									Children: []*internal.SymbolMeta{
										{
											Name:       "SyntaxError.Offset",
											Synopsis:   "Offset int64",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "SyntaxError",
										},
										{
											Name:       "SyntaxError.Error",
											Synopsis:   "func (e *SyntaxError) Error() string",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "SyntaxError",
										},
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Token",
										Synopsis: "type Token interface{}",
										Section:  "Types",
										Kind:     "Type",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "UnmarshalFieldError",
										Synopsis: "type UnmarshalFieldError struct{ ... }",
										Section:  "Types",
										Kind:     "Type",
									},
									Children: []*internal.SymbolMeta{
										{
											Name:       "UnmarshalFieldError.Key",
											Synopsis:   "Key string",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "UnmarshalFieldError",
										},
										{
											Name:       "UnmarshalFieldError.Type",
											Synopsis:   "Type reflect.Type",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "UnmarshalFieldError",
										},
										{
											Name:       "UnmarshalFieldError.Field",
											Synopsis:   "Field reflect.StructField",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "UnmarshalFieldError",
										},
										{
											Name:       "UnmarshalFieldError.Error",
											Synopsis:   "func (e *UnmarshalFieldError) Error() string",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "UnmarshalFieldError",
										},
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "UnmarshalTypeError",
										Synopsis: "type UnmarshalTypeError struct{ ... }",
										Section:  "Types",
										Kind:     "Type",
									},
									Children: []*internal.SymbolMeta{
										{
											Name:       "UnmarshalTypeError.Value",
											Synopsis:   "Value string",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "UnmarshalTypeError",
										},
										{
											Name:       "UnmarshalTypeError.Type",
											Synopsis:   "Type reflect.Type",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "UnmarshalTypeError",
										},
										{
											Name:       "UnmarshalTypeError.Offset",
											Synopsis:   "Offset int64",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "UnmarshalTypeError",
										},
										{
											Name:       "UnmarshalTypeError.Struct",
											Synopsis:   "Struct string",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "UnmarshalTypeError",
										},
										{
											Name:       "UnmarshalTypeError.Field",
											Synopsis:   "Field string",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "UnmarshalTypeError",
										},
										{
											Name:       "UnmarshalTypeError.Error",
											Synopsis:   "func (e *UnmarshalTypeError) Error() string",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "UnmarshalTypeError",
										},
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Unmarshaler",
										Synopsis: "type Unmarshaler interface{ ... }",
										Section:  "Types",
										Kind:     "Type",
									},
									Children: []*internal.SymbolMeta{
										{
											Name:       "Unmarshaler.UnmarshalJSON",
											Synopsis:   "UnmarshalJSON func([]byte) error",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Unmarshaler",
										},
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "UnsupportedTypeError",
										Synopsis: "type UnsupportedTypeError struct{ ... }",
										Section:  "Types",
										Kind:     "Type",
									},
									Children: []*internal.SymbolMeta{
										{
											Name:       "UnsupportedTypeError.Type",
											Synopsis:   "Type reflect.Type",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "UnsupportedTypeError",
										},
										{
											Name:       "UnsupportedTypeError.Error",
											Synopsis:   "func (e *UnsupportedTypeError) Error() string",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "UnsupportedTypeError",
										},
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "UnsupportedValueError",
										Synopsis: "type UnsupportedValueError struct{ ... }",
										Section:  "Types",
										Kind:     "Type",
									},
									Children: []*internal.SymbolMeta{
										{
											Name:       "UnsupportedValueError.Value",
											Synopsis:   "Value reflect.Value",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "UnsupportedValueError",
										},
										{
											Name:       "UnsupportedValueError.Str",
											Synopsis:   "Str string",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "UnsupportedValueError",
										},
										{
											Name:       "UnsupportedValueError.Error",
											Synopsis:   "func (e *UnsupportedValueError) Error() string",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "UnsupportedValueError",
										},
									},
								},
							},
						},
					},
					BuildContexts: []internal.BuildContext{internal.BuildContextAll},
					Imports: []string{
						"bytes",
						"encoding",
						"encoding/base64",
						"errors",
						"fmt",
						"io",
						"math",
						"reflect",
						"sort",
						"strconv",
						"strings",
						"sync",
						"unicode",
						"unicode/utf16",
						"unicode/utf8",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "errors",
						Path: "errors",
					},
					Documentation: []*internal.Documentation{
						{
							GOOS:     internal.All,
							GOARCH:   internal.All,
							Synopsis: "Package errors implements functions to manipulate errors.",
							API: []*internal.Symbol{
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "New",
										Synopsis: "func New(text string) error",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
							},
						},
					},
					BuildContexts: []internal.BuildContext{internal.BuildContextAll},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "flag",
						Path: "flag",
					},
					Imports: []string{"errors", "fmt", "io", "os", "reflect", "sort", "strconv", "strings", "time"},
					Documentation: []*internal.Documentation{
						{
							GOOS:     internal.All,
							GOARCH:   internal.All,
							Synopsis: "Package flag implements command-line flag parsing.",
							API: []*internal.Symbol{
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "CommandLine",
										Synopsis: "var CommandLine = NewFlagSet(os.Args[0], ExitOnError)",
										Section:  "Variables",
										Kind:     "Variable",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "ErrHelp",
										Synopsis: `var ErrHelp = errors.New("flag: help requested")`,
										Section:  "Variables",
										Kind:     "Variable",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Usage",
										Synopsis: "var Usage = func() { ... }",
										Section:  "Variables",
										Kind:     "Variable",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Arg",
										Synopsis: "func Arg(i int) string",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Args",
										Synopsis: "func Args() []string",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Bool",
										Synopsis: "func Bool(name string, value bool, usage string) *bool",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "BoolVar",
										Synopsis: "func BoolVar(p *bool, name string, value bool, usage string)",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Duration",
										Synopsis: "func Duration(name string, value time.Duration, usage string) *time.Duration",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "DurationVar",
										Synopsis: "func DurationVar(p *time.Duration, name string, value time.Duration, usage string)",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Float64",
										Synopsis: "func Float64(name string, value float64, usage string) *float64",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Float64Var",
										Synopsis: "func Float64Var(p *float64, name string, value float64, usage string)",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Int",
										Synopsis: "func Int(name string, value int, usage string) *int",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Int64",
										Synopsis: "func Int64(name string, value int64, usage string) *int64",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Int64Var",
										Synopsis: "func Int64Var(p *int64, name string, value int64, usage string)",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "IntVar",
										Synopsis: "func IntVar(p *int, name string, value int, usage string)",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "NArg",
										Synopsis: "func NArg() int",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "NFlag",
										Synopsis: "func NFlag() int",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Parse",
										Synopsis: "func Parse()",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Parsed",
										Synopsis: "func Parsed() bool",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "PrintDefaults",
										Synopsis: "func PrintDefaults()",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Set",
										Synopsis: "func Set(name, value string) error",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "String",
										Synopsis: "func String(name string, value string, usage string) *string",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "StringVar",
										Synopsis: "func StringVar(p *string, name string, value string, usage string)",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Uint",
										Synopsis: "func Uint(name string, value uint, usage string) *uint",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Uint64",
										Synopsis: "func Uint64(name string, value uint64, usage string) *uint64",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Uint64Var",
										Synopsis: "func Uint64Var(p *uint64, name string, value uint64, usage string)",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "UintVar",
										Synopsis: "func UintVar(p *uint, name string, value uint, usage string)",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "UnquoteUsage",
										Synopsis: "func UnquoteUsage(flag *Flag) (name string, usage string)",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Var",
										Synopsis: "func Var(value Value, name string, usage string)",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Visit",
										Synopsis: "func Visit(fn func(*Flag))",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "VisitAll",
										Synopsis: "func VisitAll(fn func(*Flag))",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "ErrorHandling",
										Synopsis: "type ErrorHandling int",
										Section:  "Types",
										Kind:     "Type",
									},
									Children: []*internal.SymbolMeta{
										{
											Name:       "ContinueOnError",
											Synopsis:   "const ContinueOnError",
											Section:    "Types",
											Kind:       "Constant",
											ParentName: "ErrorHandling",
										},
										{
											Name:       "ExitOnError",
											Synopsis:   "const ExitOnError",
											Section:    "Types",
											Kind:       "Constant",
											ParentName: "ErrorHandling",
										},
										{
											Name:       "PanicOnError",
											Synopsis:   "const PanicOnError",
											Section:    "Types",
											Kind:       "Constant",
											ParentName: "ErrorHandling",
										},
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Flag",
										Synopsis: "type Flag struct{ ... }",
										Section:  "Types",
										Kind:     "Type",
									},
									Children: []*internal.SymbolMeta{
										{
											Name:       "Lookup",
											Synopsis:   "func Lookup(name string) *Flag",
											Section:    "Types",
											Kind:       "Function",
											ParentName: "Flag",
										},
										{
											Name:       "Flag.Name",
											Synopsis:   "Name string",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "Flag",
										},
										{
											Name:       "Flag.Usage",
											Synopsis:   "Usage string",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "Flag",
										},
										{
											Name:       "Flag.Value",
											Synopsis:   "Value Value",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "Flag",
										},
										{
											Name:       "Flag.DefValue",
											Synopsis:   "DefValue string",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "Flag",
										},
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "FlagSet",
										Synopsis: "type FlagSet struct{ ... }",
										Section:  "Types",
										Kind:     "Type",
									},
									Children: []*internal.SymbolMeta{
										{
											Name:       "NewFlagSet",
											Synopsis:   "func NewFlagSet(name string, errorHandling ErrorHandling) *FlagSet",
											Section:    "Types",
											Kind:       "Function",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.Usage",
											Synopsis:   "Usage func()",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.Arg",
											Synopsis:   "func (f *FlagSet) Arg(i int) string",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.Args",
											Synopsis:   "func (f *FlagSet) Args() []string",
											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",
										},
										{
											Name:       "FlagSet.BoolVar",
											Synopsis:   "func (f *FlagSet) BoolVar(p *bool, name string, value bool, usage string)",
											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",
										},
										{
											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.ErrorHandling",
											Synopsis:   "func (f *FlagSet) ErrorHandling() ErrorHandling",
											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",
										},
										{
											Name:       "FlagSet.Float64Var",
											Synopsis:   "func (f *FlagSet) Float64Var(p *float64, name string, value float64, usage string)",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.Init",
											Synopsis:   "func (f *FlagSet) Init(name string, errorHandling ErrorHandling)",
											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",
										},
										{
											Name:       "FlagSet.Int64",
											Synopsis:   "func (f *FlagSet) Int64(name string, value int64, usage string) *int64",
											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",
										},
										{
											Name:       "FlagSet.IntVar",
											Synopsis:   "func (f *FlagSet) IntVar(p *int, name string, value int, usage string)",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.Lookup",
											Synopsis:   "func (f *FlagSet) Lookup(name string) *Flag",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.NArg",
											Synopsis:   "func (f *FlagSet) NArg() int",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.NFlag",
											Synopsis:   "func (f *FlagSet) NFlag() int",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.Name",
											Synopsis:   "func (f *FlagSet) Name() string",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.Output",
											Synopsis:   "func (f *FlagSet) Output() io.Writer",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.Parse",
											Synopsis:   "func (f *FlagSet) Parse(arguments []string) error",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.Parsed",
											Synopsis:   "func (f *FlagSet) Parsed() bool",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.PrintDefaults",
											Synopsis:   "func (f *FlagSet) PrintDefaults()",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.Set",
											Synopsis:   "func (f *FlagSet) Set(name, value string) error",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "FlagSet",
										},
										{
											Name:       "FlagSet.SetOutput",
											Synopsis:   "func (f *FlagSet) SetOutput(output io.Writer)",
											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",
										},
										{
											Name:       "FlagSet.StringVar",
											Synopsis:   "func (f *FlagSet) StringVar(p *string, name string, value string, usage string)",
											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",
										},
										{
											Name:       "FlagSet.Uint64",
											Synopsis:   "func (f *FlagSet) Uint64(name string, value uint64, usage string) *uint64",
											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",
										},
										{
											Name:       "FlagSet.UintVar",
											Synopsis:   "func (f *FlagSet) UintVar(p *uint, name string, value uint, 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",
										},
										{
											Name:       "FlagSet.Visit",
											Synopsis:   "func (f *FlagSet) Visit(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",
										},
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Getter",
										Synopsis: "type Getter interface{ ... }",
										Section:  "Types",
										Kind:     "Type",
									},
									Children: []*internal.SymbolMeta{
										{
											Name:       "Getter.Get",
											Synopsis:   "Get func() interface{}",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Getter",
										},
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Value",
										Synopsis: "type Value interface{ ... }",
										Section:  "Types",
										Kind:     "Type",
									},
									Children: []*internal.SymbolMeta{
										{
											Name:       "Value.String",
											Synopsis:   "String func() string",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Value",
										},
										{
											Name:       "Value.Set",
											Synopsis:   "Set func(string) error",
											Section:    "Types",
											Kind:       "Method",
											ParentName: "Value",
										},
									},
								},
							},
						},
					},
					BuildContexts: []internal.BuildContext{internal.BuildContextAll},
				},
			},
		},
	},
}

var moduleMaster = &testModule{
	mod: &proxytest.Module{
		ModulePath: "github.com/my/module",
		Files: map[string]string{
			"foo/foo.go": "// package foo exports a helpful constant.\npackage foo\nconst Bar = 1",
		},
		Version: "v0.0.0-20200706064627-355bc3f705ed",
	},
	fr: &FetchResult{
		RequestedVersion: "master",
		Module: &internal.Module{
			ModuleInfo: internal.ModuleInfo{
				ModulePath: "github.com/my/module",
				Version:    "v0.0.0-20200706064627-355bc3f705ed",
				SourceInfo: source.NewGitHubInfo("https://github.com/my/module", "", "355bc3f705ed"),
			},
			Units: []*internal.Unit{
				{
					UnitMeta: internal.UnitMeta{
						Path: "github.com/my/module",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "foo",
						Path: "github.com/my/module/foo",
					},
					Documentation: []*internal.Documentation{
						{
							GOOS:     internal.All,
							GOARCH:   internal.All,
							Synopsis: "package foo exports a helpful constant.",
							API: []*internal.Symbol{
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Bar",
										Synopsis: "const Bar",
										Section:  "Constants",
										Kind:     "Constant",
									},
								},
							},
						},
					},
					BuildContexts: []internal.BuildContext{internal.BuildContextAll},
				},
			},
		},
	},
}

var moduleLatest = &testModule{
	mod: &proxytest.Module{
		ModulePath: "github.com/my/module",
		Files: map[string]string{
			"foo/foo.go": "// package foo exports a helpful constant.\npackage foo\nconst Bar = 1",
		},
		Version: "v1.2.4",
	},
	fr: &FetchResult{
		RequestedVersion: "latest",
		Module: &internal.Module{
			ModuleInfo: internal.ModuleInfo{
				ModulePath: "github.com/my/module",
				Version:    "v1.2.4",
				SourceInfo: source.NewGitHubInfo("https://github.com/my/module", "", "v1.2.4"),
			},
			Units: []*internal.Unit{
				{
					UnitMeta: internal.UnitMeta{
						Path: "github.com/my/module",
					},
				},
				{
					UnitMeta: internal.UnitMeta{
						Name: "foo",
						Path: "github.com/my/module/foo",
					},
					Documentation: []*internal.Documentation{{
						GOOS:     internal.All,
						GOARCH:   internal.All,
						Synopsis: "package foo exports a helpful constant.",
						API: []*internal.Symbol{
							{
								SymbolMeta: internal.SymbolMeta{
									Name:     "Bar",
									Synopsis: "const Bar",
									Section:  "Constants",
									Kind:     "Constant",
								},
							},
						},
					}},
					BuildContexts: []internal.BuildContext{internal.BuildContextAll},
				},
			},
		},
	},
}

var moduleGenerics = &testModule{
	modfunc: func() *proxytest.Module { return proxytest.FindModule(testModules, "example.com/generics", "") },
	fr: &FetchResult{
		HasGoMod: true,
		Module: &internal.Module{
			ModuleInfo: internal.ModuleInfo{
				ModulePath:        "example.com/generics",
				HasGoMod:          true,
				SourceInfo:        source.NewGitHubInfo("https://example.com/generics", "", "v1.0.0"),
				IsRedistributable: true,
			},
			Units: []*internal.Unit{
				{
					UnitMeta: internal.UnitMeta{
						Name: "generics",
						Path: "example.com/generics",
					},
					Documentation: []*internal.Documentation{
						{
							GOOS:     internal.All,
							GOARCH:   internal.All,
							Synopsis: "Package generics uses generics.",
							API: []*internal.Symbol{
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "Min",
										Synopsis: "func Min[T constraints.Ordered](a, b T) T",
										Section:  "Functions",
										Kind:     "Function",
									},
								},
								{
									SymbolMeta: internal.SymbolMeta{
										Name:     "List",
										Synopsis: "type List struct{ ... }",
										Section:  "Types",
										Kind:     "Type",
									},
									Children: []*internal.SymbolMeta{
										{
											Name:       "List.Val",
											Synopsis:   "Val T",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "List",
										},
										{
											Name:       "List.Next",
											Synopsis:   "Next *List[T]",
											Section:    "Types",
											Kind:       "Field",
											ParentName: "List",
										},
									},
								},
							},
						},
					},
					BuildContexts: []internal.BuildContext{internal.BuildContextAll},
					Imports:       []string{"constraints"},
				},
			},
		},
	},
}

// moduleWithExamples returns a testModule that contains an example.
// It provides the common bits for the tests for package, function,
// type, and method examples below.
//
// The fetch result's documentation HTML is treated as a set
// of substrings that should appear in the generated documentation.
// The substrings are separated by a '~' character.
func moduleWithExamples(path string, api []*internal.Symbol, source, test string, docSubstrings ...string) *testModule {
	return &testModule{
		mod: &proxytest.Module{
			ModulePath: path,
			Files: map[string]string{
				"LICENSE": testhelper.BSD0License,
				"example/example.go": `
// Package example contains examples.
package example
` + source,
				"example/example_test.go": `
package example_test
` + test,
			},
		},
		fr: &FetchResult{
			GoModPath: path,
			HasGoMod:  false,
			Module: &internal.Module{
				ModuleInfo: internal.ModuleInfo{
					ModulePath:        path,
					HasGoMod:          false,
					IsRedistributable: true,
				},
				Units: []*internal.Unit{
					{
						UnitMeta: internal.UnitMeta{
							Path: path,
						},
					},
					{
						UnitMeta: internal.UnitMeta{
							Name: "example",
							Path: path + "/example",
						},
						Documentation: []*internal.Documentation{{
							GOOS:     internal.All,
							GOARCH:   internal.All,
							Synopsis: "Package example contains examples.",
							API:      api,
						}},
						BuildContexts: []internal.BuildContext{internal.BuildContextAll},
					},
				},
			},
		},
		docStrings: map[string][]string{
			path + "/example": docSubstrings,
		},
	}
}

var modulePackageExample = moduleWithExamples("package.example",
	nil,
	``,
	`import "fmt"

// Example for the package.
func Example() {
	fmt.Println("hello")
	// Output: hello
}
`, "Documentation-exampleButtonsContainer")

var moduleFuncExample = moduleWithExamples("func.example",
	[]*internal.Symbol{
		{
			SymbolMeta: internal.SymbolMeta{
				Name:     "F",
				Synopsis: "func F()",
				Section:  "Functions",
				Kind:     "Function",
			},
		},
	},
	`func F() {}
`, `import "func.example/example"

// Example for the function.
func ExampleF() {
	example.F()
}
`, "Documentation-exampleButtonsContainer")

var moduleTypeExample = moduleWithExamples("type.example",
	[]*internal.Symbol{
		{
			SymbolMeta: internal.SymbolMeta{
				Name:     "T",
				Synopsis: "type T struct{}",
				Section:  "Types",
				Kind:     "Type",
			},
		},
	},

	`type T struct{}
`, `import "type.example/example"

// Example for the type.
func ExampleT() {
	example.T{}
}
`, "Documentation-exampleButtonsContainer")

var moduleMethodExample = moduleWithExamples("method.example",
	[]*internal.Symbol{
		{
			SymbolMeta: internal.SymbolMeta{
				Name:     "T",
				Synopsis: "type T struct{}",
				Section:  "Types",
				Kind:     "Type",
			},
			Children: []*internal.SymbolMeta{
				{
					Name:       "T.M",
					Synopsis:   "func (*T) M()",
					Section:    "Types",
					Kind:       "Method",
					ParentName: "T",
				},
			},
		},
	},
	`type T struct {}

func (*T) M() {}
`, `import "method.example/example"

// Example for the method.
func ExampleT_M() {
	new(example.T).M()
}
`, "Documentation-exampleButtonsContainer")
