protected virtual IOperand getValueOperand(LambdaExpression expr)
        {
            if (!IsValid(expr))
            {
                throw new NonSupportedExpressionException(expr);
            }

            var        obj                 = this.getObjectExpression(expr);
            var        valueType           = obj.Type;
            var        body                = expr.Body as MethodCallExpression;
            Expression parameterExpression = null;

            if (body.Method.Name == ReflectionHelper.IncludesMethodName)
            {
                parameterExpression = body.Arguments[1];
                if (parameterExpression is UnaryExpression && ((UnaryExpression)parameterExpression).NodeType == ExpressionType.Convert)
                {
                    parameterExpression = ((UnaryExpression)parameterExpression).Operand;
                }
            }
            else
            {
                parameterExpression = body.Arguments[0];
            }

            return(operandBuilder.CreateValueOperandForNativeSyntax(parameterExpression, valueType));
        }
        protected IOperand getValueOperand(LambdaExpression expr)
        {
            if (!IsValid(expr))
            {
                throw new NonSupportedExpressionException(expr);
            }
            var body                = expr.Body as MethodCallExpression;
            var valueType           = body.Object.Type;
            var parameterExpression = body.Arguments[0];

            return(operandBuilder.CreateValueOperandForNativeSyntax(parameterExpression, valueType));
        }