You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: lexer_action_executor.go
    path of file: ./repos/cel-go/vendor/github.com/antlr4-go/antlr/v4
    
    the code of the file until where you have to start completion: // Copyright (c) 2012-2022 The ANTLR Project. All rights reserved.
// Use of this file is governed by the BSD 3-clause license that
// can be found in the LICENSE.txt file in the project root.

package antlr

import "golang.org/x/exp/slices"

// Represents an executor for a sequence of lexer actions which traversed during
// the Matching operation of a lexer ru
    
func NewLexerActionExecutor(lexerActions []LexerAction) *LexerActionExecutor {

	if lexerActions == nil {
		lexerActions = make([]LexerAction, 0)
	}

	l := new(LexerActionExecutor)

	l.lexerActions = lexerActions

	// Caches the result of {@link //hashCode} since the hash code is an element
	// of the performance-critical {@link ATNConfig//hashCode} operation.
	l.cachedHash = murmurInit(0)
	for _, a := range lexerActions {
		l.cachedHash = murmurUpdate(l.cachedHash, a.Hash())
	}
	l.cachedHash = murmurFinish(l.cachedHash, len(lexerActions))

	return l
}