code: func Traceback(l, l1 *State, message string, level int) {
  	const levels1, levels2 = 12, 10
  	levels := countLevels(l1)
  	mark := 0
  	if levels > levels1+levels2 {
  		mark = levels1
  	}
  	buf := message
  	if buf != "" {
  		buf += "\n"
  	}
  	buf += "stack traceback:"
  	for f, ok := Stack(l1, level); ok; f, ok = Stack(l1, level) {
  		if level++; level == mark {
  			buf += "\n\t..."
  			level = levels - levels2
  		} else {
  			d, _ := Info(l1, "Slnt", f)
  			buf += "\n\t" + d.ShortSource + ":"
  			if d.CurrentLine > 0 {
  				buf += fmt.Sprintf("%d:", d.CurrentLine)
  			}
  			buf += " in " + functionName(l, d)
  			if d.IsTailCall {
  				buf += "\n\t(...tail calls...)"
  			}
  		}
  	}
  	l.PushString(buf)
  }
docs: // Traceback creates and pushes a traceback of the stack l1. If message is not
  // nil it is appended at the beginning of the traceback. The level parameter
  // tells at which level to start the traceback.