private void WriteListConstructor(DekiScriptListConstructor expr, char open, char close, bool spacer, StringBuilder state)
        {
            state.Append(open);
            bool first = true;

            foreach (DekiScriptExpression item in expr.Items)
            {
                if (!first)
                {
                    state.Append(", ");
                }
                else if (spacer)
                {
                    state.Append(" ");
                }
                first = false;
                item.VisitWith(this, state);
            }
            if (expr.Generator != null)
            {
                state.Append(" foreach ");
                state.Append(expr.Generator.ToString());
            }
            if (spacer && !first)
            {
                state.Append(" ");
            }
            state.Append(close);
        }
 public Empty Visit(DekiScriptListConstructor expr, StringBuilder state)
 {
     WriteListConstructor(expr, '[', ']', true, state);
     return(Empty.Value);
 }