@Override
    public void start(@NotNull CharSequence buffer, int startOffset, int endOffset, int initialState) {
      if (initialState != DIRTY_STATE) {
        getFlex().cleanMyState();
      }
      else {
        // That should not occur normally, but some complex lexers (e.g. black and white lexer)
        // require "suspending" of the lexer to pass some template language. In these cases we
        // believe that the same instance of the lexer would be restored (with its internal state)
        initialState = 0;
      }

      super.start(buffer, startOffset, endOffset, initialState);
    }
@Override
    public void start(@NotNull CharSequence buffer, int startOffset, int endOffset, int initialState)