public object Evaluate(
                EventBean[] eventsPerStream,
                bool isNewData,
                ExprEvaluatorContext context)
            {
                var meX = meXEval.Evaluate(eventsPerStream, isNewData, context);
                if (meX == null) {
                    return null;
                }

                var meY = meYEval.Evaluate(eventsPerStream, isNewData, context);
                if (meY == null) {
                    return null;
                }

                var meWidth = meWidthEval.Evaluate(eventsPerStream, isNewData, context);
                if (meWidth == null) {
                    return null;
                }

                var meHeight = meHeightEval.Evaluate(eventsPerStream, isNewData, context);
                if (meHeight == null) {
                    return null;
                }

                var otherX = otherXEval.Evaluate(eventsPerStream, isNewData, context);
                if (otherX == null) {
                    return null;
                }

                var otherY = otherYEval.Evaluate(eventsPerStream, isNewData, context);
                if (otherY == null) {
                    return null;
                }

                var otherWidth = otherWidthEval.Evaluate(eventsPerStream, isNewData, context);
                if (otherWidth == null) {
                    return null;
                }

                var otherHeight = otherHeightEval.Evaluate(eventsPerStream, isNewData, context);
                if (otherHeight == null) {
                    return null;
                }

                var x = TypeExtensions.AsDouble(meX);
                var y = TypeExtensions.AsDouble(meY);
                var width = TypeExtensions.AsDouble(meWidth);
                var height = TypeExtensions.AsDouble(meHeight);
                return BoundingBox.IntersectsBoxIncludingEnd(
                    x,
                    y,
                    x + width,
                    y + height,
                    TypeExtensions.AsDouble(otherX),
                    TypeExtensions.AsDouble(otherY),
                    TypeExtensions.AsDouble(otherWidth),
                    TypeExtensions.AsDouble(otherHeight));
            }