code: func lexSoyDoc(l *lexer) stateFn {
  	l.emit(itemSoyDocStart)
  	var star = false
  	var startOfLine = true // ignoring whitespace and asterisks.
  	for {
  		var ch = l.next()
  		if ch == eof {
  			return l.errorf("unexpected eof when scanning soydoc")
  		}
  		if star && ch == '/' {
  			maybeEmitText(l, 2)
  			l.emit(itemSoyDocEnd)
  			return lexText
  		}
  		if startOfLine {
  			// ignore any space or asterisks at the beginning of lines
  			if isSpaceEOL(ch) {
  				continue
  			}
  			if ch == '*' {
  				star = true
  				continue
  			}
  			l.pos--
  			l.ignore()
  
  			// start with @param?
  			if strings.HasPrefix(l.input[l.pos:], "@param") {
  				lexSoyDocParam(l)
  			}
  			startOfLine = false
  		}
  
  		if isEndOfLine(ch) {
  			maybeEmitText(l, 1)
  			startOfLine = true
  		}
  		star = ch == '*'
  	}
  }
docs: // lexSoyDoc emits:
  // - the start and end tokens (/**, */)
  // - the individual lines of the soydoc comment, trimmed.
  // - the parameter tokens and identifiers
  // '/**' has just been read.