code: func (b *builder) receiver(fn *Function, e ast.Expr, wantAddr, escaping bool, sel *types.Selection) Value {
  	var v Value
  	if wantAddr && !sel.Indirect() && !isPointer(fn.Pkg.typeOf(e)) {
  		v = b.addr(fn, e, escaping).address(fn)
  	} else {
  		v = b.expr(fn, e)
  	}
  
  	last := len(sel.Index()) - 1
  	v = emitImplicitSelections(fn, v, sel.Index()[:last])
  	if !wantAddr && isPointer(v.Type()) {
  		v = emitLoad(fn, v)
  	}
  	return v
  }
docs: // receiver emits to fn code for expression e in the "receiver"
  // position of selection e.f (where f may be a field or a method) and
  // returns the effective receiver after applying the implicit field
  // selections of sel.
  //
  // wantAddr requests that the result is an an address.  If
  // !sel.Indirect(), this may require that e be built in addr() mode; it
  // must thus be addressable.
  //
  // escaping is defined as per builder.addr().
  //