public override void Visit(PropertyNode node, Context context)
        {
            context._sb.Clear();
            node.Expression.Accept(this, context);

            context._yaml.WriteProperty(CharacterUtils.EscapeName(node.Identifier), context._sb.ToString());
        }
        public override void Visit(FunctionNode node, Context context)
        {
            context._sb.Clear();
            context._sb.Append(CharacterUtils.EscapeName(node.Identifier)).Append('(');
            var isFirst = true;

            foreach (var arg in node.Args)
            {
                if (!isFirst)
                {
                    context._sb.Append(", ");
                }

                isFirst = false;
                arg.Accept(this, context);
            }
            context._sb.Append(")");
            var property = context._sb.ToString();

            context._sb.Clear();
            context._yaml.WriteStartObject(property);

            foreach (var metadataBlock in node.Metadata)
            {
                metadataBlock.Accept(this, context);
            }

            context._yaml.WriteEndObject();
        }
        public override void Visit(TypeNode node, Context context)
        {
            context._sb.Append(CharacterUtils.EscapeName(node.TypeName));

            if (!string.IsNullOrEmpty(node.OptionalVariant))
            {
                context._sb.Append(".");
                context._sb.Append(CharacterUtils.EscapeName(node.OptionalVariant));
            }
        }
 public override void Visit(TypedNameNode node, Context context)
 {
     context._sb.Append(CharacterUtils.EscapeName(node.Identifier));
     context._sb.Append(" As ");
     node.Kind.Accept(this, context);
 }