private ApexExpressionSyntax ConvertExpression(ExpressionSyntax expression)
        {
            if (expression == null)
            {
                return(null);
            }

            var apexExpr = expression.ToString();

            apexExpr = GenericExpressionHelper.ConvertSoqlQueriesToApex(apexExpr);
            apexExpr = GenericExpressionHelper.ConvertSoqlStatementsToApex(apexExpr);
            apexExpr = GenericExpressionHelper.ConvertTypeofExpressionsToApex(apexExpr);
            apexExpr = GenericExpressionHelper.ConvertCSharpIsTypeExpressionToApex(apexExpr);
            apexExpr = GenericExpressionHelper.ConvertCSharpTypesToApex(apexExpr);
            apexExpr = apexExpr.Replace("\"", "'");
            return(new ApexExpressionSyntax(apexExpr));
        }
        public void ApexInstanceOfConvertedToCSharpAndBackAgain()
        {
            string ToCSharp(string x) => GenericExpressionHelper.ConvertApexInstanceOfTypeExpressionToCSharp(x);
            string ToApex(string x) => GenericExpressionHelper.ConvertCSharpIsTypeExpressionToApex(x);

            var text   = "Property instanceof int";
            var csharp = ToCSharp(text);

            Assert.AreEqual("Property is int", csharp);

            var apex = ToApex(csharp);

            Assert.AreEqual(text, apex);

            text   = @"int a = Value instanceof Map<string, string> ? 10 : 20";
            csharp = ToCSharp(text);
            Assert.AreEqual(@"int a = Value is Map<string, string> ? 10 : 20", csharp);

            apex = ToApex(csharp);
            Assert.AreEqual(text, apex);
        }