public override void VisitFileCPPModel(FileCPPModel model)
        {
            AppendLine($"#include \"{Context.FileName}.h\"");

            foreach (var child in model.Members)
            {
                Visit(child);
            }
        }
        public static string Translate(CodeWriterContext context, FileCPPModel model)
        {
            var writer = new FileCPPModelVisitor()
            {
                Context = context
            };

            writer.Visit(model);
            return(writer.ToString());
        }
        public override void VisitFileCPPModel(FileCPPModel model)
        {
            var guardName = $"{Context.FileName}_H";

            AppendLine($"#ifndef {guardName}");
            AppendLine($"#define {guardName}");

            foreach (var child in model.Members)
            {
                Visit(child);
            }

            AppendLine($"#endif");
        }