public static string ToSourceCode(
            this IVisitable <IGenericVisitor> visitable,
            params ISourceCodeStyleRule[] styleRules)
        {
            SourceCodeStepsBuilder stepsBuilder = new SourceCodeStepsBuilder();

            visitable.Accept(stepsBuilder);
            return(stepsBuilder.Steps.ToSourceCode(styleRules));
        }
        public static async Task <string> ToSourceCodeAsync(
            this IAsyncVisitable <IGenericVisitor> visitable,
            params ISourceCodeStyleRule[] styleRules)
        {
            SourceCodeStepsBuilder stepsBuilder = new SourceCodeStepsBuilder();
            await visitable.AcceptAsync(stepsBuilder);

            return(stepsBuilder.Steps.ToSourceCode(styleRules));
        }
        public WriteChildNode(TChildNode childNode, SourceCodeStepsBuilder builder = null)
        {
            ChildNode = childNode;
            if (builder == null)
            {
                builder = new SourceCodeStepsBuilder();
            }

            childNode.Accept(builder);
            Steps = builder.Steps;
        }