-- arrD-hoverdef --
```go
field d int
```

d field

-- arrE-hoverdef --
```go
field e struct{f int}
```

e nested struct

-- arrF-hoverdef --
```go
field f int
```

f field of nested struct

-- complexH-hoverdef --
```go
field h int
```

h field

-- complexI-hoverdef --
```go
field i struct{j int}
```

i nested struct

-- complexJ-hoverdef --
```go
field j int
```

j field of nested struct

-- mapStructKeyX-hoverdef --
```go
field x []string
```

X key field

-- mapStructKeyY-hoverdef --
```go
field y string
```
-- mapStructValueX-hoverdef --
```go
field x string
```

X value field

-- nestedMap-hoverdef --
```go
field m map[string]float64
```

nested map

-- nestedNumber-hoverdef --
```go
field number int64
```

nested number

-- nestedString-hoverdef --
```go
field str string
```

nested string

-- openMethod-hoverdef --
```go
func (interface).open() error
```

open method comment

-- returnX-hoverdef --
```go
field x int
```

X coord

-- returnY-hoverdef --
```go
field y int
```

Y coord

-- structA-hoverdef --
```go
field a int
```

a field

-- structB-hoverdef --
```go
field b struct{c int}
```

b nested struct

-- structC-hoverdef --
```go
field c int
```

c field of nested struct

-- testDescription-hoverdef --
```go
field desc string
```

test description

-- testInput-hoverdef --
```go
field in map[string][]struct{key string; value interface{}}
```

test input

-- testInputKey-hoverdef --
```go
field key string
```

test key

-- testInputValue-hoverdef --
```go
field value interface{}
```

test value

-- testResultValue-hoverdef --
```go
field value int
```

expected test value

