@Override
	public boolean equals(Object obj) {
		if (obj == this) {
			return true;
		}
		else if (!(obj instanceof LexerActionExecutor)) {
			return false;
		}

		LexerActionExecutor other = (LexerActionExecutor)obj;
		return hashCode == other.hashCode
			&& Arrays.equals(lexerActions, other.lexerActions);
	}
Execute the actions encapsulated by this executor within the context of a
particular {@link Lexer}.

<p>This method calls {@link IntStream#seek} to set the position of the
{@code input} {@link CharStream} prior to calling
{@link LexerAction#execute} on a position-dependent action. Before the
method returns, the input position will be restored to the same position
it was in when the method was invoked.</p>

@param lexer The lexer instance.
@param input The input stream which is the source for the current token.
When this method is called, the current {@link IntStream#index} for
{@code input} should be the start of the following token, i.e. 1
character past the end of the current token.
@param startIndex The token start index. This value may be passed to
{@link IntStream#seek} to set the {@code input} position to the beginning
of the token.
runtime/Java/src/org/antlr/v4/runtime/atn/LexerActionExecutor.java