code: func GetCallInfo(n ast.Node, ctx *Context) (string, string, error) {
  	switch node := n.(type) {
  	case *ast.CallExpr:
  		switch fn := node.Fun.(type) {
  		case *ast.SelectorExpr:
  			switch expr := fn.X.(type) {
  			case *ast.Ident:
  				if expr.Obj != nil && expr.Obj.Kind == ast.Var {
  					t := ctx.Info.TypeOf(expr)
  					if t != nil {
  						return t.String(), fn.Sel.Name, nil
  					}
  					return "undefined", fn.Sel.Name, fmt.Errorf("missing type info")
  				}
  				return expr.Name, fn.Sel.Name, nil
  			}
  		case *ast.Ident:
  			return ctx.Pkg.Name(), fn.Name, nil
  		}
  	}
  	return "", "", fmt.Errorf("unable to determine call info")
  }
docs: // GetCallInfo returns the package or type and name  associated with a
  // call expression.