// represents the (hopefully structured) source code of a Java(X) expression // call str() to get JavaX expression // call quickEval() to try to evaluate right now // // A is return type of expression sinterface ICachedJavaXExpr { // override to provide an evaluation result public default A quickEval() { fail("Can't quick eval: " + toStringWithClassName(this)); } }