--- /dev/null
+-- 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)