private Expression GenNonProto(RHC rhc, ObjExpr objx, GenContext context, Expression basicFn) { Expression fn; //if (_isDirect && context.Mode == CompilerMode.File) if (_isDirect && objx.FnMode == FnMode.Full) { // TODO: Determine if this optimization is valid for Immediate mode ParameterExpression v = Expression.Parameter(typeof(IFn)); Expression initV = Expression.Assign(v, Expression.Field(null, objx.BaseType, objx.VarCallsiteName(_siteIndex))); Expression test = Expression.Condition(Expression.Equal(v, Expression.Constant(null, typeof(IFn))), basicFn, v); Expression block = Expression.Block(typeof(IFn), new ParameterExpression[] { v }, initV, test); fn = block; } else fn = basicFn; return GenerateArgsAndCall(rhc, objx, context, fn); }