private ExpressionInfo Expr_Ternary(XmlNode node)
{
var condNode = node.GetSubNode(AstConstants.Subnode + ":" + AstConstants.Subnodes.Cond);
var ifTrueNode = node.GetSubNode(AstConstants.Subnode + ":" + AstConstants.Subnodes.If);
var ifFalseNode = node.GetSubNode(AstConstants.Subnode + ":" + AstConstants.Subnodes.Else);
Analyze(condNode);
var condAnalyzer = new ConditionTaintAnalyser(_analysisScope, this._inclusionResolver, _analysisStacks.IncludeStack);
var condResult = condAnalyzer.AnalyzeCond(condNode, ImmutableVariableStorage.CreateFromMutable(_variableStorage));
var currentResolver = this._varResolver;
this._varResolver = new VariableResolver(condResult[EdgeType.True].ToMutable());
var leftTaint = Analyze(ifTrueNode);
this._varResolver = new VariableResolver(condResult[EdgeType.False].ToMutable());
var rightTaint = Analyze(ifFalseNode);
this._varResolver = currentResolver;
return leftTaint.Merge(rightTaint);
}