Is there some reason we don't test the expression class first and then test the expression cast as TupleValueExpression rather than testing the SchemaColumn? I'd feel a little better about that. 
(ARGH! There are too many column classes!)