use runtime.Caller for stack.Caller to improve accuracy