void AMXStackFramePrinter::Print(const AMXStackFrame &frame) {
  PrintReturnAddress(frame);
  *stream_ << " in ";

  AMXDebugSymbol caller = GetCallerSymbol(frame);
  if (caller) {
    PrintCallerName(frame, caller);
  } else {
    PrintCallerName(frame);
  }

  *stream_ << " (";
  PrintArgumentList(frame);
  *stream_ << ")";

  if (HaveDebugInfo() && UsesAutomata(frame)) {
    *stream_ << " ";
    PrintState(frame);
  }

  if (HaveDebugInfo() && frame.return_address() != 0) {
    *stream_ << " at ";
    PrintSourceLocation(frame.return_address());
  }
}
void AMXStackFramePrinter::PrintCallerNameAndArguments(const AMXStackFrame &frame) {
  PrintCallerName(frame);
  stream_ << " (";
  PrintArgumentList(frame);
  stream_ << ")";
}