-- 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)
-- 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)
-- 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.

