public static void TraceNode(this InvocationExpression invocationExpression, StringBuilder sb, int level = 0)
        {
            if (sb == null || invocationExpression == null)
            {
                return;
            }
            invocationExpression.TraceBaseInfo(sb, level);
            var levelSpace = new string(' ', level *NumberOfSpaces);

            level++;
            sb.Append($"|{levelSpace}|{Nl}");
            sb.Append($"|{levelSpace}|- Expression:{Nl}");
            invocationExpression.Expression?.TraceNode(sb, level);

            if (invocationExpression.Arguments != null)
            {
                sb.Append($"|{levelSpace}|{Nl}");
                sb.Append($"|{levelSpace}|- Arguments count: {invocationExpression.Arguments.Count}{Nl}");
                foreach (var invocationExpressionArgument in invocationExpression.Arguments)
                {
                    invocationExpressionArgument.TraceNode(sb, level);
                }
            }
        }