public WhenClauseComposite CreateBy(ParseNode clauseSubtree)
		{
			var result = new WhenClauseComposite();
			foreach (var whenClause in _whenClauses.Keys)
			{
				var clause = FindRecursive(whenClause, clauseSubtree.Nodes.ToArray());
				if (clause == null)
				{
					continue;
				}

				result.Add(_whenClauses[whenClause](clause));
			}
			return result;
		}
		public MailRule(WhenClauseComposite whenClause, ThenClauseComposite thenClause, string ruleLine)
		{
			_whenClause = whenClause;
			_thenClause = thenClause;
			_ruleLine = ruleLine;
		}
 public MailRule(WhenClauseComposite whenClause, ThenClauseComposite thenClause)
 {
     _whenClause = whenClause;
     _thenClause = thenClause;
 }