Advertisement
agmike

DEM NODES BRUH

Aug 18th, 2015
288
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 75.08 KB | None | 0 0
  1.  
  2. // ReSharper disable All
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using GSSharp.Syntax.Ast;
  7.  
  8.  
  9. namespace GSSharp.Syntax.Ast
  10. {
  11.     public partial class CompilationUnitNode : AbstractNode
  12.     {
  13.  
  14.  
  15.  
  16.         public IList<IncludeNode> Includes {
  17.             get { return includes.GetList(); }
  18.             set { this.includes.SetList(value); }
  19.         }
  20.         private readonly NodeList<IncludeNode> includes;
  21.  
  22.  
  23.         public IList<ClassNode> Classes {
  24.             get { return classes.GetList(); }
  25.             set { this.classes.SetList(value); }
  26.         }
  27.         private readonly NodeList<ClassNode> classes;
  28.  
  29.  
  30.         public CompilationUnitNode(IEnumerable<IncludeNode> includes = default(IEnumerable<IncludeNode>), IEnumerable<ClassNode> classes = default(IEnumerable<ClassNode>))
  31.             : base()
  32.         {
  33.  
  34.  
  35.  
  36.             this.includes = new NodeList<IncludeNode>(this);
  37.             this.includes.SetList(includes);
  38.  
  39.             this.classes = new NodeList<ClassNode>(this);
  40.             this.classes.SetList(classes);
  41.  
  42.         }
  43.  
  44.         public CompilationUnitNode(CompilationUnitNode other)
  45.             : base(other)
  46.         {
  47.  
  48.             this.includes = new NodeList<IncludeNode>(this, other.includes);
  49.  
  50.             this.classes = new NodeList<ClassNode>(this, other.classes);
  51.  
  52.         }
  53.  
  54.         public override void VisitChildren(Action<AbstractNode> action)
  55.         {
  56.             base.VisitChildren(action);
  57.  
  58.             includes.Accept(action);
  59.  
  60.             classes.Accept(action);
  61.  
  62.         }
  63.  
  64.         public override T Accept<T>(AbstractVisitor<T> visitor)
  65.         {
  66.             return visitor.Visit(this);
  67.         }
  68.  
  69.         public override void Accept(AbstractVisitor visitor)
  70.         {
  71.             visitor.Visit(this);
  72.         }
  73.     }
  74.  
  75.  
  76.     public abstract partial class AbstractVisitor<T>
  77.     {
  78.         public virtual T Visit(CompilationUnitNode node)
  79.         {
  80.             return Visit((AbstractNode) node);
  81.         }
  82.     }
  83.  
  84.  
  85.     public abstract partial class AbstractVisitor
  86.     {
  87.         public virtual void Visit(CompilationUnitNode node)
  88.         {
  89.             Visit((AbstractNode) node);
  90.         }
  91.     }
  92. }
  93.  
  94.  
  95.  
  96. namespace GSSharp.Syntax.Ast
  97. {
  98.     public partial class IncludeNode : AbstractNode
  99.     {
  100.  
  101.         public string File { get; set; }
  102.  
  103.  
  104.  
  105.         public IncludeNode(string file = default(string))
  106.             : base()
  107.         {
  108.  
  109.             this.File = file;
  110.  
  111.  
  112.  
  113.         }
  114.  
  115.         public IncludeNode(IncludeNode other)
  116.             : base(other)
  117.         {
  118.  
  119.             this.File = global::GSSharp.Syntax.Ast.Helper.CloneProp(other.File);
  120.  
  121.         }
  122.  
  123.         public override void VisitChildren(Action<AbstractNode> action)
  124.         {
  125.             base.VisitChildren(action);
  126.  
  127.         }
  128.  
  129.         public override T Accept<T>(AbstractVisitor<T> visitor)
  130.         {
  131.             return visitor.Visit(this);
  132.         }
  133.  
  134.         public override void Accept(AbstractVisitor visitor)
  135.         {
  136.             visitor.Visit(this);
  137.         }
  138.     }
  139.  
  140.  
  141.     public abstract partial class AbstractVisitor<T>
  142.     {
  143.         public virtual T Visit(IncludeNode node)
  144.         {
  145.             return Visit((AbstractNode) node);
  146.         }
  147.     }
  148.  
  149.  
  150.     public abstract partial class AbstractVisitor
  151.     {
  152.         public virtual void Visit(IncludeNode node)
  153.         {
  154.             Visit((AbstractNode) node);
  155.         }
  156.     }
  157. }
  158.  
  159.  
  160.  
  161. namespace GSSharp.Syntax.Ast
  162. {
  163.     public abstract partial class DeclNode : AbstractNode
  164.     {
  165.  
  166.  
  167.  
  168.         public DeclNode()
  169.             : base()
  170.         {
  171.  
  172.  
  173.  
  174.         }
  175.  
  176.         public DeclNode(DeclNode other)
  177.             : base(other)
  178.         {
  179.  
  180.         }
  181.  
  182.         public override void VisitChildren(Action<AbstractNode> action)
  183.         {
  184.             base.VisitChildren(action);
  185.  
  186.         }
  187.  
  188.         public override T Accept<T>(AbstractVisitor<T> visitor)
  189.         {
  190.             return visitor.Visit(this);
  191.         }
  192.  
  193.         public override void Accept(AbstractVisitor visitor)
  194.         {
  195.             visitor.Visit(this);
  196.         }
  197.     }
  198.  
  199.  
  200.     public abstract partial class AbstractVisitor<T>
  201.     {
  202.         public virtual T Visit(DeclNode node)
  203.         {
  204.             return Visit((AbstractNode) node);
  205.         }
  206.     }
  207.  
  208.  
  209.     public abstract partial class AbstractVisitor
  210.     {
  211.         public virtual void Visit(DeclNode node)
  212.         {
  213.             Visit((AbstractNode) node);
  214.         }
  215.     }
  216. }
  217.  
  218.  
  219.  
  220. namespace GSSharp.Syntax.Ast
  221. {
  222.     public partial class ClassNode : DeclNode
  223.     {
  224.  
  225.         public string Name { get; set; }
  226.  
  227.         public List<string> BaseClasses { get; set; }
  228.  
  229.  
  230.  
  231.         public IList<FieldNode> Fields {
  232.             get { return fields.GetList(); }
  233.             set { this.fields.SetList(value); }
  234.         }
  235.         private readonly NodeList<FieldNode> fields;
  236.  
  237.  
  238.         public IList<MethodNode> Methods {
  239.             get { return methods.GetList(); }
  240.             set { this.methods.SetList(value); }
  241.         }
  242.         private readonly NodeList<MethodNode> methods;
  243.  
  244.  
  245.         public ClassNode(string name = default(string), List<string> baseClasses = default(List<string>), IEnumerable<FieldNode> fields = default(IEnumerable<FieldNode>), IEnumerable<MethodNode> methods = default(IEnumerable<MethodNode>))
  246.             : base()
  247.         {
  248.  
  249.             this.Name = name;
  250.  
  251.             this.BaseClasses = baseClasses;
  252.  
  253.  
  254.  
  255.             this.fields = new NodeList<FieldNode>(this);
  256.             this.fields.SetList(fields);
  257.  
  258.             this.methods = new NodeList<MethodNode>(this);
  259.             this.methods.SetList(methods);
  260.  
  261.         }
  262.  
  263.         public ClassNode(ClassNode other)
  264.             : base(other)
  265.         {
  266.  
  267.             this.Name = global::GSSharp.Syntax.Ast.Helper.CloneProp(other.Name);
  268.  
  269.             this.BaseClasses = global::GSSharp.Syntax.Ast.Helper.CloneProp(other.BaseClasses);
  270.  
  271.             this.fields = new NodeList<FieldNode>(this, other.fields);
  272.  
  273.             this.methods = new NodeList<MethodNode>(this, other.methods);
  274.  
  275.         }
  276.  
  277.         public override void VisitChildren(Action<AbstractNode> action)
  278.         {
  279.             base.VisitChildren(action);
  280.  
  281.             fields.Accept(action);
  282.  
  283.             methods.Accept(action);
  284.  
  285.         }
  286.  
  287.         public override T Accept<T>(AbstractVisitor<T> visitor)
  288.         {
  289.             return visitor.Visit(this);
  290.         }
  291.  
  292.         public override void Accept(AbstractVisitor visitor)
  293.         {
  294.             visitor.Visit(this);
  295.         }
  296.     }
  297.  
  298.  
  299.     public abstract partial class AbstractVisitor<T>
  300.     {
  301.         public virtual T Visit(ClassNode node)
  302.         {
  303.             return Visit((DeclNode) node);
  304.         }
  305.     }
  306.  
  307.  
  308.     public abstract partial class AbstractVisitor
  309.     {
  310.         public virtual void Visit(ClassNode node)
  311.         {
  312.             Visit((DeclNode) node);
  313.         }
  314.     }
  315. }
  316.  
  317.  
  318.  
  319. namespace GSSharp.Syntax.Ast
  320. {
  321.     public partial class FieldNode : DeclNode
  322.     {
  323.  
  324.  
  325.         public VariableNode Variable {
  326.             get { return variable.Get(); }
  327.             set { this.variable.Set(value); }
  328.         }
  329.         private readonly NodeCell<VariableNode> variable;
  330.  
  331.  
  332.  
  333.         public FieldNode(VariableNode variable = default(VariableNode))
  334.             : base()
  335.         {
  336.  
  337.  
  338.             this.variable = new NodeCell<VariableNode>(this);
  339.             this.variable.Set(variable);
  340.  
  341.  
  342.         }
  343.  
  344.         public FieldNode(FieldNode other)
  345.             : base(other)
  346.         {
  347.  
  348.             this.variable = new NodeCell<VariableNode>(this, other.variable);
  349.  
  350.         }
  351.  
  352.         public override void VisitChildren(Action<AbstractNode> action)
  353.         {
  354.             base.VisitChildren(action);
  355.  
  356.             variable.Accept(action);
  357.  
  358.         }
  359.  
  360.         public override T Accept<T>(AbstractVisitor<T> visitor)
  361.         {
  362.             return visitor.Visit(this);
  363.         }
  364.  
  365.         public override void Accept(AbstractVisitor visitor)
  366.         {
  367.             visitor.Visit(this);
  368.         }
  369.     }
  370.  
  371.  
  372.     public abstract partial class AbstractVisitor<T>
  373.     {
  374.         public virtual T Visit(FieldNode node)
  375.         {
  376.             return Visit((DeclNode) node);
  377.         }
  378.     }
  379.  
  380.  
  381.     public abstract partial class AbstractVisitor
  382.     {
  383.         public virtual void Visit(FieldNode node)
  384.         {
  385.             Visit((DeclNode) node);
  386.         }
  387.     }
  388. }
  389.  
  390.  
  391.  
  392. namespace GSSharp.Syntax.Ast
  393. {
  394.     public partial class MethodNode : DeclNode
  395.     {
  396.  
  397.         public string Name { get; set; }
  398.  
  399.  
  400.         public TypeNode ReturnType {
  401.             get { return returnType.Get(); }
  402.             set { this.returnType.Set(value); }
  403.         }
  404.         private readonly NodeCell<TypeNode> returnType;
  405.  
  406.  
  407.         public BlockStmtNode Body {
  408.             get { return body.Get(); }
  409.             set { this.body.Set(value); }
  410.         }
  411.         private readonly NodeCell<BlockStmtNode> body;
  412.  
  413.  
  414.  
  415.         public IList<ParameterNode> Parameters {
  416.             get { return parameters.GetList(); }
  417.             set { this.parameters.SetList(value); }
  418.         }
  419.         private readonly NodeList<ParameterNode> parameters;
  420.  
  421.  
  422.         public MethodNode(string name = default(string), TypeNode returnType = default(TypeNode), IEnumerable<ParameterNode> parameters = default(IEnumerable<ParameterNode>), BlockStmtNode body = default(BlockStmtNode))
  423.             : base()
  424.         {
  425.  
  426.             this.Name = name;
  427.  
  428.  
  429.             this.returnType = new NodeCell<TypeNode>(this);
  430.             this.returnType.Set(returnType);
  431.  
  432.             this.body = new NodeCell<BlockStmtNode>(this);
  433.             this.body.Set(body);
  434.  
  435.  
  436.             this.parameters = new NodeList<ParameterNode>(this);
  437.             this.parameters.SetList(parameters);
  438.  
  439.         }
  440.  
  441.         public MethodNode(MethodNode other)
  442.             : base(other)
  443.         {
  444.  
  445.             this.Name = global::GSSharp.Syntax.Ast.Helper.CloneProp(other.Name);
  446.  
  447.             this.returnType = new NodeCell<TypeNode>(this, other.returnType);
  448.  
  449.             this.parameters = new NodeList<ParameterNode>(this, other.parameters);
  450.  
  451.             this.body = new NodeCell<BlockStmtNode>(this, other.body);
  452.  
  453.         }
  454.  
  455.         public override void VisitChildren(Action<AbstractNode> action)
  456.         {
  457.             base.VisitChildren(action);
  458.  
  459.             returnType.Accept(action);
  460.  
  461.             parameters.Accept(action);
  462.  
  463.             body.Accept(action);
  464.  
  465.         }
  466.  
  467.         public override T Accept<T>(AbstractVisitor<T> visitor)
  468.         {
  469.             return visitor.Visit(this);
  470.         }
  471.  
  472.         public override void Accept(AbstractVisitor visitor)
  473.         {
  474.             visitor.Visit(this);
  475.         }
  476.     }
  477.  
  478.  
  479.     public abstract partial class AbstractVisitor<T>
  480.     {
  481.         public virtual T Visit(MethodNode node)
  482.         {
  483.             return Visit((DeclNode) node);
  484.         }
  485.     }
  486.  
  487.  
  488.     public abstract partial class AbstractVisitor
  489.     {
  490.         public virtual void Visit(MethodNode node)
  491.         {
  492.             Visit((DeclNode) node);
  493.         }
  494.     }
  495. }
  496.  
  497.  
  498.  
  499. namespace GSSharp.Syntax.Ast
  500. {
  501.     public partial class ParameterNode : DeclNode
  502.     {
  503.  
  504.  
  505.         public VariableNode Variable {
  506.             get { return variable.Get(); }
  507.             set { this.variable.Set(value); }
  508.         }
  509.         private readonly NodeCell<VariableNode> variable;
  510.  
  511.  
  512.  
  513.         public ParameterNode(VariableNode variable = default(VariableNode))
  514.             : base()
  515.         {
  516.  
  517.  
  518.             this.variable = new NodeCell<VariableNode>(this);
  519.             this.variable.Set(variable);
  520.  
  521.  
  522.         }
  523.  
  524.         public ParameterNode(ParameterNode other)
  525.             : base(other)
  526.         {
  527.  
  528.             this.variable = new NodeCell<VariableNode>(this, other.variable);
  529.  
  530.         }
  531.  
  532.         public override void VisitChildren(Action<AbstractNode> action)
  533.         {
  534.             base.VisitChildren(action);
  535.  
  536.             variable.Accept(action);
  537.  
  538.         }
  539.  
  540.         public override T Accept<T>(AbstractVisitor<T> visitor)
  541.         {
  542.             return visitor.Visit(this);
  543.         }
  544.  
  545.         public override void Accept(AbstractVisitor visitor)
  546.         {
  547.             visitor.Visit(this);
  548.         }
  549.     }
  550.  
  551.  
  552.     public abstract partial class AbstractVisitor<T>
  553.     {
  554.         public virtual T Visit(ParameterNode node)
  555.         {
  556.             return Visit((DeclNode) node);
  557.         }
  558.     }
  559.  
  560.  
  561.     public abstract partial class AbstractVisitor
  562.     {
  563.         public virtual void Visit(ParameterNode node)
  564.         {
  565.             Visit((DeclNode) node);
  566.         }
  567.     }
  568. }
  569.  
  570.  
  571.  
  572. namespace GSSharp.Syntax.Ast
  573. {
  574.     public abstract partial class StmtNode : AbstractNode
  575.     {
  576.  
  577.  
  578.  
  579.         public StmtNode()
  580.             : base()
  581.         {
  582.  
  583.  
  584.  
  585.         }
  586.  
  587.         public StmtNode(StmtNode other)
  588.             : base(other)
  589.         {
  590.  
  591.         }
  592.  
  593.         public override void VisitChildren(Action<AbstractNode> action)
  594.         {
  595.             base.VisitChildren(action);
  596.  
  597.         }
  598.  
  599.         public override T Accept<T>(AbstractVisitor<T> visitor)
  600.         {
  601.             return visitor.Visit(this);
  602.         }
  603.  
  604.         public override void Accept(AbstractVisitor visitor)
  605.         {
  606.             visitor.Visit(this);
  607.         }
  608.     }
  609.  
  610.  
  611.     public abstract partial class AbstractVisitor<T>
  612.     {
  613.         public virtual T Visit(StmtNode node)
  614.         {
  615.             return Visit((AbstractNode) node);
  616.         }
  617.     }
  618.  
  619.  
  620.     public abstract partial class AbstractVisitor
  621.     {
  622.         public virtual void Visit(StmtNode node)
  623.         {
  624.             Visit((AbstractNode) node);
  625.         }
  626.     }
  627. }
  628.  
  629.  
  630.  
  631. namespace GSSharp.Syntax.Ast
  632. {
  633.     public partial class BlockStmtNode : StmtNode
  634.     {
  635.  
  636.  
  637.  
  638.         public IList<StmtNode> Stmts {
  639.             get { return stmts.GetList(); }
  640.             set { this.stmts.SetList(value); }
  641.         }
  642.         private readonly NodeList<StmtNode> stmts;
  643.  
  644.  
  645.         public BlockStmtNode(IEnumerable<StmtNode> stmts = default(IEnumerable<StmtNode>))
  646.             : base()
  647.         {
  648.  
  649.  
  650.  
  651.             this.stmts = new NodeList<StmtNode>(this);
  652.             this.stmts.SetList(stmts);
  653.  
  654.         }
  655.  
  656.         public BlockStmtNode(BlockStmtNode other)
  657.             : base(other)
  658.         {
  659.  
  660.             this.stmts = new NodeList<StmtNode>(this, other.stmts);
  661.  
  662.         }
  663.  
  664.         public override void VisitChildren(Action<AbstractNode> action)
  665.         {
  666.             base.VisitChildren(action);
  667.  
  668.             stmts.Accept(action);
  669.  
  670.         }
  671.  
  672.         public override T Accept<T>(AbstractVisitor<T> visitor)
  673.         {
  674.             return visitor.Visit(this);
  675.         }
  676.  
  677.         public override void Accept(AbstractVisitor visitor)
  678.         {
  679.             visitor.Visit(this);
  680.         }
  681.     }
  682.  
  683.  
  684.     public abstract partial class AbstractVisitor<T>
  685.     {
  686.         public virtual T Visit(BlockStmtNode node)
  687.         {
  688.             return Visit((StmtNode) node);
  689.         }
  690.     }
  691.  
  692.  
  693.     public abstract partial class AbstractVisitor
  694.     {
  695.         public virtual void Visit(BlockStmtNode node)
  696.         {
  697.             Visit((StmtNode) node);
  698.         }
  699.     }
  700. }
  701.  
  702.  
  703.  
  704. namespace GSSharp.Syntax.Ast
  705. {
  706.     public abstract partial class LabeledStmtNode : StmtNode
  707.     {
  708.  
  709.  
  710.         public StmtNode Stmt {
  711.             get { return stmt.Get(); }
  712.             set { this.stmt.Set(value); }
  713.         }
  714.         private readonly NodeCell<StmtNode> stmt;
  715.  
  716.  
  717.  
  718.         public LabeledStmtNode(StmtNode stmt = default(StmtNode))
  719.             : base()
  720.         {
  721.  
  722.  
  723.             this.stmt = new NodeCell<StmtNode>(this);
  724.             this.stmt.Set(stmt);
  725.  
  726.  
  727.         }
  728.  
  729.         public LabeledStmtNode(LabeledStmtNode other)
  730.             : base(other)
  731.         {
  732.  
  733.             this.stmt = new NodeCell<StmtNode>(this, other.stmt);
  734.  
  735.         }
  736.  
  737.         public override void VisitChildren(Action<AbstractNode> action)
  738.         {
  739.             base.VisitChildren(action);
  740.  
  741.             stmt.Accept(action);
  742.  
  743.         }
  744.  
  745.         public override T Accept<T>(AbstractVisitor<T> visitor)
  746.         {
  747.             return visitor.Visit(this);
  748.         }
  749.  
  750.         public override void Accept(AbstractVisitor visitor)
  751.         {
  752.             visitor.Visit(this);
  753.         }
  754.     }
  755.  
  756.  
  757.     public abstract partial class AbstractVisitor<T>
  758.     {
  759.         public virtual T Visit(LabeledStmtNode node)
  760.         {
  761.             return Visit((StmtNode) node);
  762.         }
  763.     }
  764.  
  765.  
  766.     public abstract partial class AbstractVisitor
  767.     {
  768.         public virtual void Visit(LabeledStmtNode node)
  769.         {
  770.             Visit((StmtNode) node);
  771.         }
  772.     }
  773. }
  774.  
  775.  
  776.  
  777. namespace GSSharp.Syntax.Ast
  778. {
  779.     public partial class LabelStmtNode : LabeledStmtNode
  780.     {
  781.  
  782.         public string Label { get; set; }
  783.  
  784.  
  785.  
  786.         public LabelStmtNode(StmtNode stmt = default(StmtNode), string label = default(string))
  787.             : base(stmt: stmt)
  788.         {
  789.  
  790.             this.Label = label;
  791.  
  792.  
  793.  
  794.         }
  795.  
  796.         public LabelStmtNode(LabelStmtNode other)
  797.             : base(other)
  798.         {
  799.  
  800.             this.Label = global::GSSharp.Syntax.Ast.Helper.CloneProp(other.Label);
  801.  
  802.         }
  803.  
  804.         public override void VisitChildren(Action<AbstractNode> action)
  805.         {
  806.             base.VisitChildren(action);
  807.  
  808.         }
  809.  
  810.         public override T Accept<T>(AbstractVisitor<T> visitor)
  811.         {
  812.             return visitor.Visit(this);
  813.         }
  814.  
  815.         public override void Accept(AbstractVisitor visitor)
  816.         {
  817.             visitor.Visit(this);
  818.         }
  819.     }
  820.  
  821.  
  822.     public abstract partial class AbstractVisitor<T>
  823.     {
  824.         public virtual T Visit(LabelStmtNode node)
  825.         {
  826.             return Visit((LabeledStmtNode) node);
  827.         }
  828.     }
  829.  
  830.  
  831.     public abstract partial class AbstractVisitor
  832.     {
  833.         public virtual void Visit(LabelStmtNode node)
  834.         {
  835.             Visit((LabeledStmtNode) node);
  836.         }
  837.     }
  838. }
  839.  
  840.  
  841.  
  842. namespace GSSharp.Syntax.Ast
  843. {
  844.     public partial class DefaultStmtNode : LabeledStmtNode
  845.     {
  846.  
  847.  
  848.  
  849.         public DefaultStmtNode(StmtNode stmt = default(StmtNode))
  850.             : base(stmt: stmt)
  851.         {
  852.  
  853.  
  854.  
  855.         }
  856.  
  857.         public DefaultStmtNode(DefaultStmtNode other)
  858.             : base(other)
  859.         {
  860.  
  861.         }
  862.  
  863.         public override void VisitChildren(Action<AbstractNode> action)
  864.         {
  865.             base.VisitChildren(action);
  866.  
  867.         }
  868.  
  869.         public override T Accept<T>(AbstractVisitor<T> visitor)
  870.         {
  871.             return visitor.Visit(this);
  872.         }
  873.  
  874.         public override void Accept(AbstractVisitor visitor)
  875.         {
  876.             visitor.Visit(this);
  877.         }
  878.     }
  879.  
  880.  
  881.     public abstract partial class AbstractVisitor<T>
  882.     {
  883.         public virtual T Visit(DefaultStmtNode node)
  884.         {
  885.             return Visit((LabeledStmtNode) node);
  886.         }
  887.     }
  888.  
  889.  
  890.     public abstract partial class AbstractVisitor
  891.     {
  892.         public virtual void Visit(DefaultStmtNode node)
  893.         {
  894.             Visit((LabeledStmtNode) node);
  895.         }
  896.     }
  897. }
  898.  
  899.  
  900.  
  901. namespace GSSharp.Syntax.Ast
  902. {
  903.     public partial class CaseStmtNode : LabeledStmtNode
  904.     {
  905.  
  906.  
  907.         public ExprNode Label {
  908.             get { return label.Get(); }
  909.             set { this.label.Set(value); }
  910.         }
  911.         private readonly NodeCell<ExprNode> label;
  912.  
  913.  
  914.  
  915.         public CaseStmtNode(StmtNode stmt = default(StmtNode), ExprNode label = default(ExprNode))
  916.             : base(stmt: stmt)
  917.         {
  918.  
  919.  
  920.             this.label = new NodeCell<ExprNode>(this);
  921.             this.label.Set(label);
  922.  
  923.  
  924.         }
  925.  
  926.         public CaseStmtNode(CaseStmtNode other)
  927.             : base(other)
  928.         {
  929.  
  930.             this.label = new NodeCell<ExprNode>(this, other.label);
  931.  
  932.         }
  933.  
  934.         public override void VisitChildren(Action<AbstractNode> action)
  935.         {
  936.             base.VisitChildren(action);
  937.  
  938.             label.Accept(action);
  939.  
  940.         }
  941.  
  942.         public override T Accept<T>(AbstractVisitor<T> visitor)
  943.         {
  944.             return visitor.Visit(this);
  945.         }
  946.  
  947.         public override void Accept(AbstractVisitor visitor)
  948.         {
  949.             visitor.Visit(this);
  950.         }
  951.     }
  952.  
  953.  
  954.     public abstract partial class AbstractVisitor<T>
  955.     {
  956.         public virtual T Visit(CaseStmtNode node)
  957.         {
  958.             return Visit((LabeledStmtNode) node);
  959.         }
  960.     }
  961.  
  962.  
  963.     public abstract partial class AbstractVisitor
  964.     {
  965.         public virtual void Visit(CaseStmtNode node)
  966.         {
  967.             Visit((LabeledStmtNode) node);
  968.         }
  969.     }
  970. }
  971.  
  972.  
  973.  
  974. namespace GSSharp.Syntax.Ast
  975. {
  976.     public partial class OnStmtNode : LabeledStmtNode
  977.     {
  978.  
  979.  
  980.         public ExprNode Major {
  981.             get { return major.Get(); }
  982.             set { this.major.Set(value); }
  983.         }
  984.         private readonly NodeCell<ExprNode> major;
  985.  
  986.  
  987.         public ExprNode Minor {
  988.             get { return minor.Get(); }
  989.             set { this.minor.Set(value); }
  990.         }
  991.         private readonly NodeCell<ExprNode> minor;
  992.  
  993.  
  994.         public ExprNode Reciever {
  995.             get { return reciever.Get(); }
  996.             set { this.reciever.Set(value); }
  997.         }
  998.         private readonly NodeCell<ExprNode> reciever;
  999.  
  1000.  
  1001.  
  1002.         public OnStmtNode(StmtNode stmt = default(StmtNode), ExprNode major = default(ExprNode), ExprNode minor = default(ExprNode), ExprNode reciever = default(ExprNode))
  1003.             : base(stmt: stmt)
  1004.         {
  1005.  
  1006.  
  1007.             this.major = new NodeCell<ExprNode>(this);
  1008.             this.major.Set(major);
  1009.  
  1010.             this.minor = new NodeCell<ExprNode>(this);
  1011.             this.minor.Set(minor);
  1012.  
  1013.             this.reciever = new NodeCell<ExprNode>(this);
  1014.             this.reciever.Set(reciever);
  1015.  
  1016.  
  1017.         }
  1018.  
  1019.         public OnStmtNode(OnStmtNode other)
  1020.             : base(other)
  1021.         {
  1022.  
  1023.             this.major = new NodeCell<ExprNode>(this, other.major);
  1024.  
  1025.             this.minor = new NodeCell<ExprNode>(this, other.minor);
  1026.  
  1027.             this.reciever = new NodeCell<ExprNode>(this, other.reciever);
  1028.  
  1029.         }
  1030.  
  1031.         public override void VisitChildren(Action<AbstractNode> action)
  1032.         {
  1033.             base.VisitChildren(action);
  1034.  
  1035.             major.Accept(action);
  1036.  
  1037.             minor.Accept(action);
  1038.  
  1039.             reciever.Accept(action);
  1040.  
  1041.         }
  1042.  
  1043.         public override T Accept<T>(AbstractVisitor<T> visitor)
  1044.         {
  1045.             return visitor.Visit(this);
  1046.         }
  1047.  
  1048.         public override void Accept(AbstractVisitor visitor)
  1049.         {
  1050.             visitor.Visit(this);
  1051.         }
  1052.     }
  1053.  
  1054.  
  1055.     public abstract partial class AbstractVisitor<T>
  1056.     {
  1057.         public virtual T Visit(OnStmtNode node)
  1058.         {
  1059.             return Visit((LabeledStmtNode) node);
  1060.         }
  1061.     }
  1062.  
  1063.  
  1064.     public abstract partial class AbstractVisitor
  1065.     {
  1066.         public virtual void Visit(OnStmtNode node)
  1067.         {
  1068.             Visit((LabeledStmtNode) node);
  1069.         }
  1070.     }
  1071. }
  1072.  
  1073.  
  1074.  
  1075. namespace GSSharp.Syntax.Ast
  1076. {
  1077.     public partial class ReturnStmtNode : StmtNode
  1078.     {
  1079.  
  1080.  
  1081.         public ExprNode Expr {
  1082.             get { return expr.Get(); }
  1083.             set { this.expr.Set(value); }
  1084.         }
  1085.         private readonly NodeCell<ExprNode> expr;
  1086.  
  1087.  
  1088.  
  1089.         public ReturnStmtNode(ExprNode expr = default(ExprNode))
  1090.             : base()
  1091.         {
  1092.  
  1093.  
  1094.             this.expr = new NodeCell<ExprNode>(this);
  1095.             this.expr.Set(expr);
  1096.  
  1097.  
  1098.         }
  1099.  
  1100.         public ReturnStmtNode(ReturnStmtNode other)
  1101.             : base(other)
  1102.         {
  1103.  
  1104.             this.expr = new NodeCell<ExprNode>(this, other.expr);
  1105.  
  1106.         }
  1107.  
  1108.         public override void VisitChildren(Action<AbstractNode> action)
  1109.         {
  1110.             base.VisitChildren(action);
  1111.  
  1112.             expr.Accept(action);
  1113.  
  1114.         }
  1115.  
  1116.         public override T Accept<T>(AbstractVisitor<T> visitor)
  1117.         {
  1118.             return visitor.Visit(this);
  1119.         }
  1120.  
  1121.         public override void Accept(AbstractVisitor visitor)
  1122.         {
  1123.             visitor.Visit(this);
  1124.         }
  1125.     }
  1126.  
  1127.  
  1128.     public abstract partial class AbstractVisitor<T>
  1129.     {
  1130.         public virtual T Visit(ReturnStmtNode node)
  1131.         {
  1132.             return Visit((StmtNode) node);
  1133.         }
  1134.     }
  1135.  
  1136.  
  1137.     public abstract partial class AbstractVisitor
  1138.     {
  1139.         public virtual void Visit(ReturnStmtNode node)
  1140.         {
  1141.             Visit((StmtNode) node);
  1142.         }
  1143.     }
  1144. }
  1145.  
  1146.  
  1147.  
  1148. namespace GSSharp.Syntax.Ast
  1149. {
  1150.     public partial class ConditionalStmtNode : StmtNode
  1151.     {
  1152.  
  1153.  
  1154.         public ExprNode Condition {
  1155.             get { return condition.Get(); }
  1156.             set { this.condition.Set(value); }
  1157.         }
  1158.         private readonly NodeCell<ExprNode> condition;
  1159.  
  1160.  
  1161.         public StmtNode ThenClause {
  1162.             get { return thenClause.Get(); }
  1163.             set { this.thenClause.Set(value); }
  1164.         }
  1165.         private readonly NodeCell<StmtNode> thenClause;
  1166.  
  1167.  
  1168.         public StmtNode ElseClause {
  1169.             get { return elseClause.Get(); }
  1170.             set { this.elseClause.Set(value); }
  1171.         }
  1172.         private readonly NodeCell<StmtNode> elseClause;
  1173.  
  1174.  
  1175.  
  1176.         public ConditionalStmtNode(ExprNode condition = default(ExprNode), StmtNode thenClause = default(StmtNode), StmtNode elseClause = default(StmtNode))
  1177.             : base()
  1178.         {
  1179.  
  1180.  
  1181.             this.condition = new NodeCell<ExprNode>(this);
  1182.             this.condition.Set(condition);
  1183.  
  1184.             this.thenClause = new NodeCell<StmtNode>(this);
  1185.             this.thenClause.Set(thenClause);
  1186.  
  1187.             this.elseClause = new NodeCell<StmtNode>(this);
  1188.             this.elseClause.Set(elseClause);
  1189.  
  1190.  
  1191.         }
  1192.  
  1193.         public ConditionalStmtNode(ConditionalStmtNode other)
  1194.             : base(other)
  1195.         {
  1196.  
  1197.             this.condition = new NodeCell<ExprNode>(this, other.condition);
  1198.  
  1199.             this.thenClause = new NodeCell<StmtNode>(this, other.thenClause);
  1200.  
  1201.             this.elseClause = new NodeCell<StmtNode>(this, other.elseClause);
  1202.  
  1203.         }
  1204.  
  1205.         public override void VisitChildren(Action<AbstractNode> action)
  1206.         {
  1207.             base.VisitChildren(action);
  1208.  
  1209.             condition.Accept(action);
  1210.  
  1211.             thenClause.Accept(action);
  1212.  
  1213.             elseClause.Accept(action);
  1214.  
  1215.         }
  1216.  
  1217.         public override T Accept<T>(AbstractVisitor<T> visitor)
  1218.         {
  1219.             return visitor.Visit(this);
  1220.         }
  1221.  
  1222.         public override void Accept(AbstractVisitor visitor)
  1223.         {
  1224.             visitor.Visit(this);
  1225.         }
  1226.     }
  1227.  
  1228.  
  1229.     public abstract partial class AbstractVisitor<T>
  1230.     {
  1231.         public virtual T Visit(ConditionalStmtNode node)
  1232.         {
  1233.             return Visit((StmtNode) node);
  1234.         }
  1235.     }
  1236.  
  1237.  
  1238.     public abstract partial class AbstractVisitor
  1239.     {
  1240.         public virtual void Visit(ConditionalStmtNode node)
  1241.         {
  1242.             Visit((StmtNode) node);
  1243.         }
  1244.     }
  1245. }
  1246.  
  1247.  
  1248.  
  1249. namespace GSSharp.Syntax.Ast
  1250. {
  1251.     public partial class SwitchStmtNode : StmtNode
  1252.     {
  1253.  
  1254.  
  1255.         public ExprNode Selector {
  1256.             get { return selector.Get(); }
  1257.             set { this.selector.Set(value); }
  1258.         }
  1259.         private readonly NodeCell<ExprNode> selector;
  1260.  
  1261.  
  1262.         public BlockStmtNode Body {
  1263.             get { return body.Get(); }
  1264.             set { this.body.Set(value); }
  1265.         }
  1266.         private readonly NodeCell<BlockStmtNode> body;
  1267.  
  1268.  
  1269.  
  1270.         public SwitchStmtNode(ExprNode selector = default(ExprNode), BlockStmtNode body = default(BlockStmtNode))
  1271.             : base()
  1272.         {
  1273.  
  1274.  
  1275.             this.selector = new NodeCell<ExprNode>(this);
  1276.             this.selector.Set(selector);
  1277.  
  1278.             this.body = new NodeCell<BlockStmtNode>(this);
  1279.             this.body.Set(body);
  1280.  
  1281.  
  1282.         }
  1283.  
  1284.         public SwitchStmtNode(SwitchStmtNode other)
  1285.             : base(other)
  1286.         {
  1287.  
  1288.             this.selector = new NodeCell<ExprNode>(this, other.selector);
  1289.  
  1290.             this.body = new NodeCell<BlockStmtNode>(this, other.body);
  1291.  
  1292.         }
  1293.  
  1294.         public override void VisitChildren(Action<AbstractNode> action)
  1295.         {
  1296.             base.VisitChildren(action);
  1297.  
  1298.             selector.Accept(action);
  1299.  
  1300.             body.Accept(action);
  1301.  
  1302.         }
  1303.  
  1304.         public override T Accept<T>(AbstractVisitor<T> visitor)
  1305.         {
  1306.             return visitor.Visit(this);
  1307.         }
  1308.  
  1309.         public override void Accept(AbstractVisitor visitor)
  1310.         {
  1311.             visitor.Visit(this);
  1312.         }
  1313.     }
  1314.  
  1315.  
  1316.     public abstract partial class AbstractVisitor<T>
  1317.     {
  1318.         public virtual T Visit(SwitchStmtNode node)
  1319.         {
  1320.             return Visit((StmtNode) node);
  1321.         }
  1322.     }
  1323.  
  1324.  
  1325.     public abstract partial class AbstractVisitor
  1326.     {
  1327.         public virtual void Visit(SwitchStmtNode node)
  1328.         {
  1329.             Visit((StmtNode) node);
  1330.         }
  1331.     }
  1332. }
  1333.  
  1334.  
  1335.  
  1336. namespace GSSharp.Syntax.Ast
  1337. {
  1338.     public partial class WaitStmtNode : StmtNode
  1339.     {
  1340.  
  1341.  
  1342.         public BlockStmtNode Body {
  1343.             get { return body.Get(); }
  1344.             set { this.body.Set(value); }
  1345.         }
  1346.         private readonly NodeCell<BlockStmtNode> body;
  1347.  
  1348.  
  1349.  
  1350.         public WaitStmtNode(BlockStmtNode body = default(BlockStmtNode))
  1351.             : base()
  1352.         {
  1353.  
  1354.  
  1355.             this.body = new NodeCell<BlockStmtNode>(this);
  1356.             this.body.Set(body);
  1357.  
  1358.  
  1359.         }
  1360.  
  1361.         public WaitStmtNode(WaitStmtNode other)
  1362.             : base(other)
  1363.         {
  1364.  
  1365.             this.body = new NodeCell<BlockStmtNode>(this, other.body);
  1366.  
  1367.         }
  1368.  
  1369.         public override void VisitChildren(Action<AbstractNode> action)
  1370.         {
  1371.             base.VisitChildren(action);
  1372.  
  1373.             body.Accept(action);
  1374.  
  1375.         }
  1376.  
  1377.         public override T Accept<T>(AbstractVisitor<T> visitor)
  1378.         {
  1379.             return visitor.Visit(this);
  1380.         }
  1381.  
  1382.         public override void Accept(AbstractVisitor visitor)
  1383.         {
  1384.             visitor.Visit(this);
  1385.         }
  1386.     }
  1387.  
  1388.  
  1389.     public abstract partial class AbstractVisitor<T>
  1390.     {
  1391.         public virtual T Visit(WaitStmtNode node)
  1392.         {
  1393.             return Visit((StmtNode) node);
  1394.         }
  1395.     }
  1396.  
  1397.  
  1398.     public abstract partial class AbstractVisitor
  1399.     {
  1400.         public virtual void Visit(WaitStmtNode node)
  1401.         {
  1402.             Visit((StmtNode) node);
  1403.         }
  1404.     }
  1405. }
  1406.  
  1407.  
  1408.  
  1409. namespace GSSharp.Syntax.Ast
  1410. {
  1411.     public partial class WhileStmtNode : StmtNode
  1412.     {
  1413.  
  1414.  
  1415.         public ExprNode Condition {
  1416.             get { return condition.Get(); }
  1417.             set { this.condition.Set(value); }
  1418.         }
  1419.         private readonly NodeCell<ExprNode> condition;
  1420.  
  1421.  
  1422.         public StmtNode Body {
  1423.             get { return body.Get(); }
  1424.             set { this.body.Set(value); }
  1425.         }
  1426.         private readonly NodeCell<StmtNode> body;
  1427.  
  1428.  
  1429.  
  1430.         public WhileStmtNode(ExprNode condition = default(ExprNode), StmtNode body = default(StmtNode))
  1431.             : base()
  1432.         {
  1433.  
  1434.  
  1435.             this.condition = new NodeCell<ExprNode>(this);
  1436.             this.condition.Set(condition);
  1437.  
  1438.             this.body = new NodeCell<StmtNode>(this);
  1439.             this.body.Set(body);
  1440.  
  1441.  
  1442.         }
  1443.  
  1444.         public WhileStmtNode(WhileStmtNode other)
  1445.             : base(other)
  1446.         {
  1447.  
  1448.             this.condition = new NodeCell<ExprNode>(this, other.condition);
  1449.  
  1450.             this.body = new NodeCell<StmtNode>(this, other.body);
  1451.  
  1452.         }
  1453.  
  1454.         public override void VisitChildren(Action<AbstractNode> action)
  1455.         {
  1456.             base.VisitChildren(action);
  1457.  
  1458.             condition.Accept(action);
  1459.  
  1460.             body.Accept(action);
  1461.  
  1462.         }
  1463.  
  1464.         public override T Accept<T>(AbstractVisitor<T> visitor)
  1465.         {
  1466.             return visitor.Visit(this);
  1467.         }
  1468.  
  1469.         public override void Accept(AbstractVisitor visitor)
  1470.         {
  1471.             visitor.Visit(this);
  1472.         }
  1473.     }
  1474.  
  1475.  
  1476.     public abstract partial class AbstractVisitor<T>
  1477.     {
  1478.         public virtual T Visit(WhileStmtNode node)
  1479.         {
  1480.             return Visit((StmtNode) node);
  1481.         }
  1482.     }
  1483.  
  1484.  
  1485.     public abstract partial class AbstractVisitor
  1486.     {
  1487.         public virtual void Visit(WhileStmtNode node)
  1488.         {
  1489.             Visit((StmtNode) node);
  1490.         }
  1491.     }
  1492. }
  1493.  
  1494.  
  1495.  
  1496. namespace GSSharp.Syntax.Ast
  1497. {
  1498.     public partial class ForStmtNode : StmtNode
  1499.     {
  1500.  
  1501.  
  1502.         public ExprNode Initialization {
  1503.             get { return initialization.Get(); }
  1504.             set { this.initialization.Set(value); }
  1505.         }
  1506.         private readonly NodeCell<ExprNode> initialization;
  1507.  
  1508.  
  1509.         public ExprNode Condition {
  1510.             get { return condition.Get(); }
  1511.             set { this.condition.Set(value); }
  1512.         }
  1513.         private readonly NodeCell<ExprNode> condition;
  1514.  
  1515.  
  1516.         public ExprNode Iteration {
  1517.             get { return iteration.Get(); }
  1518.             set { this.iteration.Set(value); }
  1519.         }
  1520.         private readonly NodeCell<ExprNode> iteration;
  1521.  
  1522.  
  1523.         public StmtNode Body {
  1524.             get { return body.Get(); }
  1525.             set { this.body.Set(value); }
  1526.         }
  1527.         private readonly NodeCell<StmtNode> body;
  1528.  
  1529.  
  1530.  
  1531.         public ForStmtNode(ExprNode initialization = default(ExprNode), ExprNode condition = default(ExprNode), ExprNode iteration = default(ExprNode), StmtNode body = default(StmtNode))
  1532.             : base()
  1533.         {
  1534.  
  1535.  
  1536.             this.initialization = new NodeCell<ExprNode>(this);
  1537.             this.initialization.Set(initialization);
  1538.  
  1539.             this.condition = new NodeCell<ExprNode>(this);
  1540.             this.condition.Set(condition);
  1541.  
  1542.             this.iteration = new NodeCell<ExprNode>(this);
  1543.             this.iteration.Set(iteration);
  1544.  
  1545.             this.body = new NodeCell<StmtNode>(this);
  1546.             this.body.Set(body);
  1547.  
  1548.  
  1549.         }
  1550.  
  1551.         public ForStmtNode(ForStmtNode other)
  1552.             : base(other)
  1553.         {
  1554.  
  1555.             this.initialization = new NodeCell<ExprNode>(this, other.initialization);
  1556.  
  1557.             this.condition = new NodeCell<ExprNode>(this, other.condition);
  1558.  
  1559.             this.iteration = new NodeCell<ExprNode>(this, other.iteration);
  1560.  
  1561.             this.body = new NodeCell<StmtNode>(this, other.body);
  1562.  
  1563.         }
  1564.  
  1565.         public override void VisitChildren(Action<AbstractNode> action)
  1566.         {
  1567.             base.VisitChildren(action);
  1568.  
  1569.             initialization.Accept(action);
  1570.  
  1571.             condition.Accept(action);
  1572.  
  1573.             iteration.Accept(action);
  1574.  
  1575.             body.Accept(action);
  1576.  
  1577.         }
  1578.  
  1579.         public override T Accept<T>(AbstractVisitor<T> visitor)
  1580.         {
  1581.             return visitor.Visit(this);
  1582.         }
  1583.  
  1584.         public override void Accept(AbstractVisitor visitor)
  1585.         {
  1586.             visitor.Visit(this);
  1587.         }
  1588.     }
  1589.  
  1590.  
  1591.     public abstract partial class AbstractVisitor<T>
  1592.     {
  1593.         public virtual T Visit(ForStmtNode node)
  1594.         {
  1595.             return Visit((StmtNode) node);
  1596.         }
  1597.     }
  1598.  
  1599.  
  1600.     public abstract partial class AbstractVisitor
  1601.     {
  1602.         public virtual void Visit(ForStmtNode node)
  1603.         {
  1604.             Visit((StmtNode) node);
  1605.         }
  1606.     }
  1607. }
  1608.  
  1609.  
  1610.  
  1611. namespace GSSharp.Syntax.Ast
  1612. {
  1613.     public partial class GotoStmtNode : StmtNode
  1614.     {
  1615.  
  1616.         public string Label { get; set; }
  1617.  
  1618.  
  1619.  
  1620.         public GotoStmtNode(string label = default(string))
  1621.             : base()
  1622.         {
  1623.  
  1624.             this.Label = label;
  1625.  
  1626.  
  1627.  
  1628.         }
  1629.  
  1630.         public GotoStmtNode(GotoStmtNode other)
  1631.             : base(other)
  1632.         {
  1633.  
  1634.             this.Label = global::GSSharp.Syntax.Ast.Helper.CloneProp(other.Label);
  1635.  
  1636.         }
  1637.  
  1638.         public override void VisitChildren(Action<AbstractNode> action)
  1639.         {
  1640.             base.VisitChildren(action);
  1641.  
  1642.         }
  1643.  
  1644.         public override T Accept<T>(AbstractVisitor<T> visitor)
  1645.         {
  1646.             return visitor.Visit(this);
  1647.         }
  1648.  
  1649.         public override void Accept(AbstractVisitor visitor)
  1650.         {
  1651.             visitor.Visit(this);
  1652.         }
  1653.     }
  1654.  
  1655.  
  1656.     public abstract partial class AbstractVisitor<T>
  1657.     {
  1658.         public virtual T Visit(GotoStmtNode node)
  1659.         {
  1660.             return Visit((StmtNode) node);
  1661.         }
  1662.     }
  1663.  
  1664.  
  1665.     public abstract partial class AbstractVisitor
  1666.     {
  1667.         public virtual void Visit(GotoStmtNode node)
  1668.         {
  1669.             Visit((StmtNode) node);
  1670.         }
  1671.     }
  1672. }
  1673.  
  1674.  
  1675.  
  1676. namespace GSSharp.Syntax.Ast
  1677. {
  1678.     public partial class BreakStmtNode : StmtNode
  1679.     {
  1680.  
  1681.  
  1682.  
  1683.         public BreakStmtNode()
  1684.             : base()
  1685.         {
  1686.  
  1687.  
  1688.  
  1689.         }
  1690.  
  1691.         public BreakStmtNode(BreakStmtNode other)
  1692.             : base(other)
  1693.         {
  1694.  
  1695.         }
  1696.  
  1697.         public override void VisitChildren(Action<AbstractNode> action)
  1698.         {
  1699.             base.VisitChildren(action);
  1700.  
  1701.         }
  1702.  
  1703.         public override T Accept<T>(AbstractVisitor<T> visitor)
  1704.         {
  1705.             return visitor.Visit(this);
  1706.         }
  1707.  
  1708.         public override void Accept(AbstractVisitor visitor)
  1709.         {
  1710.             visitor.Visit(this);
  1711.         }
  1712.     }
  1713.  
  1714.  
  1715.     public abstract partial class AbstractVisitor<T>
  1716.     {
  1717.         public virtual T Visit(BreakStmtNode node)
  1718.         {
  1719.             return Visit((StmtNode) node);
  1720.         }
  1721.     }
  1722.  
  1723.  
  1724.     public abstract partial class AbstractVisitor
  1725.     {
  1726.         public virtual void Visit(BreakStmtNode node)
  1727.         {
  1728.             Visit((StmtNode) node);
  1729.         }
  1730.     }
  1731. }
  1732.  
  1733.  
  1734.  
  1735. namespace GSSharp.Syntax.Ast
  1736. {
  1737.     public partial class ContinueStmtNode : StmtNode
  1738.     {
  1739.  
  1740.  
  1741.  
  1742.         public ContinueStmtNode()
  1743.             : base()
  1744.         {
  1745.  
  1746.  
  1747.  
  1748.         }
  1749.  
  1750.         public ContinueStmtNode(ContinueStmtNode other)
  1751.             : base(other)
  1752.         {
  1753.  
  1754.         }
  1755.  
  1756.         public override void VisitChildren(Action<AbstractNode> action)
  1757.         {
  1758.             base.VisitChildren(action);
  1759.  
  1760.         }
  1761.  
  1762.         public override T Accept<T>(AbstractVisitor<T> visitor)
  1763.         {
  1764.             return visitor.Visit(this);
  1765.         }
  1766.  
  1767.         public override void Accept(AbstractVisitor visitor)
  1768.         {
  1769.             visitor.Visit(this);
  1770.         }
  1771.     }
  1772.  
  1773.  
  1774.     public abstract partial class AbstractVisitor<T>
  1775.     {
  1776.         public virtual T Visit(ContinueStmtNode node)
  1777.         {
  1778.             return Visit((StmtNode) node);
  1779.         }
  1780.     }
  1781.  
  1782.  
  1783.     public abstract partial class AbstractVisitor
  1784.     {
  1785.         public virtual void Visit(ContinueStmtNode node)
  1786.         {
  1787.             Visit((StmtNode) node);
  1788.         }
  1789.     }
  1790. }
  1791.  
  1792.  
  1793.  
  1794. namespace GSSharp.Syntax.Ast
  1795. {
  1796.     public partial class VariableStmtNode : StmtNode
  1797.     {
  1798.  
  1799.  
  1800.  
  1801.         public IList<VariableNode> Variables {
  1802.             get { return variables.GetList(); }
  1803.             set { this.variables.SetList(value); }
  1804.         }
  1805.         private readonly NodeList<VariableNode> variables;
  1806.  
  1807.  
  1808.         public VariableStmtNode(IEnumerable<VariableNode> variables = default(IEnumerable<VariableNode>))
  1809.             : base()
  1810.         {
  1811.  
  1812.  
  1813.  
  1814.             this.variables = new NodeList<VariableNode>(this);
  1815.             this.variables.SetList(variables);
  1816.  
  1817.         }
  1818.  
  1819.         public VariableStmtNode(VariableStmtNode other)
  1820.             : base(other)
  1821.         {
  1822.  
  1823.             this.variables = new NodeList<VariableNode>(this, other.variables);
  1824.  
  1825.         }
  1826.  
  1827.         public override void VisitChildren(Action<AbstractNode> action)
  1828.         {
  1829.             base.VisitChildren(action);
  1830.  
  1831.             variables.Accept(action);
  1832.  
  1833.         }
  1834.  
  1835.         public override T Accept<T>(AbstractVisitor<T> visitor)
  1836.         {
  1837.             return visitor.Visit(this);
  1838.         }
  1839.  
  1840.         public override void Accept(AbstractVisitor visitor)
  1841.         {
  1842.             visitor.Visit(this);
  1843.         }
  1844.     }
  1845.  
  1846.  
  1847.     public abstract partial class AbstractVisitor<T>
  1848.     {
  1849.         public virtual T Visit(VariableStmtNode node)
  1850.         {
  1851.             return Visit((StmtNode) node);
  1852.         }
  1853.     }
  1854.  
  1855.  
  1856.     public abstract partial class AbstractVisitor
  1857.     {
  1858.         public virtual void Visit(VariableStmtNode node)
  1859.         {
  1860.             Visit((StmtNode) node);
  1861.         }
  1862.     }
  1863. }
  1864.  
  1865.  
  1866.  
  1867. namespace GSSharp.Syntax.Ast
  1868. {
  1869.     public partial class ExprStmtNode : StmtNode
  1870.     {
  1871.  
  1872.  
  1873.         public ExprNode Expr {
  1874.             get { return expr.Get(); }
  1875.             set { this.expr.Set(value); }
  1876.         }
  1877.         private readonly NodeCell<ExprNode> expr;
  1878.  
  1879.  
  1880.  
  1881.         public ExprStmtNode(ExprNode expr = default(ExprNode))
  1882.             : base()
  1883.         {
  1884.  
  1885.  
  1886.             this.expr = new NodeCell<ExprNode>(this);
  1887.             this.expr.Set(expr);
  1888.  
  1889.  
  1890.         }
  1891.  
  1892.         public ExprStmtNode(ExprStmtNode other)
  1893.             : base(other)
  1894.         {
  1895.  
  1896.             this.expr = new NodeCell<ExprNode>(this, other.expr);
  1897.  
  1898.         }
  1899.  
  1900.         public override void VisitChildren(Action<AbstractNode> action)
  1901.         {
  1902.             base.VisitChildren(action);
  1903.  
  1904.             expr.Accept(action);
  1905.  
  1906.         }
  1907.  
  1908.         public override T Accept<T>(AbstractVisitor<T> visitor)
  1909.         {
  1910.             return visitor.Visit(this);
  1911.         }
  1912.  
  1913.         public override void Accept(AbstractVisitor visitor)
  1914.         {
  1915.             visitor.Visit(this);
  1916.         }
  1917.     }
  1918.  
  1919.  
  1920.     public abstract partial class AbstractVisitor<T>
  1921.     {
  1922.         public virtual T Visit(ExprStmtNode node)
  1923.         {
  1924.             return Visit((StmtNode) node);
  1925.         }
  1926.     }
  1927.  
  1928.  
  1929.     public abstract partial class AbstractVisitor
  1930.     {
  1931.         public virtual void Visit(ExprStmtNode node)
  1932.         {
  1933.             Visit((StmtNode) node);
  1934.         }
  1935.     }
  1936. }
  1937.  
  1938.  
  1939.  
  1940. namespace GSSharp.Syntax.Ast
  1941. {
  1942.     public abstract partial class ExprNode : AbstractNode
  1943.     {
  1944.  
  1945.  
  1946.  
  1947.         public ExprNode()
  1948.             : base()
  1949.         {
  1950.  
  1951.  
  1952.  
  1953.         }
  1954.  
  1955.         public ExprNode(ExprNode other)
  1956.             : base(other)
  1957.         {
  1958.  
  1959.         }
  1960.  
  1961.         public override void VisitChildren(Action<AbstractNode> action)
  1962.         {
  1963.             base.VisitChildren(action);
  1964.  
  1965.         }
  1966.  
  1967.         public override T Accept<T>(AbstractVisitor<T> visitor)
  1968.         {
  1969.             return visitor.Visit(this);
  1970.         }
  1971.  
  1972.         public override void Accept(AbstractVisitor visitor)
  1973.         {
  1974.             visitor.Visit(this);
  1975.         }
  1976.     }
  1977.  
  1978.  
  1979.     public abstract partial class AbstractVisitor<T>
  1980.     {
  1981.         public virtual T Visit(ExprNode node)
  1982.         {
  1983.             return Visit((AbstractNode) node);
  1984.         }
  1985.     }
  1986.  
  1987.  
  1988.     public abstract partial class AbstractVisitor
  1989.     {
  1990.         public virtual void Visit(ExprNode node)
  1991.         {
  1992.             Visit((AbstractNode) node);
  1993.         }
  1994.     }
  1995. }
  1996.  
  1997.  
  1998.  
  1999. namespace GSSharp.Syntax.Ast
  2000. {
  2001.     public partial class AssignmentExprNode : ExprNode
  2002.     {
  2003.  
  2004.  
  2005.         public ExprNode Target {
  2006.             get { return target.Get(); }
  2007.             set { this.target.Set(value); }
  2008.         }
  2009.         private readonly NodeCell<ExprNode> target;
  2010.  
  2011.  
  2012.         public ExprNode Source {
  2013.             get { return source.Get(); }
  2014.             set { this.source.Set(value); }
  2015.         }
  2016.         private readonly NodeCell<ExprNode> source;
  2017.  
  2018.  
  2019.  
  2020.         public AssignmentExprNode(ExprNode target = default(ExprNode), ExprNode source = default(ExprNode))
  2021.             : base()
  2022.         {
  2023.  
  2024.  
  2025.             this.target = new NodeCell<ExprNode>(this);
  2026.             this.target.Set(target);
  2027.  
  2028.             this.source = new NodeCell<ExprNode>(this);
  2029.             this.source.Set(source);
  2030.  
  2031.  
  2032.         }
  2033.  
  2034.         public AssignmentExprNode(AssignmentExprNode other)
  2035.             : base(other)
  2036.         {
  2037.  
  2038.             this.target = new NodeCell<ExprNode>(this, other.target);
  2039.  
  2040.             this.source = new NodeCell<ExprNode>(this, other.source);
  2041.  
  2042.         }
  2043.  
  2044.         public override void VisitChildren(Action<AbstractNode> action)
  2045.         {
  2046.             base.VisitChildren(action);
  2047.  
  2048.             target.Accept(action);
  2049.  
  2050.             source.Accept(action);
  2051.  
  2052.         }
  2053.  
  2054.         public override T Accept<T>(AbstractVisitor<T> visitor)
  2055.         {
  2056.             return visitor.Visit(this);
  2057.         }
  2058.  
  2059.         public override void Accept(AbstractVisitor visitor)
  2060.         {
  2061.             visitor.Visit(this);
  2062.         }
  2063.     }
  2064.  
  2065.  
  2066.     public abstract partial class AbstractVisitor<T>
  2067.     {
  2068.         public virtual T Visit(AssignmentExprNode node)
  2069.         {
  2070.             return Visit((ExprNode) node);
  2071.         }
  2072.     }
  2073.  
  2074.  
  2075.     public abstract partial class AbstractVisitor
  2076.     {
  2077.         public virtual void Visit(AssignmentExprNode node)
  2078.         {
  2079.             Visit((ExprNode) node);
  2080.         }
  2081.     }
  2082. }
  2083.  
  2084.  
  2085.  
  2086. namespace GSSharp.Syntax.Ast
  2087. {
  2088.     public partial class BinaryExprNode : ExprNode
  2089.     {
  2090.  
  2091.  
  2092.         public ExprNode Left {
  2093.             get { return left.Get(); }
  2094.             set { this.left.Set(value); }
  2095.         }
  2096.         private readonly NodeCell<ExprNode> left;
  2097.  
  2098.  
  2099.         public ExprNode Right {
  2100.             get { return right.Get(); }
  2101.             set { this.right.Set(value); }
  2102.         }
  2103.         private readonly NodeCell<ExprNode> right;
  2104.  
  2105.  
  2106.  
  2107.         public BinaryExprNode(ExprNode left = default(ExprNode), ExprNode right = default(ExprNode))
  2108.             : base()
  2109.         {
  2110.  
  2111.  
  2112.             this.left = new NodeCell<ExprNode>(this);
  2113.             this.left.Set(left);
  2114.  
  2115.             this.right = new NodeCell<ExprNode>(this);
  2116.             this.right.Set(right);
  2117.  
  2118.  
  2119.         }
  2120.  
  2121.         public BinaryExprNode(BinaryExprNode other)
  2122.             : base(other)
  2123.         {
  2124.  
  2125.             this.left = new NodeCell<ExprNode>(this, other.left);
  2126.  
  2127.             this.right = new NodeCell<ExprNode>(this, other.right);
  2128.  
  2129.         }
  2130.  
  2131.         public override void VisitChildren(Action<AbstractNode> action)
  2132.         {
  2133.             base.VisitChildren(action);
  2134.  
  2135.             left.Accept(action);
  2136.  
  2137.             right.Accept(action);
  2138.  
  2139.         }
  2140.  
  2141.         public override T Accept<T>(AbstractVisitor<T> visitor)
  2142.         {
  2143.             return visitor.Visit(this);
  2144.         }
  2145.  
  2146.         public override void Accept(AbstractVisitor visitor)
  2147.         {
  2148.             visitor.Visit(this);
  2149.         }
  2150.     }
  2151.  
  2152.  
  2153.     public abstract partial class AbstractVisitor<T>
  2154.     {
  2155.         public virtual T Visit(BinaryExprNode node)
  2156.         {
  2157.             return Visit((ExprNode) node);
  2158.         }
  2159.     }
  2160.  
  2161.  
  2162.     public abstract partial class AbstractVisitor
  2163.     {
  2164.         public virtual void Visit(BinaryExprNode node)
  2165.         {
  2166.             Visit((ExprNode) node);
  2167.         }
  2168.     }
  2169. }
  2170.  
  2171.  
  2172.  
  2173. namespace GSSharp.Syntax.Ast
  2174. {
  2175.     public partial class UnaryExprNode : ExprNode
  2176.     {
  2177.  
  2178.  
  2179.         public ExprNode Inner {
  2180.             get { return inner.Get(); }
  2181.             set { this.inner.Set(value); }
  2182.         }
  2183.         private readonly NodeCell<ExprNode> inner;
  2184.  
  2185.  
  2186.  
  2187.         public UnaryExprNode(ExprNode inner = default(ExprNode))
  2188.             : base()
  2189.         {
  2190.  
  2191.  
  2192.             this.inner = new NodeCell<ExprNode>(this);
  2193.             this.inner.Set(inner);
  2194.  
  2195.  
  2196.         }
  2197.  
  2198.         public UnaryExprNode(UnaryExprNode other)
  2199.             : base(other)
  2200.         {
  2201.  
  2202.             this.inner = new NodeCell<ExprNode>(this, other.inner);
  2203.  
  2204.         }
  2205.  
  2206.         public override void VisitChildren(Action<AbstractNode> action)
  2207.         {
  2208.             base.VisitChildren(action);
  2209.  
  2210.             inner.Accept(action);
  2211.  
  2212.         }
  2213.  
  2214.         public override T Accept<T>(AbstractVisitor<T> visitor)
  2215.         {
  2216.             return visitor.Visit(this);
  2217.         }
  2218.  
  2219.         public override void Accept(AbstractVisitor visitor)
  2220.         {
  2221.             visitor.Visit(this);
  2222.         }
  2223.     }
  2224.  
  2225.  
  2226.     public abstract partial class AbstractVisitor<T>
  2227.     {
  2228.         public virtual T Visit(UnaryExprNode node)
  2229.         {
  2230.             return Visit((ExprNode) node);
  2231.         }
  2232.     }
  2233.  
  2234.  
  2235.     public abstract partial class AbstractVisitor
  2236.     {
  2237.         public virtual void Visit(UnaryExprNode node)
  2238.         {
  2239.             Visit((ExprNode) node);
  2240.         }
  2241.     }
  2242. }
  2243.  
  2244.  
  2245.  
  2246. namespace GSSharp.Syntax.Ast
  2247. {
  2248.     public partial class ConstantExprNode : ExprNode
  2249.     {
  2250.  
  2251.         public string Value { get; set; }
  2252.  
  2253.  
  2254.  
  2255.         public ConstantExprNode(string value = default(string))
  2256.             : base()
  2257.         {
  2258.  
  2259.             this.Value = value;
  2260.  
  2261.  
  2262.  
  2263.         }
  2264.  
  2265.         public ConstantExprNode(ConstantExprNode other)
  2266.             : base(other)
  2267.         {
  2268.  
  2269.             this.Value = global::GSSharp.Syntax.Ast.Helper.CloneProp(other.Value);
  2270.  
  2271.         }
  2272.  
  2273.         public override void VisitChildren(Action<AbstractNode> action)
  2274.         {
  2275.             base.VisitChildren(action);
  2276.  
  2277.         }
  2278.  
  2279.         public override T Accept<T>(AbstractVisitor<T> visitor)
  2280.         {
  2281.             return visitor.Visit(this);
  2282.         }
  2283.  
  2284.         public override void Accept(AbstractVisitor visitor)
  2285.         {
  2286.             visitor.Visit(this);
  2287.         }
  2288.     }
  2289.  
  2290.  
  2291.     public abstract partial class AbstractVisitor<T>
  2292.     {
  2293.         public virtual T Visit(ConstantExprNode node)
  2294.         {
  2295.             return Visit((ExprNode) node);
  2296.         }
  2297.     }
  2298.  
  2299.  
  2300.     public abstract partial class AbstractVisitor
  2301.     {
  2302.         public virtual void Visit(ConstantExprNode node)
  2303.         {
  2304.             Visit((ExprNode) node);
  2305.         }
  2306.     }
  2307. }
  2308.  
  2309.  
  2310.  
  2311. namespace GSSharp.Syntax.Ast
  2312. {
  2313.     public partial class NameExprNode : ExprNode
  2314.     {
  2315.  
  2316.         public string Name { get; set; }
  2317.  
  2318.  
  2319.  
  2320.         public NameExprNode(string name = default(string))
  2321.             : base()
  2322.         {
  2323.  
  2324.             this.Name = name;
  2325.  
  2326.  
  2327.  
  2328.         }
  2329.  
  2330.         public NameExprNode(NameExprNode other)
  2331.             : base(other)
  2332.         {
  2333.  
  2334.             this.Name = global::GSSharp.Syntax.Ast.Helper.CloneProp(other.Name);
  2335.  
  2336.         }
  2337.  
  2338.         public override void VisitChildren(Action<AbstractNode> action)
  2339.         {
  2340.             base.VisitChildren(action);
  2341.  
  2342.         }
  2343.  
  2344.         public override T Accept<T>(AbstractVisitor<T> visitor)
  2345.         {
  2346.             return visitor.Visit(this);
  2347.         }
  2348.  
  2349.         public override void Accept(AbstractVisitor visitor)
  2350.         {
  2351.             visitor.Visit(this);
  2352.         }
  2353.     }
  2354.  
  2355.  
  2356.     public abstract partial class AbstractVisitor<T>
  2357.     {
  2358.         public virtual T Visit(NameExprNode node)
  2359.         {
  2360.             return Visit((ExprNode) node);
  2361.         }
  2362.     }
  2363.  
  2364.  
  2365.     public abstract partial class AbstractVisitor
  2366.     {
  2367.         public virtual void Visit(NameExprNode node)
  2368.         {
  2369.             Visit((ExprNode) node);
  2370.         }
  2371.     }
  2372. }
  2373.  
  2374.  
  2375.  
  2376. namespace GSSharp.Syntax.Ast
  2377. {
  2378.     public partial class IndexExprNode : ExprNode
  2379.     {
  2380.  
  2381.  
  2382.         public ExprNode Array {
  2383.             get { return array.Get(); }
  2384.             set { this.array.Set(value); }
  2385.         }
  2386.         private readonly NodeCell<ExprNode> array;
  2387.  
  2388.  
  2389.         public ExprNode Index {
  2390.             get { return index.Get(); }
  2391.             set { this.index.Set(value); }
  2392.         }
  2393.         private readonly NodeCell<ExprNode> index;
  2394.  
  2395.  
  2396.  
  2397.         public IndexExprNode(ExprNode array = default(ExprNode), ExprNode index = default(ExprNode))
  2398.             : base()
  2399.         {
  2400.  
  2401.  
  2402.             this.array = new NodeCell<ExprNode>(this);
  2403.             this.array.Set(array);
  2404.  
  2405.             this.index = new NodeCell<ExprNode>(this);
  2406.             this.index.Set(index);
  2407.  
  2408.  
  2409.         }
  2410.  
  2411.         public IndexExprNode(IndexExprNode other)
  2412.             : base(other)
  2413.         {
  2414.  
  2415.             this.array = new NodeCell<ExprNode>(this, other.array);
  2416.  
  2417.             this.index = new NodeCell<ExprNode>(this, other.index);
  2418.  
  2419.         }
  2420.  
  2421.         public override void VisitChildren(Action<AbstractNode> action)
  2422.         {
  2423.             base.VisitChildren(action);
  2424.  
  2425.             array.Accept(action);
  2426.  
  2427.             index.Accept(action);
  2428.  
  2429.         }
  2430.  
  2431.         public override T Accept<T>(AbstractVisitor<T> visitor)
  2432.         {
  2433.             return visitor.Visit(this);
  2434.         }
  2435.  
  2436.         public override void Accept(AbstractVisitor visitor)
  2437.         {
  2438.             visitor.Visit(this);
  2439.         }
  2440.     }
  2441.  
  2442.  
  2443.     public abstract partial class AbstractVisitor<T>
  2444.     {
  2445.         public virtual T Visit(IndexExprNode node)
  2446.         {
  2447.             return Visit((ExprNode) node);
  2448.         }
  2449.     }
  2450.  
  2451.  
  2452.     public abstract partial class AbstractVisitor
  2453.     {
  2454.         public virtual void Visit(IndexExprNode node)
  2455.         {
  2456.             Visit((ExprNode) node);
  2457.         }
  2458.     }
  2459. }
  2460.  
  2461.  
  2462.  
  2463. namespace GSSharp.Syntax.Ast
  2464. {
  2465.     public partial class IndexRangeExprNode : ExprNode
  2466.     {
  2467.  
  2468.  
  2469.         public ExprNode Array {
  2470.             get { return array.Get(); }
  2471.             set { this.array.Set(value); }
  2472.         }
  2473.         private readonly NodeCell<ExprNode> array;
  2474.  
  2475.  
  2476.         public ExprNode Start {
  2477.             get { return start.Get(); }
  2478.             set { this.start.Set(value); }
  2479.         }
  2480.         private readonly NodeCell<ExprNode> start;
  2481.  
  2482.  
  2483.         public ExprNode End {
  2484.             get { return end.Get(); }
  2485.             set { this.end.Set(value); }
  2486.         }
  2487.         private readonly NodeCell<ExprNode> end;
  2488.  
  2489.  
  2490.  
  2491.         public IndexRangeExprNode(ExprNode array = default(ExprNode), ExprNode start = default(ExprNode), ExprNode end = default(ExprNode))
  2492.             : base()
  2493.         {
  2494.  
  2495.  
  2496.             this.array = new NodeCell<ExprNode>(this);
  2497.             this.array.Set(array);
  2498.  
  2499.             this.start = new NodeCell<ExprNode>(this);
  2500.             this.start.Set(start);
  2501.  
  2502.             this.end = new NodeCell<ExprNode>(this);
  2503.             this.end.Set(end);
  2504.  
  2505.  
  2506.         }
  2507.  
  2508.         public IndexRangeExprNode(IndexRangeExprNode other)
  2509.             : base(other)
  2510.         {
  2511.  
  2512.             this.array = new NodeCell<ExprNode>(this, other.array);
  2513.  
  2514.             this.start = new NodeCell<ExprNode>(this, other.start);
  2515.  
  2516.             this.end = new NodeCell<ExprNode>(this, other.end);
  2517.  
  2518.         }
  2519.  
  2520.         public override void VisitChildren(Action<AbstractNode> action)
  2521.         {
  2522.             base.VisitChildren(action);
  2523.  
  2524.             array.Accept(action);
  2525.  
  2526.             start.Accept(action);
  2527.  
  2528.             end.Accept(action);
  2529.  
  2530.         }
  2531.  
  2532.         public override T Accept<T>(AbstractVisitor<T> visitor)
  2533.         {
  2534.             return visitor.Visit(this);
  2535.         }
  2536.  
  2537.         public override void Accept(AbstractVisitor visitor)
  2538.         {
  2539.             visitor.Visit(this);
  2540.         }
  2541.     }
  2542.  
  2543.  
  2544.     public abstract partial class AbstractVisitor<T>
  2545.     {
  2546.         public virtual T Visit(IndexRangeExprNode node)
  2547.         {
  2548.             return Visit((ExprNode) node);
  2549.         }
  2550.     }
  2551.  
  2552.  
  2553.     public abstract partial class AbstractVisitor
  2554.     {
  2555.         public virtual void Visit(IndexRangeExprNode node)
  2556.         {
  2557.             Visit((ExprNode) node);
  2558.         }
  2559.     }
  2560. }
  2561.  
  2562.  
  2563.  
  2564. namespace GSSharp.Syntax.Ast
  2565. {
  2566.     public partial class CastExprNode : ExprNode
  2567.     {
  2568.  
  2569.  
  2570.         public ExprNode Source {
  2571.             get { return source.Get(); }
  2572.             set { this.source.Set(value); }
  2573.         }
  2574.         private readonly NodeCell<ExprNode> source;
  2575.  
  2576.  
  2577.         public TypeNode Type {
  2578.             get { return type.Get(); }
  2579.             set { this.type.Set(value); }
  2580.         }
  2581.         private readonly NodeCell<TypeNode> type;
  2582.  
  2583.  
  2584.  
  2585.         public CastExprNode(ExprNode source = default(ExprNode), TypeNode type = default(TypeNode))
  2586.             : base()
  2587.         {
  2588.  
  2589.  
  2590.             this.source = new NodeCell<ExprNode>(this);
  2591.             this.source.Set(source);
  2592.  
  2593.             this.type = new NodeCell<TypeNode>(this);
  2594.             this.type.Set(type);
  2595.  
  2596.  
  2597.         }
  2598.  
  2599.         public CastExprNode(CastExprNode other)
  2600.             : base(other)
  2601.         {
  2602.  
  2603.             this.source = new NodeCell<ExprNode>(this, other.source);
  2604.  
  2605.             this.type = new NodeCell<TypeNode>(this, other.type);
  2606.  
  2607.         }
  2608.  
  2609.         public override void VisitChildren(Action<AbstractNode> action)
  2610.         {
  2611.             base.VisitChildren(action);
  2612.  
  2613.             source.Accept(action);
  2614.  
  2615.             type.Accept(action);
  2616.  
  2617.         }
  2618.  
  2619.         public override T Accept<T>(AbstractVisitor<T> visitor)
  2620.         {
  2621.             return visitor.Visit(this);
  2622.         }
  2623.  
  2624.         public override void Accept(AbstractVisitor visitor)
  2625.         {
  2626.             visitor.Visit(this);
  2627.         }
  2628.     }
  2629.  
  2630.  
  2631.     public abstract partial class AbstractVisitor<T>
  2632.     {
  2633.         public virtual T Visit(CastExprNode node)
  2634.         {
  2635.             return Visit((ExprNode) node);
  2636.         }
  2637.     }
  2638.  
  2639.  
  2640.     public abstract partial class AbstractVisitor
  2641.     {
  2642.         public virtual void Visit(CastExprNode node)
  2643.         {
  2644.             Visit((ExprNode) node);
  2645.         }
  2646.     }
  2647. }
  2648.  
  2649.  
  2650.  
  2651. namespace GSSharp.Syntax.Ast
  2652. {
  2653.     public partial class IsClassExprNode : ExprNode
  2654.     {
  2655.  
  2656.  
  2657.         public ExprNode Source {
  2658.             get { return source.Get(); }
  2659.             set { this.source.Set(value); }
  2660.         }
  2661.         private readonly NodeCell<ExprNode> source;
  2662.  
  2663.  
  2664.         public TypeNode Type {
  2665.             get { return type.Get(); }
  2666.             set { this.type.Set(value); }
  2667.         }
  2668.         private readonly NodeCell<TypeNode> type;
  2669.  
  2670.  
  2671.  
  2672.         public IsClassExprNode(ExprNode source = default(ExprNode), TypeNode type = default(TypeNode))
  2673.             : base()
  2674.         {
  2675.  
  2676.  
  2677.             this.source = new NodeCell<ExprNode>(this);
  2678.             this.source.Set(source);
  2679.  
  2680.             this.type = new NodeCell<TypeNode>(this);
  2681.             this.type.Set(type);
  2682.  
  2683.  
  2684.         }
  2685.  
  2686.         public IsClassExprNode(IsClassExprNode other)
  2687.             : base(other)
  2688.         {
  2689.  
  2690.             this.source = new NodeCell<ExprNode>(this, other.source);
  2691.  
  2692.             this.type = new NodeCell<TypeNode>(this, other.type);
  2693.  
  2694.         }
  2695.  
  2696.         public override void VisitChildren(Action<AbstractNode> action)
  2697.         {
  2698.             base.VisitChildren(action);
  2699.  
  2700.             source.Accept(action);
  2701.  
  2702.             type.Accept(action);
  2703.  
  2704.         }
  2705.  
  2706.         public override T Accept<T>(AbstractVisitor<T> visitor)
  2707.         {
  2708.             return visitor.Visit(this);
  2709.         }
  2710.  
  2711.         public override void Accept(AbstractVisitor visitor)
  2712.         {
  2713.             visitor.Visit(this);
  2714.         }
  2715.     }
  2716.  
  2717.  
  2718.     public abstract partial class AbstractVisitor<T>
  2719.     {
  2720.         public virtual T Visit(IsClassExprNode node)
  2721.         {
  2722.             return Visit((ExprNode) node);
  2723.         }
  2724.     }
  2725.  
  2726.  
  2727.     public abstract partial class AbstractVisitor
  2728.     {
  2729.         public virtual void Visit(IsClassExprNode node)
  2730.         {
  2731.             Visit((ExprNode) node);
  2732.         }
  2733.     }
  2734. }
  2735.  
  2736.  
  2737.  
  2738. namespace GSSharp.Syntax.Ast
  2739. {
  2740.     public partial class CopyExprNode : ExprNode
  2741.     {
  2742.  
  2743.  
  2744.         public ExprNode Target {
  2745.             get { return target.Get(); }
  2746.             set { this.target.Set(value); }
  2747.         }
  2748.         private readonly NodeCell<ExprNode> target;
  2749.  
  2750.  
  2751.         public ExprNode Source {
  2752.             get { return source.Get(); }
  2753.             set { this.source.Set(value); }
  2754.         }
  2755.         private readonly NodeCell<ExprNode> source;
  2756.  
  2757.  
  2758.  
  2759.         public CopyExprNode(ExprNode target = default(ExprNode), ExprNode source = default(ExprNode))
  2760.             : base()
  2761.         {
  2762.  
  2763.  
  2764.             this.target = new NodeCell<ExprNode>(this);
  2765.             this.target.Set(target);
  2766.  
  2767.             this.source = new NodeCell<ExprNode>(this);
  2768.             this.source.Set(source);
  2769.  
  2770.  
  2771.         }
  2772.  
  2773.         public CopyExprNode(CopyExprNode other)
  2774.             : base(other)
  2775.         {
  2776.  
  2777.             this.target = new NodeCell<ExprNode>(this, other.target);
  2778.  
  2779.             this.source = new NodeCell<ExprNode>(this, other.source);
  2780.  
  2781.         }
  2782.  
  2783.         public override void VisitChildren(Action<AbstractNode> action)
  2784.         {
  2785.             base.VisitChildren(action);
  2786.  
  2787.             target.Accept(action);
  2788.  
  2789.             source.Accept(action);
  2790.  
  2791.         }
  2792.  
  2793.         public override T Accept<T>(AbstractVisitor<T> visitor)
  2794.         {
  2795.             return visitor.Visit(this);
  2796.         }
  2797.  
  2798.         public override void Accept(AbstractVisitor visitor)
  2799.         {
  2800.             visitor.Visit(this);
  2801.         }
  2802.     }
  2803.  
  2804.  
  2805.     public abstract partial class AbstractVisitor<T>
  2806.     {
  2807.         public virtual T Visit(CopyExprNode node)
  2808.         {
  2809.             return Visit((ExprNode) node);
  2810.         }
  2811.     }
  2812.  
  2813.  
  2814.     public abstract partial class AbstractVisitor
  2815.     {
  2816.         public virtual void Visit(CopyExprNode node)
  2817.         {
  2818.             Visit((ExprNode) node);
  2819.         }
  2820.     }
  2821. }
  2822.  
  2823.  
  2824.  
  2825. namespace GSSharp.Syntax.Ast
  2826. {
  2827.     public partial class SizeExprNode : ExprNode
  2828.     {
  2829.  
  2830.  
  2831.         public ExprNode Target {
  2832.             get { return target.Get(); }
  2833.             set { this.target.Set(value); }
  2834.         }
  2835.         private readonly NodeCell<ExprNode> target;
  2836.  
  2837.  
  2838.  
  2839.         public SizeExprNode(ExprNode target = default(ExprNode))
  2840.             : base()
  2841.         {
  2842.  
  2843.  
  2844.             this.target = new NodeCell<ExprNode>(this);
  2845.             this.target.Set(target);
  2846.  
  2847.  
  2848.         }
  2849.  
  2850.         public SizeExprNode(SizeExprNode other)
  2851.             : base(other)
  2852.         {
  2853.  
  2854.             this.target = new NodeCell<ExprNode>(this, other.target);
  2855.  
  2856.         }
  2857.  
  2858.         public override void VisitChildren(Action<AbstractNode> action)
  2859.         {
  2860.             base.VisitChildren(action);
  2861.  
  2862.             target.Accept(action);
  2863.  
  2864.         }
  2865.  
  2866.         public override T Accept<T>(AbstractVisitor<T> visitor)
  2867.         {
  2868.             return visitor.Visit(this);
  2869.         }
  2870.  
  2871.         public override void Accept(AbstractVisitor visitor)
  2872.         {
  2873.             visitor.Visit(this);
  2874.         }
  2875.     }
  2876.  
  2877.  
  2878.     public abstract partial class AbstractVisitor<T>
  2879.     {
  2880.         public virtual T Visit(SizeExprNode node)
  2881.         {
  2882.             return Visit((ExprNode) node);
  2883.         }
  2884.     }
  2885.  
  2886.  
  2887.     public abstract partial class AbstractVisitor
  2888.     {
  2889.         public virtual void Visit(SizeExprNode node)
  2890.         {
  2891.             Visit((ExprNode) node);
  2892.         }
  2893.     }
  2894. }
  2895.  
  2896.  
  2897.  
  2898. namespace GSSharp.Syntax.Ast
  2899. {
  2900.     public partial class NewExprNode : ExprNode
  2901.     {
  2902.  
  2903.  
  2904.         public TypeNode Type {
  2905.             get { return type.Get(); }
  2906.             set { this.type.Set(value); }
  2907.         }
  2908.         private readonly NodeCell<TypeNode> type;
  2909.  
  2910.  
  2911.  
  2912.         public IList<ExprNode> Arguments {
  2913.             get { return arguments.GetList(); }
  2914.             set { this.arguments.SetList(value); }
  2915.         }
  2916.         private readonly NodeList<ExprNode> arguments;
  2917.  
  2918.  
  2919.         public NewExprNode(TypeNode type = default(TypeNode), IEnumerable<ExprNode> arguments = default(IEnumerable<ExprNode>))
  2920.             : base()
  2921.         {
  2922.  
  2923.  
  2924.             this.type = new NodeCell<TypeNode>(this);
  2925.             this.type.Set(type);
  2926.  
  2927.  
  2928.             this.arguments = new NodeList<ExprNode>(this);
  2929.             this.arguments.SetList(arguments);
  2930.  
  2931.         }
  2932.  
  2933.         public NewExprNode(NewExprNode other)
  2934.             : base(other)
  2935.         {
  2936.  
  2937.             this.type = new NodeCell<TypeNode>(this, other.type);
  2938.  
  2939.             this.arguments = new NodeList<ExprNode>(this, other.arguments);
  2940.  
  2941.         }
  2942.  
  2943.         public override void VisitChildren(Action<AbstractNode> action)
  2944.         {
  2945.             base.VisitChildren(action);
  2946.  
  2947.             type.Accept(action);
  2948.  
  2949.             arguments.Accept(action);
  2950.  
  2951.         }
  2952.  
  2953.         public override T Accept<T>(AbstractVisitor<T> visitor)
  2954.         {
  2955.             return visitor.Visit(this);
  2956.         }
  2957.  
  2958.         public override void Accept(AbstractVisitor visitor)
  2959.         {
  2960.             visitor.Visit(this);
  2961.         }
  2962.     }
  2963.  
  2964.  
  2965.     public abstract partial class AbstractVisitor<T>
  2966.     {
  2967.         public virtual T Visit(NewExprNode node)
  2968.         {
  2969.             return Visit((ExprNode) node);
  2970.         }
  2971.     }
  2972.  
  2973.  
  2974.     public abstract partial class AbstractVisitor
  2975.     {
  2976.         public virtual void Visit(NewExprNode node)
  2977.         {
  2978.             Visit((ExprNode) node);
  2979.         }
  2980.     }
  2981. }
  2982.  
  2983.  
  2984.  
  2985. namespace GSSharp.Syntax.Ast
  2986. {
  2987.     public partial class NewArrayExprNode : ExprNode
  2988.     {
  2989.  
  2990.  
  2991.         public TypeNode Type {
  2992.             get { return type.Get(); }
  2993.             set { this.type.Set(value); }
  2994.         }
  2995.         private readonly NodeCell<TypeNode> type;
  2996.  
  2997.  
  2998.  
  2999.         public IList<ExprNode> Length {
  3000.             get { return length.GetList(); }
  3001.             set { this.length.SetList(value); }
  3002.         }
  3003.         private readonly NodeList<ExprNode> length;
  3004.  
  3005.  
  3006.         public NewArrayExprNode(TypeNode type = default(TypeNode), IEnumerable<ExprNode> length = default(IEnumerable<ExprNode>))
  3007.             : base()
  3008.         {
  3009.  
  3010.  
  3011.             this.type = new NodeCell<TypeNode>(this);
  3012.             this.type.Set(type);
  3013.  
  3014.  
  3015.             this.length = new NodeList<ExprNode>(this);
  3016.             this.length.SetList(length);
  3017.  
  3018.         }
  3019.  
  3020.         public NewArrayExprNode(NewArrayExprNode other)
  3021.             : base(other)
  3022.         {
  3023.  
  3024.             this.type = new NodeCell<TypeNode>(this, other.type);
  3025.  
  3026.             this.length = new NodeList<ExprNode>(this, other.length);
  3027.  
  3028.         }
  3029.  
  3030.         public override void VisitChildren(Action<AbstractNode> action)
  3031.         {
  3032.             base.VisitChildren(action);
  3033.  
  3034.             type.Accept(action);
  3035.  
  3036.             length.Accept(action);
  3037.  
  3038.         }
  3039.  
  3040.         public override T Accept<T>(AbstractVisitor<T> visitor)
  3041.         {
  3042.             return visitor.Visit(this);
  3043.         }
  3044.  
  3045.         public override void Accept(AbstractVisitor visitor)
  3046.         {
  3047.             visitor.Visit(this);
  3048.         }
  3049.     }
  3050.  
  3051.  
  3052.     public abstract partial class AbstractVisitor<T>
  3053.     {
  3054.         public virtual T Visit(NewArrayExprNode node)
  3055.         {
  3056.             return Visit((ExprNode) node);
  3057.         }
  3058.     }
  3059.  
  3060.  
  3061.     public abstract partial class AbstractVisitor
  3062.     {
  3063.         public virtual void Visit(NewArrayExprNode node)
  3064.         {
  3065.             Visit((ExprNode) node);
  3066.         }
  3067.     }
  3068. }
  3069.  
  3070.  
  3071.  
  3072. namespace GSSharp.Syntax.Ast
  3073. {
  3074.     public partial class MemberAccessExprNode : ExprNode
  3075.     {
  3076.  
  3077.         public string Member { get; set; }
  3078.  
  3079.  
  3080.         public ExprNode Target {
  3081.             get { return target.Get(); }
  3082.             set { this.target.Set(value); }
  3083.         }
  3084.         private readonly NodeCell<ExprNode> target;
  3085.  
  3086.  
  3087.  
  3088.         public MemberAccessExprNode(ExprNode target = default(ExprNode), string member = default(string))
  3089.             : base()
  3090.         {
  3091.  
  3092.             this.Member = member;
  3093.  
  3094.  
  3095.             this.target = new NodeCell<ExprNode>(this);
  3096.             this.target.Set(target);
  3097.  
  3098.  
  3099.         }
  3100.  
  3101.         public MemberAccessExprNode(MemberAccessExprNode other)
  3102.             : base(other)
  3103.         {
  3104.  
  3105.             this.target = new NodeCell<ExprNode>(this, other.target);
  3106.  
  3107.             this.Member = global::GSSharp.Syntax.Ast.Helper.CloneProp(other.Member);
  3108.  
  3109.         }
  3110.  
  3111.         public override void VisitChildren(Action<AbstractNode> action)
  3112.         {
  3113.             base.VisitChildren(action);
  3114.  
  3115.             target.Accept(action);
  3116.  
  3117.         }
  3118.  
  3119.         public override T Accept<T>(AbstractVisitor<T> visitor)
  3120.         {
  3121.             return visitor.Visit(this);
  3122.         }
  3123.  
  3124.         public override void Accept(AbstractVisitor visitor)
  3125.         {
  3126.             visitor.Visit(this);
  3127.         }
  3128.     }
  3129.  
  3130.  
  3131.     public abstract partial class AbstractVisitor<T>
  3132.     {
  3133.         public virtual T Visit(MemberAccessExprNode node)
  3134.         {
  3135.             return Visit((ExprNode) node);
  3136.         }
  3137.     }
  3138.  
  3139.  
  3140.     public abstract partial class AbstractVisitor
  3141.     {
  3142.         public virtual void Visit(MemberAccessExprNode node)
  3143.         {
  3144.             Visit((ExprNode) node);
  3145.         }
  3146.     }
  3147. }
  3148.  
  3149.  
  3150.  
  3151. namespace GSSharp.Syntax.Ast
  3152. {
  3153.     public partial class MethodCallExprNode : ExprNode
  3154.     {
  3155.  
  3156.  
  3157.         public ExprNode Target {
  3158.             get { return target.Get(); }
  3159.             set { this.target.Set(value); }
  3160.         }
  3161.         private readonly NodeCell<ExprNode> target;
  3162.  
  3163.  
  3164.  
  3165.         public IList<ExprNode> Arguments {
  3166.             get { return arguments.GetList(); }
  3167.             set { this.arguments.SetList(value); }
  3168.         }
  3169.         private readonly NodeList<ExprNode> arguments;
  3170.  
  3171.  
  3172.         public MethodCallExprNode(ExprNode target = default(ExprNode), IEnumerable<ExprNode> arguments = default(IEnumerable<ExprNode>))
  3173.             : base()
  3174.         {
  3175.  
  3176.  
  3177.             this.target = new NodeCell<ExprNode>(this);
  3178.             this.target.Set(target);
  3179.  
  3180.  
  3181.             this.arguments = new NodeList<ExprNode>(this);
  3182.             this.arguments.SetList(arguments);
  3183.  
  3184.         }
  3185.  
  3186.         public MethodCallExprNode(MethodCallExprNode other)
  3187.             : base(other)
  3188.         {
  3189.  
  3190.             this.target = new NodeCell<ExprNode>(this, other.target);
  3191.  
  3192.             this.arguments = new NodeList<ExprNode>(this, other.arguments);
  3193.  
  3194.         }
  3195.  
  3196.         public override void VisitChildren(Action<AbstractNode> action)
  3197.         {
  3198.             base.VisitChildren(action);
  3199.  
  3200.             target.Accept(action);
  3201.  
  3202.             arguments.Accept(action);
  3203.  
  3204.         }
  3205.  
  3206.         public override T Accept<T>(AbstractVisitor<T> visitor)
  3207.         {
  3208.             return visitor.Visit(this);
  3209.         }
  3210.  
  3211.         public override void Accept(AbstractVisitor visitor)
  3212.         {
  3213.             visitor.Visit(this);
  3214.         }
  3215.     }
  3216.  
  3217.  
  3218.     public abstract partial class AbstractVisitor<T>
  3219.     {
  3220.         public virtual T Visit(MethodCallExprNode node)
  3221.         {
  3222.             return Visit((ExprNode) node);
  3223.         }
  3224.     }
  3225.  
  3226.  
  3227.     public abstract partial class AbstractVisitor
  3228.     {
  3229.         public virtual void Visit(MethodCallExprNode node)
  3230.         {
  3231.             Visit((ExprNode) node);
  3232.         }
  3233.     }
  3234. }
  3235.  
  3236.  
  3237.  
  3238. namespace GSSharp.Syntax.Ast
  3239. {
  3240.     public partial class VariableNode : AbstractNode
  3241.     {
  3242.  
  3243.         public string Name { get; set; }
  3244.  
  3245.  
  3246.         public TypeNode Type {
  3247.             get { return type.Get(); }
  3248.             set { this.type.Set(value); }
  3249.         }
  3250.         private readonly NodeCell<TypeNode> type;
  3251.  
  3252.  
  3253.         public ExprNode Initializer {
  3254.             get { return initializer.Get(); }
  3255.             set { this.initializer.Set(value); }
  3256.         }
  3257.         private readonly NodeCell<ExprNode> initializer;
  3258.  
  3259.  
  3260.  
  3261.         public VariableNode(TypeNode type = default(TypeNode), string name = default(string), ExprNode initializer = default(ExprNode))
  3262.             : base()
  3263.         {
  3264.  
  3265.             this.Name = name;
  3266.  
  3267.  
  3268.             this.type = new NodeCell<TypeNode>(this);
  3269.             this.type.Set(type);
  3270.  
  3271.             this.initializer = new NodeCell<ExprNode>(this);
  3272.             this.initializer.Set(initializer);
  3273.  
  3274.  
  3275.         }
  3276.  
  3277.         public VariableNode(VariableNode other)
  3278.             : base(other)
  3279.         {
  3280.  
  3281.             this.type = new NodeCell<TypeNode>(this, other.type);
  3282.  
  3283.             this.Name = global::GSSharp.Syntax.Ast.Helper.CloneProp(other.Name);
  3284.  
  3285.             this.initializer = new NodeCell<ExprNode>(this, other.initializer);
  3286.  
  3287.         }
  3288.  
  3289.         public override void VisitChildren(Action<AbstractNode> action)
  3290.         {
  3291.             base.VisitChildren(action);
  3292.  
  3293.             type.Accept(action);
  3294.  
  3295.             initializer.Accept(action);
  3296.  
  3297.         }
  3298.  
  3299.         public override T Accept<T>(AbstractVisitor<T> visitor)
  3300.         {
  3301.             return visitor.Visit(this);
  3302.         }
  3303.  
  3304.         public override void Accept(AbstractVisitor visitor)
  3305.         {
  3306.             visitor.Visit(this);
  3307.         }
  3308.     }
  3309.  
  3310.  
  3311.     public abstract partial class AbstractVisitor<T>
  3312.     {
  3313.         public virtual T Visit(VariableNode node)
  3314.         {
  3315.             return Visit((AbstractNode) node);
  3316.         }
  3317.     }
  3318.  
  3319.  
  3320.     public abstract partial class AbstractVisitor
  3321.     {
  3322.         public virtual void Visit(VariableNode node)
  3323.         {
  3324.             Visit((AbstractNode) node);
  3325.         }
  3326.     }
  3327. }
  3328.  
  3329.  
  3330.  
  3331. namespace GSSharp.Syntax.Ast
  3332. {
  3333.     public abstract partial class TypeNode : AbstractNode
  3334.     {
  3335.  
  3336.  
  3337.  
  3338.         public TypeNode()
  3339.             : base()
  3340.         {
  3341.  
  3342.  
  3343.  
  3344.         }
  3345.  
  3346.         public TypeNode(TypeNode other)
  3347.             : base(other)
  3348.         {
  3349.  
  3350.         }
  3351.  
  3352.         public override void VisitChildren(Action<AbstractNode> action)
  3353.         {
  3354.             base.VisitChildren(action);
  3355.  
  3356.         }
  3357.  
  3358.         public override T Accept<T>(AbstractVisitor<T> visitor)
  3359.         {
  3360.             return visitor.Visit(this);
  3361.         }
  3362.  
  3363.         public override void Accept(AbstractVisitor visitor)
  3364.         {
  3365.             visitor.Visit(this);
  3366.         }
  3367.     }
  3368.  
  3369.  
  3370.     public abstract partial class AbstractVisitor<T>
  3371.     {
  3372.         public virtual T Visit(TypeNode node)
  3373.         {
  3374.             return Visit((AbstractNode) node);
  3375.         }
  3376.     }
  3377.  
  3378.  
  3379.     public abstract partial class AbstractVisitor
  3380.     {
  3381.         public virtual void Visit(TypeNode node)
  3382.         {
  3383.             Visit((AbstractNode) node);
  3384.         }
  3385.     }
  3386. }
  3387.  
  3388.  
  3389.  
  3390. namespace GSSharp.Syntax.Ast
  3391. {
  3392.     public partial class PrimitiveTypeNode : TypeNode
  3393.     {
  3394.  
  3395.         public string Name { get; set; }
  3396.  
  3397.  
  3398.  
  3399.         public PrimitiveTypeNode(string name = default(string))
  3400.             : base()
  3401.         {
  3402.  
  3403.             this.Name = name;
  3404.  
  3405.  
  3406.  
  3407.         }
  3408.  
  3409.         public PrimitiveTypeNode(PrimitiveTypeNode other)
  3410.             : base(other)
  3411.         {
  3412.  
  3413.             this.Name = global::GSSharp.Syntax.Ast.Helper.CloneProp(other.Name);
  3414.  
  3415.         }
  3416.  
  3417.         public override void VisitChildren(Action<AbstractNode> action)
  3418.         {
  3419.             base.VisitChildren(action);
  3420.  
  3421.         }
  3422.  
  3423.         public override T Accept<T>(AbstractVisitor<T> visitor)
  3424.         {
  3425.             return visitor.Visit(this);
  3426.         }
  3427.  
  3428.         public override void Accept(AbstractVisitor visitor)
  3429.         {
  3430.             visitor.Visit(this);
  3431.         }
  3432.     }
  3433.  
  3434.  
  3435.     public abstract partial class AbstractVisitor<T>
  3436.     {
  3437.         public virtual T Visit(PrimitiveTypeNode node)
  3438.         {
  3439.             return Visit((TypeNode) node);
  3440.         }
  3441.     }
  3442.  
  3443.  
  3444.     public abstract partial class AbstractVisitor
  3445.     {
  3446.         public virtual void Visit(PrimitiveTypeNode node)
  3447.         {
  3448.             Visit((TypeNode) node);
  3449.         }
  3450.     }
  3451. }
  3452.  
  3453.  
  3454.  
  3455. namespace GSSharp.Syntax.Ast
  3456. {
  3457.     public partial class ObjectTypeNode : TypeNode
  3458.     {
  3459.  
  3460.         public string Name { get; set; }
  3461.  
  3462.  
  3463.  
  3464.         public ObjectTypeNode(string name = default(string))
  3465.             : base()
  3466.         {
  3467.  
  3468.             this.Name = name;
  3469.  
  3470.  
  3471.  
  3472.         }
  3473.  
  3474.         public ObjectTypeNode(ObjectTypeNode other)
  3475.             : base(other)
  3476.         {
  3477.  
  3478.             this.Name = global::GSSharp.Syntax.Ast.Helper.CloneProp(other.Name);
  3479.  
  3480.         }
  3481.  
  3482.         public override void VisitChildren(Action<AbstractNode> action)
  3483.         {
  3484.             base.VisitChildren(action);
  3485.  
  3486.         }
  3487.  
  3488.         public override T Accept<T>(AbstractVisitor<T> visitor)
  3489.         {
  3490.             return visitor.Visit(this);
  3491.         }
  3492.  
  3493.         public override void Accept(AbstractVisitor visitor)
  3494.         {
  3495.             visitor.Visit(this);
  3496.         }
  3497.     }
  3498.  
  3499.  
  3500.     public abstract partial class AbstractVisitor<T>
  3501.     {
  3502.         public virtual T Visit(ObjectTypeNode node)
  3503.         {
  3504.             return Visit((TypeNode) node);
  3505.         }
  3506.     }
  3507.  
  3508.  
  3509.     public abstract partial class AbstractVisitor
  3510.     {
  3511.         public virtual void Visit(ObjectTypeNode node)
  3512.         {
  3513.             Visit((TypeNode) node);
  3514.         }
  3515.     }
  3516. }
  3517.  
  3518.  
  3519.  
  3520. namespace GSSharp.Syntax.Ast
  3521. {
  3522.     public partial class ArrayTypeNode : TypeNode
  3523.     {
  3524.  
  3525.  
  3526.         public TypeNode Item {
  3527.             get { return item.Get(); }
  3528.             set { this.item.Set(value); }
  3529.         }
  3530.         private readonly NodeCell<TypeNode> item;
  3531.  
  3532.  
  3533.  
  3534.         public ArrayTypeNode(TypeNode item = default(TypeNode))
  3535.             : base()
  3536.         {
  3537.  
  3538.  
  3539.             this.item = new NodeCell<TypeNode>(this);
  3540.             this.item.Set(item);
  3541.  
  3542.  
  3543.         }
  3544.  
  3545.         public ArrayTypeNode(ArrayTypeNode other)
  3546.             : base(other)
  3547.         {
  3548.  
  3549.             this.item = new NodeCell<TypeNode>(this, other.item);
  3550.  
  3551.         }
  3552.  
  3553.         public override void VisitChildren(Action<AbstractNode> action)
  3554.         {
  3555.             base.VisitChildren(action);
  3556.  
  3557.             item.Accept(action);
  3558.  
  3559.         }
  3560.  
  3561.         public override T Accept<T>(AbstractVisitor<T> visitor)
  3562.         {
  3563.             return visitor.Visit(this);
  3564.         }
  3565.  
  3566.         public override void Accept(AbstractVisitor visitor)
  3567.         {
  3568.             visitor.Visit(this);
  3569.         }
  3570.     }
  3571.  
  3572.  
  3573.     public abstract partial class AbstractVisitor<T>
  3574.     {
  3575.         public virtual T Visit(ArrayTypeNode node)
  3576.         {
  3577.             return Visit((TypeNode) node);
  3578.         }
  3579.     }
  3580.  
  3581.  
  3582.     public abstract partial class AbstractVisitor
  3583.     {
  3584.         public virtual void Visit(ArrayTypeNode node)
  3585.         {
  3586.             Visit((TypeNode) node);
  3587.         }
  3588.     }
  3589. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement