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;
		}