ScopedExpression now uses abandoned flag, inlined FutureExpression