code: func (f *file) lintUnexportedReturn() {
  	f.walk(func(n ast.Node) bool {
  		fn, ok := n.(*ast.FuncDecl)
  		if !ok {
  			return true
  		}
  		if fn.Type.Results == nil {
  			return false
  		}
  		if !fn.Name.IsExported() {
  			return false
  		}
  		thing := "func"
  		if fn.Recv != nil && len(fn.Recv.List) > 0 {
  			thing = "method"
  			if !ast.IsExported(receiverType(fn)) {
  				// Don't report exported methods of unexported types,
  				// such as private implementations of sort.Interface.
  				return false
  			}
  		}
  		for _, ret := range fn.Type.Results.List {
  			typ := f.pkg.typeOf(ret.Type)
  			if exportedType(typ) {
  				continue
  			}
  			f.errorf(ret.Type, 0.8, category("unexported-type-in-api"),
  				"exported %s %s returns unexported type %s, which can be annoying to use",
  				thing, fn.Name.Name, typ)
  			break // only flag one
  		}
  		return false
  	})
  }
docs: // lintUnexportedReturn examines exported function declarations.
  // It complains if any return an unexported type.