public override SqlExpression VisitReference(SqlReferenceExpression reference)
{
var refName = reference.ReferenceName;
var origColumn = refName.Name;
var resolvedColumn = checker.ResolveColumnName(origColumn);
if (resolvedColumn == null)
throw new InvalidOperationException(String.Format("Column '{0} not found in table.", origColumn));
if (!origColumn.Equals(resolvedColumn))
refName = new ObjectName(refName.Parent, resolvedColumn);
return SqlExpression.Reference(refName);
}