////////////////////////////////////////////////////////////////////////////// private void addSubexpression(Expression e, string context) { if (!e.isGround) { return; } string key = e.ToString(); SubExpression se = null; if (subexpressionCounts.TryGetValue(key, out se)) { se.add(currentStatement, context); } //targetE,context,statementId); contexts subexpressionCounts[key].contexts.Add(context); else { Expression ne = e.substitute(new ExpressionSubstitution()); subexpressionCounts.Add(ne.ToString(), new SubExpression(ne, currentStatement, context)); Debug.Assert(ne.ToString() == subexpressionCounts[ne.ToString()].expression.ToString()); } }