public CodegenExpression Codegen(
     CodegenExpression leftStart,
     CodegenExpression leftEnd,
     CodegenExpression rightStart,
     CodegenExpression rightEnd,
     CodegenMethodScope codegenMethodScope,
     ExprForgeCodegenSymbol exprSymbol,
     CodegenClassScope codegenClassScope)
 {
     return(IntervalComputerDuringAndIncludesMinMaxEval.Codegen(
                this,
                leftStart,
                leftEnd,
                rightStart,
                rightEnd,
                codegenMethodScope,
                exprSymbol,
                codegenClassScope));
 }
            public bool?Compute(
                long leftStart,
                long leftEnd,
                long rightStart,
                long rightEnd,
                EventBean[] eventsPerStream,
                bool newData,
                ExprEvaluatorContext context)
            {
                long minStart = minStartEval.Evaluate(rightStart, eventsPerStream, newData, context);
                long maxStart = maxStartEval.Evaluate(rightStart, eventsPerStream, newData, context);
                long minEnd   = minEndEval.Evaluate(rightEnd, eventsPerStream, newData, context);
                long maxEnd   = maxEndEval.Evaluate(rightEnd, eventsPerStream, newData, context);

                if (during)
                {
                    return(IntervalComputerDuringAndIncludesMinMaxEval.ComputeIntervalDuring(
                               leftStart,
                               leftEnd,
                               rightStart,
                               rightEnd,
                               minStart,
                               maxStart,
                               minEnd,
                               maxEnd));
                }

                return(IntervalComputerDuringAndIncludesMinMaxEval.ComputeIntervalIncludes(
                           leftStart,
                           leftEnd,
                           rightStart,
                           rightEnd,
                           minStart,
                           maxStart,
                           minEnd,
                           maxEnd));
            }