internal JsonMapSyntax(JsonValueWithBackgroundSyntax parent, GreenJsonMapSyntax green) : base(parent)
        {
            Green = green;

            CurlyOpen = new JsonCurlyOpenSyntax(this);

            int keyValueNodeCount = green.KeyValueNodes.Count;

            KeyValueNodes = new SafeLazyObjectCollection <JsonKeyValueSyntax>(
                keyValueNodeCount,
                index => new JsonKeyValueSyntax(this, index));

            Commas = new SafeLazyObjectCollection <JsonCommaSyntax>(
                keyValueNodeCount - 1,
                index => new JsonCommaSyntax(this, index));

            CurlyClose = green.MissingCurlyClose
                       ? Maybe <JsonCurlyCloseSyntax> .Nothing
                       : new JsonCurlyCloseSyntax(this);
        }
 public override JsonValueSyntax VisitMapSyntax(GreenJsonMapSyntax green, JsonValueWithBackgroundSyntax parent)
     => new JsonMapSyntax(parent, green);
 public virtual TResult VisitMapSyntax(GreenJsonMapSyntax node, T arg) => DefaultVisit(node, arg);