public ExtraIdOrAssignmentRule(TerminalNode comma, IdOrAssignmentRule idOrAssignment,
                                ExtraIdOrAssignmentRule extraIdOrAssign)
 {
     Comma           = Guard.OneOf(() => comma, Token.Comma);
     IdOrAssignment  = Guard.NonNull(() => idOrAssignment);
     ExtraIdOrAssign = extraIdOrAssign;
 }
 public DeclarationStatementRule(TerminalNode dataType, IdOrAssignmentRule idOrAssignment,
                                 ExtraIdOrAssignmentRule extraIdOrAssignment, TerminalNode semicolon)
 {
     DataType            = Guard.OneOf(() => dataType, TokensGroups.DataTypes);
     IdOrAssignment      = Guard.NonNull(() => idOrAssignment);
     ExtraIdOrAssignment = extraIdOrAssignment;
     Semicolon           = Guard.OneOf(() => semicolon, Token.Semicolon);
 }