-- Member-definition --
godef/a/d.go:6:2-8: defined here as ```go
field Member string
```

@Member


[`(a.Thing).Member` on pkg.go.dev](https://pkg.go.dev/golang.org/lsptests/godef/a#Thing.Member)
-- Member-definition-json --
{
	"span": {
		"uri": "file://godef/a/d.go",
		"start": {
			"line": 6,
			"column": 2,
			"offset": 90
		},
		"end": {
			"line": 6,
			"column": 8,
			"offset": 96
		}
	},
	"description": "```go\nfield Member string\n```\n\n@Member\n\n\n[`(a.Thing).Member` on pkg.go.dev](https://pkg.go.dev/golang.org/lsptests/godef/a#Thing.Member)"
}

-- Member-hoverdef --
```go
field Member string
```

@Member


[`(a.Thing).Member` on pkg.go.dev](https://pkg.go.dev/golang.org/lsptests/godef/a#Thing.Member)
-- Method-definition --
godef/a/d.go:15:16-22: defined here as ```go
func (Thing).Method(i int) string
```

[`(a.Thing).Method` on pkg.go.dev](https://pkg.go.dev/golang.org/lsptests/godef/a#Thing.Method)
-- Method-definition-json --
{
	"span": {
		"uri": "file://godef/a/d.go",
		"start": {
			"line": 15,
			"column": 16,
			"offset": 219
		},
		"end": {
			"line": 15,
			"column": 22,
			"offset": 225
		}
	},
	"description": "```go\nfunc (Thing).Method(i int) string\n```\n\n[`(a.Thing).Method` on pkg.go.dev](https://pkg.go.dev/golang.org/lsptests/godef/a#Thing.Method)"
}

-- Method-hoverdef --
```go
func (Thing).Method(i int) string
```

[`(a.Thing).Method` on pkg.go.dev](https://pkg.go.dev/golang.org/lsptests/godef/a#Thing.Method)
-- Other-definition --
godef/a/d.go:9:5-10: defined here as ```go
var Other Thing
```

@Other


[`a.Other` on pkg.go.dev](https://pkg.go.dev/golang.org/lsptests/godef/a#Other)
-- Other-definition-json --
{
	"span": {
		"uri": "file://godef/a/d.go",
		"start": {
			"line": 9,
			"column": 5,
			"offset": 121
		},
		"end": {
			"line": 9,
			"column": 10,
			"offset": 126
		}
	},
	"description": "```go\nvar Other Thing\n```\n\n@Other\n\n\n[`a.Other` on pkg.go.dev](https://pkg.go.dev/golang.org/lsptests/godef/a#Other)"
}

-- Other-hoverdef --
```go
var Other Thing
```

@Other


[`a.Other` on pkg.go.dev](https://pkg.go.dev/golang.org/lsptests/godef/a#Other)
-- Thing-definition --
godef/a/d.go:5:6-11: defined here as ```go
type Thing struct {
	Member string //@Member
}

func (Thing).Method(i int) string
func (*Thing).Method2(i int, j int) (error, string)
func (Thing).Method3()
func (*Thing).private()
```

[`a.Thing` on pkg.go.dev](https://pkg.go.dev/golang.org/lsptests/godef/a#Thing)
-- Thing-definition-json --
{
	"span": {
		"uri": "file://godef/a/d.go",
		"start": {
			"line": 5,
			"column": 6,
			"offset": 65
		},
		"end": {
			"line": 5,
			"column": 11,
			"offset": 70
		}
	},
	"description": "```go\ntype Thing struct {\n\tMember string //@Member\n}\n\nfunc (Thing).Method(i int) string\nfunc (*Thing).Method2(i int, j int) (error, string)\nfunc (Thing).Method3()\nfunc (*Thing).private()\n```\n\n[`a.Thing` on pkg.go.dev](https://pkg.go.dev/golang.org/lsptests/godef/a#Thing)"
}

-- Thing-hoverdef --
```go
type Thing struct {
	Member string //@Member
}

func (Thing).Method(i int) string
func (*Thing).Method2(i int, j int) (error, string)
func (Thing).Method3()
func (*Thing).private()
```

[`a.Thing` on pkg.go.dev](https://pkg.go.dev/golang.org/lsptests/godef/a#Thing)
-- Things-definition --
godef/a/d.go:11:6-12: defined here as ```go
func Things(val []string) []Thing
```

[`a.Things` on pkg.go.dev](https://pkg.go.dev/golang.org/lsptests/godef/a#Things)
-- Things-definition-json --
{
	"span": {
		"uri": "file://godef/a/d.go",
		"start": {
			"line": 11,
			"column": 6,
			"offset": 148
		},
		"end": {
			"line": 11,
			"column": 12,
			"offset": 154
		}
	},
	"description": "```go\nfunc Things(val []string) []Thing\n```\n\n[`a.Things` on pkg.go.dev](https://pkg.go.dev/golang.org/lsptests/godef/a#Things)"
}

-- Things-hoverdef --
```go
func Things(val []string) []Thing
```

[`a.Things` on pkg.go.dev](https://pkg.go.dev/golang.org/lsptests/godef/a#Things)
-- a-hoverdef --
Package a is a package for testing go to definition.

-- NextThing-hoverdef --
```go
type NextThing struct {
	Thing
	Value int
}

func (*NextThing).Method3() int
func (NextThing).another() string
```

[`a.NextThing` on pkg.go.dev](https://pkg.go.dev/golang.org/lsptests/godef/a#NextThing)
