code: func newPageLexer(input []byte, stateStart stateFunc, cfg Config) *pageLexer {
  	lexer := &pageLexer{
  		input:      input,
  		stateStart: stateStart,
  		cfg:        cfg,
  		lexerShortcodeState: lexerShortcodeState{
  			currLeftDelimItem:  tLeftDelimScNoMarkup,
  			currRightDelimItem: tRightDelimScNoMarkup,
  			openShortcodes:     make(map[string]bool),
  		},
  		items: make([]Item, 0, 5),
  	}
  
  	lexer.sectionHandlers = createSectionHandlers(lexer)
  
  	return lexer
  }
docs: // note: the input position here is normally 0 (start), but
  // can be set if position of first shortcode is known