See import-shadow.txtar for a description.

-- go.mod --
module testdata
go 1.12

-- a/a.go --
package a

import "testdata/b"

var x b.T

func A(b int) {
	x.F() //@ inline(re"F", fresult)
}

-- b/b.go --
package b

type T struct{}

func (T) F() {
	One()
	Two()
}

func One() {}
func Two() {}

-- fresult --
package a

import (
	"testdata/b"
	b0 "testdata/b"
)

var x b.T

func A(b int) {
	b0.One()
	b0.Two() //@ inline(re"F", fresult)
}

-- d/d.go --
package d

import "testdata/e"

func D() {
	const log = "shadow"
	e.E() //@ inline(re"E", eresult)
}

-- e/e.go --
package e

import "log"

func E() {
	log.Printf("")
}

-- eresult --
package d

import (
	log0 "log"
)

func D() {
	const log = "shadow"
	log0.Printf("") //@ inline(re"E", eresult)
}
