public SqlGroupingSelectExpression UpdateGroupingSelectAndAddMapping (
SqlGroupingSelectExpression expression, Expression newKey, Expression newElement, IEnumerable<Expression> aggregations)
{
ArgumentUtility.CheckNotNull ("expression", expression);
ArgumentUtility.CheckNotNull ("newKey", newKey);
ArgumentUtility.CheckNotNull ("newElement", newElement);
ArgumentUtility.CheckNotNull ("aggregations", aggregations);
var newSqlGroupingSelectExpression = expression.Update (newKey, newElement, aggregations);
SqlTableBase tableForGroupingSelectExpression;
if(_groupReferenceMapping.TryGetValue(expression, out tableForGroupingSelectExpression))
AddGroupReferenceMapping (newSqlGroupingSelectExpression, tableForGroupingSelectExpression);
return newSqlGroupingSelectExpression;
}