private static string AsName(IExpression expression)
{
if (expression is VariableExpression)
return ((VariableExpression)expression).Name;
if (expression is DotExpression)
{
DotExpression dot = (DotExpression)expression;
return AsName(dot.Expression) + "." + dot.Name;
}
return null;
}