but, it looks like the isValid() is called after the getter so, expression is always set. Also, did you notice the test failures in travis with BindException?