go/ssa: rename some API features (incompatible change)

Rename the following exported names:
	(*Program).BuildAll → Build
	(*Program).Method   → MethodValue
	Package.Object      → Pkg
Also:
	(*Function).pkgobj  → pkg

Change-Id: Iff7e6c240ebe6786ba759278ac0daa3d66698013
Reviewed-on: https://go-review.googlesource.com/14134
Reviewed-by: Robert Griesemer <gri@golang.org>
diff --git a/go/callgraph/cha/cha_test.go b/go/callgraph/cha/cha_test.go
index 38348c0..e8aa6e1 100644
--- a/go/callgraph/cha/cha_test.go
+++ b/go/callgraph/cha/cha_test.go
@@ -78,11 +78,11 @@
 
 		prog := ssautil.CreateProgram(iprog, 0)
 		mainPkg := prog.Package(iprog.Created[0].Pkg)
-		prog.BuildAll()
+		prog.Build()
 
 		cg := cha.CallGraph(prog)
 
-		if got := printGraph(cg, mainPkg.Object); got != want {
+		if got := printGraph(cg, mainPkg.Pkg); got != want {
 			t.Errorf("%s: got:\n%s\nwant:\n%s",
 				prog.Fset.Position(pos), got, want)
 		}
diff --git a/go/callgraph/rta/rta.go b/go/callgraph/rta/rta.go
index 8d22da6..81d9d3c 100644
--- a/go/callgraph/rta/rta.go
+++ b/go/callgraph/rta/rta.go
@@ -197,7 +197,7 @@
 func (r *rta) addInvokeEdge(site ssa.CallInstruction, C types.Type) {
 	// Ascertain the concrete method of C to be called.
 	imethod := site.Common().Method
-	cmethod := r.prog.Method(r.prog.MethodSets.MethodSet(C).Lookup(imethod.Pkg(), imethod.Name()))
+	cmethod := r.prog.MethodValue(r.prog.MethodSets.MethodSet(C).Lookup(imethod.Pkg(), imethod.Name()))
 	r.addEdge(site, cmethod, true)
 }
 
@@ -361,7 +361,7 @@
 
 			if m.Exported() {
 				// Exported methods are always potentially callable via reflection.
-				r.addReachable(r.prog.Method(sel), true)
+				r.addReachable(r.prog.MethodValue(sel), true)
 			}
 		}
 
diff --git a/go/callgraph/rta/rta_test.go b/go/callgraph/rta/rta_test.go
index e5aa846..976bb30 100644
--- a/go/callgraph/rta/rta_test.go
+++ b/go/callgraph/rta/rta_test.go
@@ -83,14 +83,14 @@
 
 		prog := ssautil.CreateProgram(iprog, 0)
 		mainPkg := prog.Package(iprog.Created[0].Pkg)
-		prog.BuildAll()
+		prog.Build()
 
 		res := rta.Analyze([]*ssa.Function{
 			mainPkg.Func("main"),
 			mainPkg.Func("init"),
 		}, true)
 
-		if got := printResult(res, mainPkg.Object); got != want {
+		if got := printResult(res, mainPkg.Pkg); got != want {
 			t.Errorf("%s: got:\n%s\nwant:\n%s",
 				prog.Fset.Position(pos), got, want)
 		}
diff --git a/go/callgraph/static/static_test.go b/go/callgraph/static/static_test.go
index 62297f7..e1bfcd7 100644
--- a/go/callgraph/static/static_test.go
+++ b/go/callgraph/static/static_test.go
@@ -63,7 +63,7 @@
 	P := iprog.Created[0].Pkg
 
 	prog := ssautil.CreateProgram(iprog, 0)
-	prog.BuildAll()
+	prog.Build()
 
 	cg := static.CallGraph(prog)
 
diff --git a/go/pointer/analysis.go b/go/pointer/analysis.go
index d02e536..9946581 100644
--- a/go/pointer/analysis.go
+++ b/go/pointer/analysis.go
@@ -254,17 +254,17 @@
 	for _, pkg := range a.prog.AllPackages() {
 		// (This only checks that the package scope is complete,
 		// not that func bodies exist, but it's a good signal.)
-		if !pkg.Object.Complete() {
-			return nil, fmt.Errorf(`pointer analysis requires a complete program yet package %q was incomplete`, pkg.Object.Path())
+		if !pkg.Pkg.Complete() {
+			return nil, fmt.Errorf(`pointer analysis requires a complete program yet package %q was incomplete`, pkg.Pkg.Path())
 		}
 	}
 
 	if reflect := a.prog.ImportedPackage("reflect"); reflect != nil {
-		rV := reflect.Object.Scope().Lookup("Value")
+		rV := reflect.Pkg.Scope().Lookup("Value")
 		a.reflectValueObj = rV
 		a.reflectValueCall = a.prog.LookupMethod(rV.Type(), nil, "Call")
-		a.reflectType = reflect.Object.Scope().Lookup("Type").Type().(*types.Named)
-		a.reflectRtypeObj = reflect.Object.Scope().Lookup("rtype")
+		a.reflectType = reflect.Pkg.Scope().Lookup("Type").Type().(*types.Named)
+		a.reflectRtypeObj = reflect.Pkg.Scope().Lookup("rtype")
 		a.reflectRtypePtr = types.NewPointer(a.reflectRtypeObj.Type())
 
 		// Override flattening of reflect.Value, treating it like a basic type.
diff --git a/go/pointer/example_test.go b/go/pointer/example_test.go
index ba70557..673de7a 100644
--- a/go/pointer/example_test.go
+++ b/go/pointer/example_test.go
@@ -66,7 +66,7 @@
 	mainPkg := prog.Package(iprog.Created[0].Pkg)
 
 	// Build SSA code for bodies of all functions in the whole program.
-	prog.BuildAll()
+	prog.Build()
 
 	// Configure the pointer analysis to build a call-graph.
 	config := &pointer.Config{
@@ -76,7 +76,7 @@
 
 	// Query points-to set of (C).f's parameter m, a map.
 	C := mainPkg.Type("C").Type()
-	Cfm := prog.LookupMethod(C, mainPkg.Object, "f").Params[1]
+	Cfm := prog.LookupMethod(C, mainPkg.Pkg, "f").Params[1]
 	config.AddQuery(Cfm)
 
 	// Run the pointer analysis.
diff --git a/go/pointer/gen.go b/go/pointer/gen.go
index 6c256ac..43849a2 100644
--- a/go/pointer/gen.go
+++ b/go/pointer/gen.go
@@ -1223,7 +1223,7 @@
 	// I think so, but the answer may depend on reflection.
 	mset := a.prog.MethodSets.MethodSet(T)
 	for i, n := 0, mset.Len(); i < n; i++ {
-		m := a.prog.Method(mset.At(i))
+		m := a.prog.MethodValue(mset.At(i))
 		a.valueNode(m)
 
 		if !itf {
diff --git a/go/pointer/intrinsics.go b/go/pointer/intrinsics.go
index 251c0e2..144df1e 100644
--- a/go/pointer/intrinsics.go
+++ b/go/pointer/intrinsics.go
@@ -211,7 +211,7 @@
 		return false // "reflect" package not loaded
 	}
 	reflectPackage := a.reflectValueObj.Pkg()
-	if fn.Pkg != nil && fn.Pkg.Object == reflectPackage {
+	if fn.Pkg != nil && fn.Pkg.Pkg == reflectPackage {
 		return true
 	}
 	// Synthetic wrappers have a nil Pkg, so they slip through the
diff --git a/go/pointer/pointer_test.go b/go/pointer/pointer_test.go
index 2744d4f..d687fa1 100644
--- a/go/pointer/pointer_test.go
+++ b/go/pointer/pointer_test.go
@@ -176,7 +176,7 @@
 
 	// SSA creation + building.
 	prog := ssautil.CreateProgram(iprog, ssa.SanityCheckFunctions)
-	prog.BuildAll()
+	prog.Build()
 
 	mainpkg := prog.Package(mainPkgInfo)
 	ptrmain := mainpkg // main package for the pointer analysis
@@ -243,7 +243,7 @@
 				for _, typstr := range split(rest, "|") {
 					var t types.Type = types.Typ[types.Invalid] // means "..."
 					if typstr != "..." {
-						tv, err := types.Eval(prog.Fset, mainpkg.Object, f.Pos(), typstr)
+						tv, err := types.Eval(prog.Fset, mainpkg.Pkg, f.Pos(), typstr)
 						if err != nil {
 							ok = false
 							// Don't print err since its location is bad.
diff --git a/go/pointer/reflect.go b/go/pointer/reflect.go
index 466995c..d10e86d 100644
--- a/go/pointer/reflect.go
+++ b/go/pointer/reflect.go
@@ -1879,7 +1879,7 @@
 				if isIface {
 					sig = sel.Type().(*types.Signature)
 				} else {
-					fn = a.prog.Method(sel)
+					fn = a.prog.MethodValue(sel)
 					// move receiver to params[0]
 					sig = changeRecv(fn.Signature)
 				}
diff --git a/go/pointer/stdlib_test.go b/go/pointer/stdlib_test.go
index ef7c652..d3d14ea 100644
--- a/go/pointer/stdlib_test.go
+++ b/go/pointer/stdlib_test.go
@@ -52,7 +52,7 @@
 
 	// Create SSA packages.
 	prog := ssautil.CreateProgram(iprog, 0)
-	prog.BuildAll()
+	prog.Build()
 
 	numPkgs := len(prog.AllPackages())
 	if want := 240; numPkgs < want {
diff --git a/go/ssa/builder.go b/go/ssa/builder.go
index 5b8ce0e..c2a4a89 100644
--- a/go/ssa/builder.go
+++ b/go/ssa/builder.go
@@ -2217,9 +2217,7 @@
 //
 // BuildAll is idempotent and thread-safe.
 //
-// TODO(adonovan): rename to Build.
-//
-func (prog *Program) BuildAll() {
+func (prog *Program) Build() {
 	var wg sync.WaitGroup
 	for _, p := range prog.packages {
 		if prog.mode&BuildSerially != 0 {
@@ -2281,10 +2279,10 @@
 		emitStore(init, initguard, vTrue, token.NoPos)
 
 		// Call the init() function of each package we import.
-		for _, pkg := range p.Object.Imports() {
+		for _, pkg := range p.Pkg.Imports() {
 			prereq := p.Prog.packages[pkg]
 			if prereq == nil {
-				panic(fmt.Sprintf("Package(%q).Build(): unsatisfied import: Program.CreatePackage(%q) was not called", p.Object.Path(), pkg.Path()))
+				panic(fmt.Sprintf("Package(%q).Build(): unsatisfied import: Program.CreatePackage(%q) was not called", p.Pkg.Path(), pkg.Path()))
 			}
 			var v Call
 			v.Call.Value = prereq.init
diff --git a/go/ssa/builder_test.go b/go/ssa/builder_test.go
index e7ac838..10411e5 100644
--- a/go/ssa/builder_test.go
+++ b/go/ssa/builder_test.go
@@ -112,7 +112,7 @@
 				}
 				mset := prog.MethodSets.MethodSet(types.NewPointer(mem.Type()))
 				for i, n := 0, mset.Len(); i < n; i++ {
-					m := prog.Method(mset.At(i))
+					m := prog.MethodValue(mset.At(i))
 					// For external types, only synthetic wrappers have code.
 					expExt := !strings.Contains(m.Synthetic, "wrapper")
 					if expExt && !isEmpty(m) {
@@ -303,7 +303,7 @@
 		}
 		prog := ssautil.CreateProgram(lprog, test.mode)
 		mainPkg := prog.Package(lprog.Created[0].Pkg)
-		prog.BuildAll()
+		prog.Build()
 		initFunc := mainPkg.Func("init")
 		if initFunc == nil {
 			t.Errorf("test 'package %s': no init function", f.Name.Name)
@@ -374,7 +374,7 @@
 
 	// Create and build SSA
 	prog := ssautil.CreateProgram(lprog, 0)
-	prog.BuildAll()
+	prog.Build()
 
 	// Enumerate reachable synthetic functions
 	want := map[string]string{
diff --git a/go/ssa/create.go b/go/ssa/create.go
index 88226ae..84a17fc 100644
--- a/go/ssa/create.go
+++ b/go/ssa/create.go
@@ -162,7 +162,7 @@
 		Prog:    prog,
 		Members: make(map[string]Member),
 		values:  make(map[types.Object]Value),
-		Object:  pkg,
+		Pkg:     pkg,
 		info:    info,  // transient (CREATE and BUILD phases)
 		files:   files, // transient (CREATE and BUILD phases)
 	}
@@ -190,7 +190,7 @@
 		// GC-compiled binary package.
 		// No code.
 		// No position information.
-		scope := p.Object.Scope()
+		scope := p.Pkg.Scope()
 		for _, name := range scope.Names() {
 			obj := scope.Lookup(name)
 			memberFromObject(p, obj, nil)
@@ -224,9 +224,9 @@
 	}
 
 	if importable {
-		prog.imported[p.Object.Path()] = p
+		prog.imported[p.Pkg.Path()] = p
 	}
-	prog.packages[p.Object] = p
+	prog.packages[p.Pkg] = p
 
 	return p
 }
diff --git a/go/ssa/example_test.go b/go/ssa/example_test.go
index 8f86a35..71d4fe1 100644
--- a/go/ssa/example_test.go
+++ b/go/ssa/example_test.go
@@ -132,7 +132,7 @@
 	prog := ssautil.CreateProgram(lprog, ssa.SanityCheckFunctions)
 
 	// Build SSA code for the entire cmd/cover program.
-	prog.BuildAll()
+	prog.Build()
 
 	// Output:
 }
diff --git a/go/ssa/func.go b/go/ssa/func.go
index a9c0f75..f1e545c 100644
--- a/go/ssa/func.go
+++ b/go/ssa/func.go
@@ -501,7 +501,7 @@
 
 	// Package-level function?
 	// Prefix with package name for cross-package references only.
-	if p := f.pkgobj(); p != nil && p != from {
+	if p := f.pkg(); p != nil && p != from {
 		return fmt.Sprintf("%s.%s", p.Path(), f.name)
 	}
 
@@ -529,9 +529,9 @@
 	types.WriteSignature(buf, sig, types.RelativeTo(from))
 }
 
-func (f *Function) pkgobj() *types.Package {
+func (f *Function) pkg() *types.Package {
 	if f.Pkg != nil {
-		return f.Pkg.Object
+		return f.Pkg.Pkg
 	}
 	return nil
 }
@@ -549,7 +549,7 @@
 func WriteFunction(buf *bytes.Buffer, f *Function) {
 	fmt.Fprintf(buf, "# Name: %s\n", f.String())
 	if f.Pkg != nil {
-		fmt.Fprintf(buf, "# Package: %s\n", f.Pkg.Object.Path())
+		fmt.Fprintf(buf, "# Package: %s\n", f.Pkg.Pkg.Path())
 	}
 	if syn := f.Synthetic; syn != "" {
 		fmt.Fprintln(buf, "# Synthetic:", syn)
@@ -566,7 +566,7 @@
 		fmt.Fprintf(buf, "# Recover: %s\n", f.Recover)
 	}
 
-	from := f.pkgobj()
+	from := f.pkg()
 
 	if f.FreeVars != nil {
 		buf.WriteString("# Free variables:\n")
diff --git a/go/ssa/interp/interp.go b/go/ssa/interp/interp.go
index afe4939..6c65ec9 100644
--- a/go/ssa/interp/interp.go
+++ b/go/ssa/interp/interp.go
@@ -619,7 +619,7 @@
 		*g = v
 		return
 	}
-	panic("no global variable: " + pkg.Object.Path() + "." + name)
+	panic("no global variable: " + pkg.Pkg.Path() + "." + name)
 }
 
 var environ []value
@@ -687,7 +687,7 @@
 		}
 
 		// Ad-hoc initialization for magic system variables.
-		switch pkg.Object.Path() {
+		switch pkg.Pkg.Path() {
 		case "syscall":
 			setGlobal(i, pkg, "envs", environ)
 
@@ -695,7 +695,7 @@
 			deleteBodies(pkg, "DeepEqual", "deepValueEqual")
 
 		case "runtime":
-			sz := sizes.Sizeof(pkg.Object.Scope().Lookup("MemStats").Type())
+			sz := sizes.Sizeof(pkg.Pkg.Scope().Lookup("MemStats").Type())
 			setGlobal(i, pkg, "sizeof_C_MStats", uintptr(sz))
 			deleteBodies(pkg, "GOROOT", "gogetenv")
 		}
diff --git a/go/ssa/interp/interp_test.go b/go/ssa/interp/interp_test.go
index f36c23e..45509d5 100644
--- a/go/ssa/interp/interp_test.go
+++ b/go/ssa/interp/interp_test.go
@@ -219,7 +219,7 @@
 	}
 
 	prog := ssautil.CreateProgram(iprog, ssa.SanityCheckFunctions)
-	prog.BuildAll()
+	prog.Build()
 
 	var mainPkg *ssa.Package
 	var initialPkgs []*ssa.Package
diff --git a/go/ssa/interp/reflect.go b/go/ssa/interp/reflect.go
index 468771b..d2d7a69 100644
--- a/go/ssa/interp/reflect.go
+++ b/go/ssa/interp/reflect.go
@@ -520,7 +520,7 @@
 func initReflect(i *interpreter) {
 	i.reflectPackage = &ssa.Package{
 		Prog:    i.prog,
-		Object:  reflectTypesPackage,
+		Pkg:     reflectTypesPackage,
 		Members: make(map[string]ssa.Member),
 	}
 
@@ -539,18 +539,18 @@
 	// provide fake source files.  This would guarantee that no bad
 	// information leaks into other packages.
 	if r := i.prog.ImportedPackage("reflect"); r != nil {
-		rV := r.Object.Scope().Lookup("Value").Type().(*types.Named)
+		rV := r.Pkg.Scope().Lookup("Value").Type().(*types.Named)
 
 		// delete bodies of the old methods
 		mset := i.prog.MethodSets.MethodSet(rV)
 		for j := 0; j < mset.Len(); j++ {
-			i.prog.Method(mset.At(j)).Blocks = nil
+			i.prog.MethodValue(mset.At(j)).Blocks = nil
 		}
 
 		tEface := types.NewInterface(nil, nil).Complete()
 		rV.SetUnderlying(types.NewStruct([]*types.Var{
-			types.NewField(token.NoPos, r.Object, "t", tEface, false), // a lie
-			types.NewField(token.NoPos, r.Object, "v", tEface, false),
+			types.NewField(token.NoPos, r.Pkg, "t", tEface, false), // a lie
+			types.NewField(token.NoPos, r.Pkg, "v", tEface, false),
 		}, nil))
 	}
 
diff --git a/go/ssa/methods.go b/go/ssa/methods.go
index 12534de..bb35639 100644
--- a/go/ssa/methods.go
+++ b/go/ssa/methods.go
@@ -12,20 +12,17 @@
 	"golang.org/x/tools/go/types"
 )
 
-// Method returns the Function implementing method sel, building
+// MethodValue returns the Function implementing method sel, building
 // wrapper methods on demand.  It returns nil if sel denotes an
 // abstract (interface) method.
 //
 // Precondition: sel.Kind() == MethodVal.
 //
-// TODO(adonovan): rename this to MethodValue because of the
-// precondition, and for consistency with functions in source.go.
-//
 // Thread-safe.
 //
 // EXCLUSIVE_LOCKS_ACQUIRED(prog.methodsMu)
 //
-func (prog *Program) Method(sel *types.Selection) *Function {
+func (prog *Program) MethodValue(sel *types.Selection) *Function {
 	if sel.Kind() != types.MethodVal {
 		panic(fmt.Sprintf("Method(%s) kind != MethodVal", sel))
 	}
@@ -52,7 +49,7 @@
 	if sel == nil {
 		panic(fmt.Sprintf("%s has no method %s", T, types.Id(pkg, name)))
 	}
-	return prog.Method(sel)
+	return prog.MethodValue(sel)
 }
 
 // methodSet contains the (concrete) methods of a non-interface type.
diff --git a/go/ssa/print.go b/go/ssa/print.go
index 88c31f6..679fa8d 100644
--- a/go/ssa/print.go
+++ b/go/ssa/print.go
@@ -27,7 +27,7 @@
 func relName(v Value, i Instruction) string {
 	var from *types.Package
 	if i != nil {
-		from = i.Parent().pkgobj()
+		from = i.Parent().pkg()
 	}
 	switch v := v.(type) {
 	case Member: // *Function or *Global
@@ -45,8 +45,8 @@
 func relString(m Member, from *types.Package) string {
 	// NB: not all globals have an Object (e.g. init$guard),
 	// so use Package().Object not Object.Package().
-	if obj := m.Package().Object; obj != nil && obj != from {
-		return fmt.Sprintf("%s.%s", obj.Path(), m.Name())
+	if pkg := m.Package().Pkg; pkg != nil && pkg != from {
+		return fmt.Sprintf("%s.%s", pkg.Path(), m.Name())
 	}
 	return m.Name()
 }
@@ -57,12 +57,12 @@
 // It never appears in disassembly, which uses Value.Name().
 
 func (v *Parameter) String() string {
-	from := v.Parent().pkgobj()
+	from := v.Parent().pkg()
 	return fmt.Sprintf("parameter %s : %s", v.Name(), relType(v.Type(), from))
 }
 
 func (v *FreeVar) String() string {
-	from := v.Parent().pkgobj()
+	from := v.Parent().pkg()
 	return fmt.Sprintf("freevar %s : %s", v.Name(), relType(v.Type(), from))
 }
 
@@ -77,7 +77,7 @@
 	if v.Heap {
 		op = "new"
 	}
-	from := v.Parent().pkgobj()
+	from := v.Parent().pkg()
 	return fmt.Sprintf("%s %s (%s)", op, relType(deref(v.Type()), from), v.Comment)
 }
 
@@ -147,7 +147,7 @@
 }
 
 func printConv(prefix string, v, x Value) string {
-	from := v.Parent().pkgobj()
+	from := v.Parent().pkg()
 	return fmt.Sprintf("%s %s <- %s (%s)",
 		prefix,
 		relType(v.Type(), from),
@@ -177,7 +177,7 @@
 }
 
 func (v *MakeSlice) String() string {
-	from := v.Parent().pkgobj()
+	from := v.Parent().pkg()
 	return fmt.Sprintf("make %s %s %s",
 		relType(v.Type(), from),
 		relName(v.Len, v),
@@ -209,12 +209,12 @@
 	if v.Reserve != nil {
 		res = relName(v.Reserve, v)
 	}
-	from := v.Parent().pkgobj()
+	from := v.Parent().pkg()
 	return fmt.Sprintf("make %s %s", relType(v.Type(), from), res)
 }
 
 func (v *MakeChan) String() string {
-	from := v.Parent().pkgobj()
+	from := v.Parent().pkg()
 	return fmt.Sprintf("make %s %s", relType(v.Type(), from), relName(v.Size, v))
 }
 
@@ -259,7 +259,7 @@
 }
 
 func (v *TypeAssert) String() string {
-	from := v.Parent().pkgobj()
+	from := v.Parent().pkg()
 	return fmt.Sprintf("typeassert%s %s.(%s)", commaOk(v.CommaOk), relName(v.X, v), relType(v.AssertedType, from))
 }
 
@@ -366,7 +366,7 @@
 }
 
 func (p *Package) String() string {
-	return "package " + p.Object.Path()
+	return "package " + p.Pkg.Path()
 }
 
 var _ io.WriterTo = (*Package)(nil) // *Package implements io.Writer
@@ -391,7 +391,7 @@
 		names = append(names, name)
 	}
 
-	from := p.Object
+	from := p.Pkg
 	sort.Strings(names)
 	for _, name := range names {
 		switch mem := p.Members[name].(type) {
diff --git a/go/ssa/sanity.go b/go/ssa/sanity.go
index b0593d0..262ed46 100644
--- a/go/ssa/sanity.go
+++ b/go/ssa/sanity.go
@@ -407,8 +407,8 @@
 		s.errorf("nil Prog")
 	}
 
-	fn.String()               // must not crash
-	fn.RelString(fn.pkgobj()) // must not crash
+	fn.String()            // must not crash
+	fn.RelString(fn.pkg()) // must not crash
 
 	// All functions have a package, except delegates (which are
 	// shared across packages, or duplicated as weak symbols in a
@@ -484,7 +484,7 @@
 // It does not require that the package is built.
 // Unlike sanityCheck (for functions), it just panics at the first error.
 func sanityCheckPackage(pkg *Package) {
-	if pkg.Object == nil {
+	if pkg.Pkg == nil {
 		panic(fmt.Sprintf("Package %s has no Object", pkg))
 	}
 	pkg.String() // must not crash
@@ -492,7 +492,7 @@
 	for name, mem := range pkg.Members {
 		if name != mem.Name() {
 			panic(fmt.Sprintf("%s: %T.Name() = %s, want %s",
-				pkg.Object.Path(), mem, mem.Name(), name))
+				pkg.Pkg.Path(), mem, mem.Name(), name))
 		}
 		obj := mem.Object()
 		if obj == nil {
@@ -510,7 +510,7 @@
 				// its types.Func ("init") and its ssa.Function ("init#%d").
 			} else {
 				panic(fmt.Sprintf("%s: %T.Object().Name() = %s, want %s",
-					pkg.Object.Path(), mem, obj.Name(), name))
+					pkg.Pkg.Path(), mem, obj.Name(), name))
 			}
 		}
 		if obj.Pos() != mem.Pos() {
diff --git a/go/ssa/ssa.go b/go/ssa/ssa.go
index f4c64bb..b24c195 100644
--- a/go/ssa/ssa.go
+++ b/go/ssa/ssa.go
@@ -45,7 +45,7 @@
 //
 type Package struct {
 	Prog    *Program               // the owning program
-	Object  *types.Package         // the type checker's package object for this package
+	Pkg     *types.Package         // the corresponding go/types.Package
 	Members map[string]Member      // all package members keyed by name (incl. init and init#%d)
 	values  map[types.Object]Value // package members (incl. types and methods), keyed by object
 	init    *Function              // Func("init"); the package's init function
diff --git a/go/ssa/ssautil/visit.go b/go/ssa/ssautil/visit.go
index 30843c3..6c51f93 100644
--- a/go/ssa/ssautil/visit.go
+++ b/go/ssa/ssautil/visit.go
@@ -44,7 +44,7 @@
 	for _, T := range visit.prog.RuntimeTypes() {
 		mset := visit.prog.MethodSets.MethodSet(T)
 		for i, n := 0, mset.Len(); i < n; i++ {
-			visit.function(visit.prog.Method(mset.At(i)))
+			visit.function(visit.prog.MethodValue(mset.At(i)))
 		}
 	}
 }
diff --git a/go/ssa/stdlib_test.go b/go/ssa/stdlib_test.go
index 5726016..1392b40 100644
--- a/go/ssa/stdlib_test.go
+++ b/go/ssa/stdlib_test.go
@@ -80,7 +80,7 @@
 	t2 := time.Now()
 
 	// Build SSA.
-	prog.BuildAll()
+	prog.Build()
 
 	t3 := time.Now()
 	alloc3 := bytesAllocated()
diff --git a/go/ssa/testmain.go b/go/ssa/testmain.go
index a7b1242..3cb23bc 100644
--- a/go/ssa/testmain.go
+++ b/go/ssa/testmain.go
@@ -102,7 +102,7 @@
 		Prog:    prog,
 		Members: make(map[string]Member),
 		values:  make(map[types.Object]Value),
-		Object:  types.NewPackage("test$main", "main"),
+		Pkg:     types.NewPackage("test$main", "main"),
 	}
 
 	// Build package's init function.
@@ -127,23 +127,23 @@
 		v.setType(types.NewTuple())
 		init.emit(&v)
 
-		pkgpaths = append(pkgpaths, pkg.Object.Path())
+		pkgpaths = append(pkgpaths, pkg.Pkg.Path())
 	}
 	sort.Strings(pkgpaths)
 	init.emit(new(Return))
 	init.finishBody()
 	testmain.init = init
-	testmain.Object.MarkComplete()
+	testmain.Pkg.MarkComplete()
 	testmain.Members[init.name] = init
 
 	// For debugging convenience, define an unexported const
 	// that enumerates the packages.
-	packagesConst := types.NewConst(token.NoPos, testmain.Object, "packages", tString,
+	packagesConst := types.NewConst(token.NoPos, testmain.Pkg, "packages", tString,
 		exact.MakeString(strings.Join(pkgpaths, " ")))
 	memberFromObject(testmain, packagesConst, nil)
 
 	// Create main *types.Func and *ssa.Function
-	mainFunc := types.NewFunc(token.NoPos, testmain.Object, "main", new(types.Signature))
+	mainFunc := types.NewFunc(token.NoPos, testmain.Pkg, "main", new(types.Signature))
 	memberFromObject(testmain, mainFunc, nil)
 	main := testmain.Func("main")
 	main.Synthetic = "test main function"
@@ -222,7 +222,7 @@
 		sanityCheckPackage(testmain)
 	}
 
-	prog.packages[testmain.Object] = testmain
+	prog.packages[testmain.Pkg] = testmain
 
 	return testmain
 }