-- AB-hover --
```go
func (a.I).B()
```

[`(a.I).B` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/a?utm_source=gopls#I.B)

\@mark\(AB, \"B\"\)
-- AField-hover --
```go
field Field int
```

[`(a.S).Field` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/a?utm_source=gopls#S.Field)

\@mark\(AField, \"Field\"\)
-- AField2-hover --
```go
field Field2 int
```

[`(a.R).Field2` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/a?utm_source=gopls#R.Field2)

\@mark\(AField2, \"Field2\"\)
-- AGoodbye-hover --
```go
func (a.H).Goodbye()
```

[`(a.H).Goodbye` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/a?utm_source=gopls#H.Goodbye)

\@mark\(AGoodbye, \"Goodbye\"\)
-- AHello-hover --
```go
func (a.J).Hello()
```

[`(a.J).Hello` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/a?utm_source=gopls#J.Hello)

\@mark\(AHello, \"Hello\"\)
-- AHey-hover --
```go
func (a.R).Hey()
```

[`(a.R).Hey` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/a?utm_source=gopls#R.Hey)
-- AHi-hover --
```go
func (a.A).Hi()
```

[`(a.A).Hi` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/a?utm_source=gopls#A.Hi)
-- AImport-definition --
godef/b/b.go:5:2-43: defined here as ```go
package a ("golang.org/x/tools/internal/lsp/godef/a")
```

[`a` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/a?utm_source=gopls)
-- AImport-definition-json --
{
	"span": {
		"uri": "file://godef/b/b.go",
		"start": {
			"line": 5,
			"column": 2,
			"offset": 112
		},
		"end": {
			"line": 5,
			"column": 43,
			"offset": 153
		}
	},
	"description": "```go\npackage a (\"golang.org/x/tools/internal/lsp/godef/a\")\n```\n\n[`a` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/a?utm_source=gopls)"
}

-- AImport-hover --
```go
package a ("golang.org/x/tools/internal/lsp/godef/a")
```

[`a` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/a?utm_source=gopls)
-- AString-definition --
godef/a/a.go:26:6-7: defined here as ```go
type A string //@mark(AString, "A")

```

[`a.A` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/a?utm_source=gopls#A)
-- AString-definition-json --
{
	"span": {
		"uri": "file://godef/a/a.go",
		"start": {
			"line": 26,
			"column": 6,
			"offset": 452
		},
		"end": {
			"line": 26,
			"column": 7,
			"offset": 453
		}
	},
	"description": "```go\ntype A string //@mark(AString, \"A\")\n\n```\n\n[`a.A` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/a?utm_source=gopls#A)"
}

-- AString-hover --
```go
type A string //@mark(AString, "A")

```

[`a.A` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/a?utm_source=gopls#A)
-- AStuff-definition --
godef/a/a.go:28:6-12: defined here as ```go
func a.AStuff()
```

[`a.AStuff` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/a?utm_source=gopls#AStuff)
-- AStuff-definition-json --
{
	"span": {
		"uri": "file://godef/a/a.go",
		"start": {
			"line": 28,
			"column": 6,
			"offset": 489
		},
		"end": {
			"line": 28,
			"column": 12,
			"offset": 495
		}
	},
	"description": "```go\nfunc a.AStuff()\n```\n\n[`a.AStuff` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/a?utm_source=gopls#AStuff)"
}

-- AStuff-hover --
```go
func a.AStuff()
```

[`a.AStuff` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/a?utm_source=gopls#AStuff)
-- S1-definition --
godef/b/b.go:27:6-8: defined here as ```go
type S1 struct {
	F1     int //@mark(S1F1, "F1")
	S2         //@godef("S2", S2),mark(S1S2, "S2")
	a.A        //@godef("A", AString)
	aAlias     //@godef("a", aAlias)
}
```

[`b.S1` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/b?utm_source=gopls#S1)
-- S1-definition-json --
{
	"span": {
		"uri": "file://godef/b/b.go",
		"start": {
			"line": 27,
			"column": 6,
			"offset": 566
		},
		"end": {
			"line": 27,
			"column": 8,
			"offset": 568
		}
	},
	"description": "```go\ntype S1 struct {\n\tF1     int //@mark(S1F1, \"F1\")\n\tS2         //@godef(\"S2\", S2),mark(S1S2, \"S2\")\n\ta.A        //@godef(\"A\", AString)\n\taAlias     //@godef(\"a\", aAlias)\n}\n```\n\n[`b.S1` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/b?utm_source=gopls#S1)"
}

-- S1-hover --
```go
type S1 struct {
	F1     int //@mark(S1F1, "F1")
	S2         //@godef("S2", S2),mark(S1S2, "S2")
	a.A        //@godef("A", AString)
	aAlias     //@godef("a", aAlias)
}
```

[`b.S1` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/b?utm_source=gopls#S1)
-- S1F1-definition --
godef/b/b.go:28:2-4: defined here as ```go
field F1 int
```

[`(b.S1).F1` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/b?utm_source=gopls#S1.F1)

\@mark\(S1F1, \"F1\"\)
-- S1F1-definition-json --
{
	"span": {
		"uri": "file://godef/b/b.go",
		"start": {
			"line": 28,
			"column": 2,
			"offset": 585
		},
		"end": {
			"line": 28,
			"column": 4,
			"offset": 587
		}
	},
	"description": "```go\nfield F1 int\n```\n\n[`(b.S1).F1` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/b?utm_source=gopls#S1.F1)\n\n\\@mark\\(S1F1, \\\"F1\\\"\\)"
}

-- S1F1-hover --
```go
field F1 int
```

[`(b.S1).F1` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/b?utm_source=gopls#S1.F1)

\@mark\(S1F1, \"F1\"\)
-- S1S2-definition --
godef/b/b.go:29:2-4: defined here as ```go
field S2 S2
```

[`(b.S1).S2` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/b?utm_source=gopls#S1.S2)

\@godef\(\"S2\", S2\),mark\(S1S2, \"S2\"\)
-- S1S2-definition-json --
{
	"span": {
		"uri": "file://godef/b/b.go",
		"start": {
			"line": 29,
			"column": 2,
			"offset": 617
		},
		"end": {
			"line": 29,
			"column": 4,
			"offset": 619
		}
	},
	"description": "```go\nfield S2 S2\n```\n\n[`(b.S1).S2` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/b?utm_source=gopls#S1.S2)\n\n\\@godef\\(\\\"S2\\\", S2\\),mark\\(S1S2, \\\"S2\\\"\\)"
}

-- S1S2-hover --
```go
field S2 S2
```

[`(b.S1).S2` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/b?utm_source=gopls#S1.S2)

\@godef\(\"S2\", S2\),mark\(S1S2, \"S2\"\)
-- S2-definition --
godef/b/b.go:34:6-8: defined here as ```go
type S2 struct {
	F1   string //@mark(S2F1, "F1")
	F2   int    //@mark(S2F2, "F2")
	*a.A        //@godef("A", AString),godef("a",AImport)
}
```

[`b.S2` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/b?utm_source=gopls#S2)
-- S2-definition-json --
{
	"span": {
		"uri": "file://godef/b/b.go",
		"start": {
			"line": 34,
			"column": 6,
			"offset": 741
		},
		"end": {
			"line": 34,
			"column": 8,
			"offset": 743
		}
	},
	"description": "```go\ntype S2 struct {\n\tF1   string //@mark(S2F1, \"F1\")\n\tF2   int    //@mark(S2F2, \"F2\")\n\t*a.A        //@godef(\"A\", AString),godef(\"a\",AImport)\n}\n```\n\n[`b.S2` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/b?utm_source=gopls#S2)"
}

-- S2-hover --
```go
type S2 struct {
	F1   string //@mark(S2F1, "F1")
	F2   int    //@mark(S2F2, "F2")
	*a.A        //@godef("A", AString),godef("a",AImport)
}
```

[`b.S2` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/b?utm_source=gopls#S2)
-- S2F1-definition --
godef/b/b.go:35:2-4: defined here as ```go
field F1 string
```

[`(b.S2).F1` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/b?utm_source=gopls#S2.F1)

\@mark\(S2F1, \"F1\"\)
-- S2F1-definition-json --
{
	"span": {
		"uri": "file://godef/b/b.go",
		"start": {
			"line": 35,
			"column": 2,
			"offset": 760
		},
		"end": {
			"line": 35,
			"column": 4,
			"offset": 762
		}
	},
	"description": "```go\nfield F1 string\n```\n\n[`(b.S2).F1` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/b?utm_source=gopls#S2.F1)\n\n\\@mark\\(S2F1, \\\"F1\\\"\\)"
}

-- S2F1-hover --
```go
field F1 string
```

[`(b.S2).F1` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/b?utm_source=gopls#S2.F1)

\@mark\(S2F1, \"F1\"\)
-- S2F2-definition --
godef/b/b.go:36:2-4: defined here as ```go
field F2 int
```

[`(b.S2).F2` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/b?utm_source=gopls#S2.F2)

\@mark\(S2F2, \"F2\"\)
-- S2F2-definition-json --
{
	"span": {
		"uri": "file://godef/b/b.go",
		"start": {
			"line": 36,
			"column": 2,
			"offset": 793
		},
		"end": {
			"line": 36,
			"column": 4,
			"offset": 795
		}
	},
	"description": "```go\nfield F2 int\n```\n\n[`(b.S2).F2` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/b?utm_source=gopls#S2.F2)\n\n\\@mark\\(S2F2, \\\"F2\\\"\\)"
}

-- S2F2-hover --
```go
field F2 int
```

[`(b.S2).F2` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/b?utm_source=gopls#S2.F2)

\@mark\(S2F2, \"F2\"\)
-- aAlias-definition --
godef/b/b.go:25:6-12: defined here as ```go
type aAlias = a.A //@mark(aAlias, "aAlias")

```
-- aAlias-definition-json --
{
	"span": {
		"uri": "file://godef/b/b.go",
		"start": {
			"line": 25,
			"column": 6,
			"offset": 521
		},
		"end": {
			"line": 25,
			"column": 12,
			"offset": 527
		}
	},
	"description": "```go\ntype aAlias = a.A //@mark(aAlias, \"aAlias\")\n\n```"
}

-- aAlias-hover --
```go
type aAlias = a.A //@mark(aAlias, "aAlias")

```
-- bX-definition --
godef/b/b.go:57:7-8: defined here as ```go
const X untyped int = 0
```

[`b.X` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/b?utm_source=gopls#X)

\@mark\(bX, \"X\"\),godef\(\"X\", bX\)
-- bX-definition-json --
{
	"span": {
		"uri": "file://godef/b/b.go",
		"start": {
			"line": 57,
			"column": 7,
			"offset": 1228
		},
		"end": {
			"line": 57,
			"column": 8,
			"offset": 1229
		}
	},
	"description": "```go\nconst X untyped int = 0\n```\n\n[`b.X` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/b?utm_source=gopls#X)\n\n\\@mark\\(bX, \\\"X\\\"\\),godef\\(\\\"X\\\", bX\\)"
}

-- bX-hover --
```go
const X untyped int = 0
```

[`b.X` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/godef/b?utm_source=gopls#X)

\@mark\(bX, \"X\"\),godef\(\"X\", bX\)
-- myFoo-definition --
godef/b/b.go:4:2-7: defined here as ```go
package myFoo ("golang.org/x/tools/internal/lsp/foo")
```

[`myFoo` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/foo?utm_source=gopls)
-- myFoo-definition-json --
{
	"span": {
		"uri": "file://godef/b/b.go",
		"start": {
			"line": 4,
			"column": 2,
			"offset": 21
		},
		"end": {
			"line": 4,
			"column": 7,
			"offset": 26
		}
	},
	"description": "```go\npackage myFoo (\"golang.org/x/tools/internal/lsp/foo\")\n```\n\n[`myFoo` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/foo?utm_source=gopls)"
}

-- myFoo-hover --
```go
package myFoo ("golang.org/x/tools/internal/lsp/foo")
```

[`myFoo` on pkg.go.dev](https://pkg.go.dev/golang.org/x/tools/internal/lsp/foo?utm_source=gopls)
