// represents a JavaX expression that can both
// -be evaluated right now (quickEval())
// -be transformed into Java source code (str())
//
// A is the expression's return type.
sinterface ICachedJavaXExpr extends IMeta {
// override to provide an evaluation result
public default A quickEval() { fail("Can't quick eval: " + toStringWithClassName(this)); }
public default IJavaXExpr unpack() { this; }
// overridable
default int sourceCodeLength() { ret l(toString()); }
}