private void OnSyntacticalRuleSequenceRestored(object sender, 
		                                               SequenceSetArgs args)
		{
			if(this.RuleSequenceRestored!=null)
			{
				RuleSequenceRestored(this, args);
			}
		}
		private void OnControllerSequenceRestored(object sender, 
		                                          SequenceSetArgs args)
		{
			
			Application.Invoke(sender, args, delegate(object resender, 
			                                          EventArgs a)
			{
				this.SetRemainingTokens(args.NewSequence.Sequence);
			});
		}
		private void OnTokenItemRelatedSequenceSet(object sender, SequenceSetArgs args)
		{
			if(RelatedSequenceSet != null)
			{
				RelatedSequenceSet(this, args);
			}
			SuspendByNode();
		}
		private void OnControllerRelatedSequenceSet(object sender, 
		                                            SequenceSetArgs a)
		{
			Application.Invoke(sender, a, 
			                   delegate(object resender, EventArgs _a)
			{
				SequenceSetArgs args = _a as SequenceSetArgs;
				
				this.SetRemainingTokens(args.NewSequence.Sequence);
				
				if(controller.StepMode != ControllerStepMode.UntilEnd)
				{
					parsingNextButtonsAlign.Sensitive = true;
				}
					
			});
		}