public void Restore(MetaDslx.Compiler.MetaModelLexer lexer)
 {
     lexer.CurrentMode = this._mode;
     lexer.ModeStack.Clear();
     if (this._modeStack != null)
     {
         foreach (var item in this._modeStack)
         {
             lexer.ModeStack.Push(item);
         }
     }
     lexer.Type = this._type;
     lexer.Channel = this._channel;
     lexer.State = this._state;
 }
 private int SaveState(MetaDslx.Compiler.MetaModelLexer lexer)
 {
     int result = 0;
     LanguageScannerState state = new LanguageScannerState(lexer);
     if (!this.inverseStates.TryGetValue(state, out result))
     {
         result = ++lastState;
         this.states.Add(result, state);
         this.inverseStates.Add(state, result);
     }
     return result;
 }
 public LanguageScannerState(MetaDslx.Compiler.MetaModelLexer lexer)
 {
     this._mode = lexer.CurrentMode;
     this._modeStack = lexer.ModeStack.Count > 0 ? new List<int>(lexer.ModeStack) : null;
     this._type = lexer.Type;
     this._channel = lexer.Channel;
     this._state = lexer.State;
 }
 private void LoadState(int state, MetaDslx.Compiler.MetaModelLexer lexer)
 {
     LanguageScannerState value = default(LanguageScannerState);
     this.states.TryGetValue(state, out value);
     value.Restore(lexer);
 }