github.com/bir3/gocompiler@v0.3.205/src/cmd/compile/internal/ir/node_gen.go (about)

     1  // Code generated by mknode.go. DO NOT EDIT.
     2  
     3  package ir
     4  
     5  import "fmt"
     6  
     7  func (n *AddStringExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
     8  func (n *AddStringExpr) copy() Node {
     9  	c := *n
    10  	c.init = copyNodes(c.init)
    11  	c.List = copyNodes(c.List)
    12  	return &c
    13  }
    14  func (n *AddStringExpr) doChildren(do func(Node) bool) bool {
    15  	if doNodes(n.init, do) {
    16  		return true
    17  	}
    18  	if doNodes(n.List, do) {
    19  		return true
    20  	}
    21  	if n.Prealloc != nil && do(n.Prealloc) {
    22  		return true
    23  	}
    24  	return false
    25  }
    26  func (n *AddStringExpr) editChildren(edit func(Node) Node) {
    27  	editNodes(n.init, edit)
    28  	editNodes(n.List, edit)
    29  	if n.Prealloc != nil {
    30  		n.Prealloc = edit(n.Prealloc).(*Name)
    31  	}
    32  }
    33  func (n *AddStringExpr) editChildrenWithHidden(edit func(Node) Node) {
    34  	editNodes(n.init, edit)
    35  	editNodes(n.List, edit)
    36  	if n.Prealloc != nil {
    37  		n.Prealloc = edit(n.Prealloc).(*Name)
    38  	}
    39  }
    40  
    41  func (n *AddrExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
    42  func (n *AddrExpr) copy() Node {
    43  	c := *n
    44  	c.init = copyNodes(c.init)
    45  	return &c
    46  }
    47  func (n *AddrExpr) doChildren(do func(Node) bool) bool {
    48  	if doNodes(n.init, do) {
    49  		return true
    50  	}
    51  	if n.X != nil && do(n.X) {
    52  		return true
    53  	}
    54  	if n.Prealloc != nil && do(n.Prealloc) {
    55  		return true
    56  	}
    57  	return false
    58  }
    59  func (n *AddrExpr) editChildren(edit func(Node) Node) {
    60  	editNodes(n.init, edit)
    61  	if n.X != nil {
    62  		n.X = edit(n.X).(Node)
    63  	}
    64  	if n.Prealloc != nil {
    65  		n.Prealloc = edit(n.Prealloc).(*Name)
    66  	}
    67  }
    68  func (n *AddrExpr) editChildrenWithHidden(edit func(Node) Node) {
    69  	editNodes(n.init, edit)
    70  	if n.X != nil {
    71  		n.X = edit(n.X).(Node)
    72  	}
    73  	if n.Prealloc != nil {
    74  		n.Prealloc = edit(n.Prealloc).(*Name)
    75  	}
    76  }
    77  
    78  func (n *AssignListStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
    79  func (n *AssignListStmt) copy() Node {
    80  	c := *n
    81  	c.init = copyNodes(c.init)
    82  	c.Lhs = copyNodes(c.Lhs)
    83  	c.Rhs = copyNodes(c.Rhs)
    84  	return &c
    85  }
    86  func (n *AssignListStmt) doChildren(do func(Node) bool) bool {
    87  	if doNodes(n.init, do) {
    88  		return true
    89  	}
    90  	if doNodes(n.Lhs, do) {
    91  		return true
    92  	}
    93  	if doNodes(n.Rhs, do) {
    94  		return true
    95  	}
    96  	return false
    97  }
    98  func (n *AssignListStmt) editChildren(edit func(Node) Node) {
    99  	editNodes(n.init, edit)
   100  	editNodes(n.Lhs, edit)
   101  	editNodes(n.Rhs, edit)
   102  }
   103  func (n *AssignListStmt) editChildrenWithHidden(edit func(Node) Node) {
   104  	editNodes(n.init, edit)
   105  	editNodes(n.Lhs, edit)
   106  	editNodes(n.Rhs, edit)
   107  }
   108  
   109  func (n *AssignOpStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   110  func (n *AssignOpStmt) copy() Node {
   111  	c := *n
   112  	c.init = copyNodes(c.init)
   113  	return &c
   114  }
   115  func (n *AssignOpStmt) doChildren(do func(Node) bool) bool {
   116  	if doNodes(n.init, do) {
   117  		return true
   118  	}
   119  	if n.X != nil && do(n.X) {
   120  		return true
   121  	}
   122  	if n.Y != nil && do(n.Y) {
   123  		return true
   124  	}
   125  	return false
   126  }
   127  func (n *AssignOpStmt) editChildren(edit func(Node) Node) {
   128  	editNodes(n.init, edit)
   129  	if n.X != nil {
   130  		n.X = edit(n.X).(Node)
   131  	}
   132  	if n.Y != nil {
   133  		n.Y = edit(n.Y).(Node)
   134  	}
   135  }
   136  func (n *AssignOpStmt) editChildrenWithHidden(edit func(Node) Node) {
   137  	editNodes(n.init, edit)
   138  	if n.X != nil {
   139  		n.X = edit(n.X).(Node)
   140  	}
   141  	if n.Y != nil {
   142  		n.Y = edit(n.Y).(Node)
   143  	}
   144  }
   145  
   146  func (n *AssignStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   147  func (n *AssignStmt) copy() Node {
   148  	c := *n
   149  	c.init = copyNodes(c.init)
   150  	return &c
   151  }
   152  func (n *AssignStmt) doChildren(do func(Node) bool) bool {
   153  	if doNodes(n.init, do) {
   154  		return true
   155  	}
   156  	if n.X != nil && do(n.X) {
   157  		return true
   158  	}
   159  	if n.Y != nil && do(n.Y) {
   160  		return true
   161  	}
   162  	return false
   163  }
   164  func (n *AssignStmt) editChildren(edit func(Node) Node) {
   165  	editNodes(n.init, edit)
   166  	if n.X != nil {
   167  		n.X = edit(n.X).(Node)
   168  	}
   169  	if n.Y != nil {
   170  		n.Y = edit(n.Y).(Node)
   171  	}
   172  }
   173  func (n *AssignStmt) editChildrenWithHidden(edit func(Node) Node) {
   174  	editNodes(n.init, edit)
   175  	if n.X != nil {
   176  		n.X = edit(n.X).(Node)
   177  	}
   178  	if n.Y != nil {
   179  		n.Y = edit(n.Y).(Node)
   180  	}
   181  }
   182  
   183  func (n *BasicLit) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   184  func (n *BasicLit) copy() Node {
   185  	c := *n
   186  	c.init = copyNodes(c.init)
   187  	return &c
   188  }
   189  func (n *BasicLit) doChildren(do func(Node) bool) bool {
   190  	if doNodes(n.init, do) {
   191  		return true
   192  	}
   193  	return false
   194  }
   195  func (n *BasicLit) editChildren(edit func(Node) Node) {
   196  	editNodes(n.init, edit)
   197  }
   198  func (n *BasicLit) editChildrenWithHidden(edit func(Node) Node) {
   199  	editNodes(n.init, edit)
   200  }
   201  
   202  func (n *BinaryExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   203  func (n *BinaryExpr) copy() Node {
   204  	c := *n
   205  	c.init = copyNodes(c.init)
   206  	return &c
   207  }
   208  func (n *BinaryExpr) doChildren(do func(Node) bool) bool {
   209  	if doNodes(n.init, do) {
   210  		return true
   211  	}
   212  	if n.X != nil && do(n.X) {
   213  		return true
   214  	}
   215  	if n.Y != nil && do(n.Y) {
   216  		return true
   217  	}
   218  	return false
   219  }
   220  func (n *BinaryExpr) editChildren(edit func(Node) Node) {
   221  	editNodes(n.init, edit)
   222  	if n.X != nil {
   223  		n.X = edit(n.X).(Node)
   224  	}
   225  	if n.Y != nil {
   226  		n.Y = edit(n.Y).(Node)
   227  	}
   228  }
   229  func (n *BinaryExpr) editChildrenWithHidden(edit func(Node) Node) {
   230  	editNodes(n.init, edit)
   231  	if n.X != nil {
   232  		n.X = edit(n.X).(Node)
   233  	}
   234  	if n.Y != nil {
   235  		n.Y = edit(n.Y).(Node)
   236  	}
   237  	if n.RType != nil {
   238  		n.RType = edit(n.RType).(Node)
   239  	}
   240  }
   241  
   242  func (n *BlockStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   243  func (n *BlockStmt) copy() Node {
   244  	c := *n
   245  	c.init = copyNodes(c.init)
   246  	c.List = copyNodes(c.List)
   247  	return &c
   248  }
   249  func (n *BlockStmt) doChildren(do func(Node) bool) bool {
   250  	if doNodes(n.init, do) {
   251  		return true
   252  	}
   253  	if doNodes(n.List, do) {
   254  		return true
   255  	}
   256  	return false
   257  }
   258  func (n *BlockStmt) editChildren(edit func(Node) Node) {
   259  	editNodes(n.init, edit)
   260  	editNodes(n.List, edit)
   261  }
   262  func (n *BlockStmt) editChildrenWithHidden(edit func(Node) Node) {
   263  	editNodes(n.init, edit)
   264  	editNodes(n.List, edit)
   265  }
   266  
   267  func (n *BranchStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   268  func (n *BranchStmt) copy() Node {
   269  	c := *n
   270  	c.init = copyNodes(c.init)
   271  	return &c
   272  }
   273  func (n *BranchStmt) doChildren(do func(Node) bool) bool {
   274  	if doNodes(n.init, do) {
   275  		return true
   276  	}
   277  	return false
   278  }
   279  func (n *BranchStmt) editChildren(edit func(Node) Node) {
   280  	editNodes(n.init, edit)
   281  }
   282  func (n *BranchStmt) editChildrenWithHidden(edit func(Node) Node) {
   283  	editNodes(n.init, edit)
   284  }
   285  
   286  func (n *CallExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   287  func (n *CallExpr) copy() Node {
   288  	c := *n
   289  	c.init = copyNodes(c.init)
   290  	c.Args = copyNodes(c.Args)
   291  	c.KeepAlive = copyNames(c.KeepAlive)
   292  	return &c
   293  }
   294  func (n *CallExpr) doChildren(do func(Node) bool) bool {
   295  	if doNodes(n.init, do) {
   296  		return true
   297  	}
   298  	if n.X != nil && do(n.X) {
   299  		return true
   300  	}
   301  	if doNodes(n.Args, do) {
   302  		return true
   303  	}
   304  	if doNames(n.KeepAlive, do) {
   305  		return true
   306  	}
   307  	return false
   308  }
   309  func (n *CallExpr) editChildren(edit func(Node) Node) {
   310  	editNodes(n.init, edit)
   311  	if n.X != nil {
   312  		n.X = edit(n.X).(Node)
   313  	}
   314  	editNodes(n.Args, edit)
   315  	editNames(n.KeepAlive, edit)
   316  }
   317  func (n *CallExpr) editChildrenWithHidden(edit func(Node) Node) {
   318  	editNodes(n.init, edit)
   319  	if n.X != nil {
   320  		n.X = edit(n.X).(Node)
   321  	}
   322  	editNodes(n.Args, edit)
   323  	if n.RType != nil {
   324  		n.RType = edit(n.RType).(Node)
   325  	}
   326  	editNames(n.KeepAlive, edit)
   327  }
   328  
   329  func (n *CaseClause) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   330  func (n *CaseClause) copy() Node {
   331  	c := *n
   332  	c.init = copyNodes(c.init)
   333  	c.List = copyNodes(c.List)
   334  	c.RTypes = copyNodes(c.RTypes)
   335  	c.Body = copyNodes(c.Body)
   336  	return &c
   337  }
   338  func (n *CaseClause) doChildren(do func(Node) bool) bool {
   339  	if doNodes(n.init, do) {
   340  		return true
   341  	}
   342  	if n.Var != nil && do(n.Var) {
   343  		return true
   344  	}
   345  	if doNodes(n.List, do) {
   346  		return true
   347  	}
   348  	if doNodes(n.RTypes, do) {
   349  		return true
   350  	}
   351  	if doNodes(n.Body, do) {
   352  		return true
   353  	}
   354  	return false
   355  }
   356  func (n *CaseClause) editChildren(edit func(Node) Node) {
   357  	editNodes(n.init, edit)
   358  	if n.Var != nil {
   359  		n.Var = edit(n.Var).(*Name)
   360  	}
   361  	editNodes(n.List, edit)
   362  	editNodes(n.RTypes, edit)
   363  	editNodes(n.Body, edit)
   364  }
   365  func (n *CaseClause) editChildrenWithHidden(edit func(Node) Node) {
   366  	editNodes(n.init, edit)
   367  	if n.Var != nil {
   368  		n.Var = edit(n.Var).(*Name)
   369  	}
   370  	editNodes(n.List, edit)
   371  	editNodes(n.RTypes, edit)
   372  	editNodes(n.Body, edit)
   373  }
   374  
   375  func (n *ClosureExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   376  func (n *ClosureExpr) copy() Node {
   377  	c := *n
   378  	c.init = copyNodes(c.init)
   379  	return &c
   380  }
   381  func (n *ClosureExpr) doChildren(do func(Node) bool) bool {
   382  	if doNodes(n.init, do) {
   383  		return true
   384  	}
   385  	if n.Prealloc != nil && do(n.Prealloc) {
   386  		return true
   387  	}
   388  	return false
   389  }
   390  func (n *ClosureExpr) editChildren(edit func(Node) Node) {
   391  	editNodes(n.init, edit)
   392  	if n.Prealloc != nil {
   393  		n.Prealloc = edit(n.Prealloc).(*Name)
   394  	}
   395  }
   396  func (n *ClosureExpr) editChildrenWithHidden(edit func(Node) Node) {
   397  	editNodes(n.init, edit)
   398  	if n.Prealloc != nil {
   399  		n.Prealloc = edit(n.Prealloc).(*Name)
   400  	}
   401  }
   402  
   403  func (n *CommClause) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   404  func (n *CommClause) copy() Node {
   405  	c := *n
   406  	c.init = copyNodes(c.init)
   407  	c.Body = copyNodes(c.Body)
   408  	return &c
   409  }
   410  func (n *CommClause) doChildren(do func(Node) bool) bool {
   411  	if doNodes(n.init, do) {
   412  		return true
   413  	}
   414  	if n.Comm != nil && do(n.Comm) {
   415  		return true
   416  	}
   417  	if doNodes(n.Body, do) {
   418  		return true
   419  	}
   420  	return false
   421  }
   422  func (n *CommClause) editChildren(edit func(Node) Node) {
   423  	editNodes(n.init, edit)
   424  	if n.Comm != nil {
   425  		n.Comm = edit(n.Comm).(Node)
   426  	}
   427  	editNodes(n.Body, edit)
   428  }
   429  func (n *CommClause) editChildrenWithHidden(edit func(Node) Node) {
   430  	editNodes(n.init, edit)
   431  	if n.Comm != nil {
   432  		n.Comm = edit(n.Comm).(Node)
   433  	}
   434  	editNodes(n.Body, edit)
   435  }
   436  
   437  func (n *CompLitExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   438  func (n *CompLitExpr) copy() Node {
   439  	c := *n
   440  	c.init = copyNodes(c.init)
   441  	c.List = copyNodes(c.List)
   442  	return &c
   443  }
   444  func (n *CompLitExpr) doChildren(do func(Node) bool) bool {
   445  	if doNodes(n.init, do) {
   446  		return true
   447  	}
   448  	if doNodes(n.List, do) {
   449  		return true
   450  	}
   451  	if n.Prealloc != nil && do(n.Prealloc) {
   452  		return true
   453  	}
   454  	return false
   455  }
   456  func (n *CompLitExpr) editChildren(edit func(Node) Node) {
   457  	editNodes(n.init, edit)
   458  	editNodes(n.List, edit)
   459  	if n.Prealloc != nil {
   460  		n.Prealloc = edit(n.Prealloc).(*Name)
   461  	}
   462  }
   463  func (n *CompLitExpr) editChildrenWithHidden(edit func(Node) Node) {
   464  	editNodes(n.init, edit)
   465  	editNodes(n.List, edit)
   466  	if n.RType != nil {
   467  		n.RType = edit(n.RType).(Node)
   468  	}
   469  	if n.Prealloc != nil {
   470  		n.Prealloc = edit(n.Prealloc).(*Name)
   471  	}
   472  }
   473  
   474  func (n *ConstExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   475  func (n *ConstExpr) copy() Node {
   476  	c := *n
   477  	c.init = copyNodes(c.init)
   478  	return &c
   479  }
   480  func (n *ConstExpr) doChildren(do func(Node) bool) bool {
   481  	if doNodes(n.init, do) {
   482  		return true
   483  	}
   484  	return false
   485  }
   486  func (n *ConstExpr) editChildren(edit func(Node) Node) {
   487  	editNodes(n.init, edit)
   488  }
   489  func (n *ConstExpr) editChildrenWithHidden(edit func(Node) Node) {
   490  	editNodes(n.init, edit)
   491  }
   492  
   493  func (n *ConvExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   494  func (n *ConvExpr) copy() Node {
   495  	c := *n
   496  	c.init = copyNodes(c.init)
   497  	return &c
   498  }
   499  func (n *ConvExpr) doChildren(do func(Node) bool) bool {
   500  	if doNodes(n.init, do) {
   501  		return true
   502  	}
   503  	if n.X != nil && do(n.X) {
   504  		return true
   505  	}
   506  	return false
   507  }
   508  func (n *ConvExpr) editChildren(edit func(Node) Node) {
   509  	editNodes(n.init, edit)
   510  	if n.X != nil {
   511  		n.X = edit(n.X).(Node)
   512  	}
   513  }
   514  func (n *ConvExpr) editChildrenWithHidden(edit func(Node) Node) {
   515  	editNodes(n.init, edit)
   516  	if n.X != nil {
   517  		n.X = edit(n.X).(Node)
   518  	}
   519  	if n.TypeWord != nil {
   520  		n.TypeWord = edit(n.TypeWord).(Node)
   521  	}
   522  	if n.SrcRType != nil {
   523  		n.SrcRType = edit(n.SrcRType).(Node)
   524  	}
   525  	if n.ElemRType != nil {
   526  		n.ElemRType = edit(n.ElemRType).(Node)
   527  	}
   528  	if n.ElemElemRType != nil {
   529  		n.ElemElemRType = edit(n.ElemElemRType).(Node)
   530  	}
   531  }
   532  
   533  func (n *Decl) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   534  func (n *Decl) copy() Node {
   535  	c := *n
   536  	return &c
   537  }
   538  func (n *Decl) doChildren(do func(Node) bool) bool {
   539  	if n.X != nil && do(n.X) {
   540  		return true
   541  	}
   542  	return false
   543  }
   544  func (n *Decl) editChildren(edit func(Node) Node) {
   545  	if n.X != nil {
   546  		n.X = edit(n.X).(*Name)
   547  	}
   548  }
   549  func (n *Decl) editChildrenWithHidden(edit func(Node) Node) {
   550  	if n.X != nil {
   551  		n.X = edit(n.X).(*Name)
   552  	}
   553  }
   554  
   555  func (n *DynamicType) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   556  func (n *DynamicType) copy() Node {
   557  	c := *n
   558  	c.init = copyNodes(c.init)
   559  	return &c
   560  }
   561  func (n *DynamicType) doChildren(do func(Node) bool) bool {
   562  	if doNodes(n.init, do) {
   563  		return true
   564  	}
   565  	if n.RType != nil && do(n.RType) {
   566  		return true
   567  	}
   568  	if n.ITab != nil && do(n.ITab) {
   569  		return true
   570  	}
   571  	return false
   572  }
   573  func (n *DynamicType) editChildren(edit func(Node) Node) {
   574  	editNodes(n.init, edit)
   575  	if n.RType != nil {
   576  		n.RType = edit(n.RType).(Node)
   577  	}
   578  	if n.ITab != nil {
   579  		n.ITab = edit(n.ITab).(Node)
   580  	}
   581  }
   582  func (n *DynamicType) editChildrenWithHidden(edit func(Node) Node) {
   583  	editNodes(n.init, edit)
   584  	if n.RType != nil {
   585  		n.RType = edit(n.RType).(Node)
   586  	}
   587  	if n.ITab != nil {
   588  		n.ITab = edit(n.ITab).(Node)
   589  	}
   590  }
   591  
   592  func (n *DynamicTypeAssertExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   593  func (n *DynamicTypeAssertExpr) copy() Node {
   594  	c := *n
   595  	c.init = copyNodes(c.init)
   596  	return &c
   597  }
   598  func (n *DynamicTypeAssertExpr) doChildren(do func(Node) bool) bool {
   599  	if doNodes(n.init, do) {
   600  		return true
   601  	}
   602  	if n.X != nil && do(n.X) {
   603  		return true
   604  	}
   605  	if n.SrcRType != nil && do(n.SrcRType) {
   606  		return true
   607  	}
   608  	if n.RType != nil && do(n.RType) {
   609  		return true
   610  	}
   611  	if n.ITab != nil && do(n.ITab) {
   612  		return true
   613  	}
   614  	return false
   615  }
   616  func (n *DynamicTypeAssertExpr) editChildren(edit func(Node) Node) {
   617  	editNodes(n.init, edit)
   618  	if n.X != nil {
   619  		n.X = edit(n.X).(Node)
   620  	}
   621  	if n.SrcRType != nil {
   622  		n.SrcRType = edit(n.SrcRType).(Node)
   623  	}
   624  	if n.RType != nil {
   625  		n.RType = edit(n.RType).(Node)
   626  	}
   627  	if n.ITab != nil {
   628  		n.ITab = edit(n.ITab).(Node)
   629  	}
   630  }
   631  func (n *DynamicTypeAssertExpr) editChildrenWithHidden(edit func(Node) Node) {
   632  	editNodes(n.init, edit)
   633  	if n.X != nil {
   634  		n.X = edit(n.X).(Node)
   635  	}
   636  	if n.SrcRType != nil {
   637  		n.SrcRType = edit(n.SrcRType).(Node)
   638  	}
   639  	if n.RType != nil {
   640  		n.RType = edit(n.RType).(Node)
   641  	}
   642  	if n.ITab != nil {
   643  		n.ITab = edit(n.ITab).(Node)
   644  	}
   645  }
   646  
   647  func (n *ForStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   648  func (n *ForStmt) copy() Node {
   649  	c := *n
   650  	c.init = copyNodes(c.init)
   651  	c.Body = copyNodes(c.Body)
   652  	return &c
   653  }
   654  func (n *ForStmt) doChildren(do func(Node) bool) bool {
   655  	if doNodes(n.init, do) {
   656  		return true
   657  	}
   658  	if n.Cond != nil && do(n.Cond) {
   659  		return true
   660  	}
   661  	if n.Post != nil && do(n.Post) {
   662  		return true
   663  	}
   664  	if doNodes(n.Body, do) {
   665  		return true
   666  	}
   667  	return false
   668  }
   669  func (n *ForStmt) editChildren(edit func(Node) Node) {
   670  	editNodes(n.init, edit)
   671  	if n.Cond != nil {
   672  		n.Cond = edit(n.Cond).(Node)
   673  	}
   674  	if n.Post != nil {
   675  		n.Post = edit(n.Post).(Node)
   676  	}
   677  	editNodes(n.Body, edit)
   678  }
   679  func (n *ForStmt) editChildrenWithHidden(edit func(Node) Node) {
   680  	editNodes(n.init, edit)
   681  	if n.Cond != nil {
   682  		n.Cond = edit(n.Cond).(Node)
   683  	}
   684  	if n.Post != nil {
   685  		n.Post = edit(n.Post).(Node)
   686  	}
   687  	editNodes(n.Body, edit)
   688  }
   689  
   690  func (n *Func) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   691  
   692  func (n *GoDeferStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   693  func (n *GoDeferStmt) copy() Node {
   694  	c := *n
   695  	c.init = copyNodes(c.init)
   696  	return &c
   697  }
   698  func (n *GoDeferStmt) doChildren(do func(Node) bool) bool {
   699  	if doNodes(n.init, do) {
   700  		return true
   701  	}
   702  	if n.Call != nil && do(n.Call) {
   703  		return true
   704  	}
   705  	return false
   706  }
   707  func (n *GoDeferStmt) editChildren(edit func(Node) Node) {
   708  	editNodes(n.init, edit)
   709  	if n.Call != nil {
   710  		n.Call = edit(n.Call).(Node)
   711  	}
   712  }
   713  func (n *GoDeferStmt) editChildrenWithHidden(edit func(Node) Node) {
   714  	editNodes(n.init, edit)
   715  	if n.Call != nil {
   716  		n.Call = edit(n.Call).(Node)
   717  	}
   718  }
   719  
   720  func (n *Ident) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   721  func (n *Ident) copy() Node {
   722  	c := *n
   723  	c.init = copyNodes(c.init)
   724  	return &c
   725  }
   726  func (n *Ident) doChildren(do func(Node) bool) bool {
   727  	if doNodes(n.init, do) {
   728  		return true
   729  	}
   730  	return false
   731  }
   732  func (n *Ident) editChildren(edit func(Node) Node) {
   733  	editNodes(n.init, edit)
   734  }
   735  func (n *Ident) editChildrenWithHidden(edit func(Node) Node) {
   736  	editNodes(n.init, edit)
   737  }
   738  
   739  func (n *IfStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   740  func (n *IfStmt) copy() Node {
   741  	c := *n
   742  	c.init = copyNodes(c.init)
   743  	c.Body = copyNodes(c.Body)
   744  	c.Else = copyNodes(c.Else)
   745  	return &c
   746  }
   747  func (n *IfStmt) doChildren(do func(Node) bool) bool {
   748  	if doNodes(n.init, do) {
   749  		return true
   750  	}
   751  	if n.Cond != nil && do(n.Cond) {
   752  		return true
   753  	}
   754  	if doNodes(n.Body, do) {
   755  		return true
   756  	}
   757  	if doNodes(n.Else, do) {
   758  		return true
   759  	}
   760  	return false
   761  }
   762  func (n *IfStmt) editChildren(edit func(Node) Node) {
   763  	editNodes(n.init, edit)
   764  	if n.Cond != nil {
   765  		n.Cond = edit(n.Cond).(Node)
   766  	}
   767  	editNodes(n.Body, edit)
   768  	editNodes(n.Else, edit)
   769  }
   770  func (n *IfStmt) editChildrenWithHidden(edit func(Node) Node) {
   771  	editNodes(n.init, edit)
   772  	if n.Cond != nil {
   773  		n.Cond = edit(n.Cond).(Node)
   774  	}
   775  	editNodes(n.Body, edit)
   776  	editNodes(n.Else, edit)
   777  }
   778  
   779  func (n *IndexExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   780  func (n *IndexExpr) copy() Node {
   781  	c := *n
   782  	c.init = copyNodes(c.init)
   783  	return &c
   784  }
   785  func (n *IndexExpr) doChildren(do func(Node) bool) bool {
   786  	if doNodes(n.init, do) {
   787  		return true
   788  	}
   789  	if n.X != nil && do(n.X) {
   790  		return true
   791  	}
   792  	if n.Index != nil && do(n.Index) {
   793  		return true
   794  	}
   795  	return false
   796  }
   797  func (n *IndexExpr) editChildren(edit func(Node) Node) {
   798  	editNodes(n.init, edit)
   799  	if n.X != nil {
   800  		n.X = edit(n.X).(Node)
   801  	}
   802  	if n.Index != nil {
   803  		n.Index = edit(n.Index).(Node)
   804  	}
   805  }
   806  func (n *IndexExpr) editChildrenWithHidden(edit func(Node) Node) {
   807  	editNodes(n.init, edit)
   808  	if n.X != nil {
   809  		n.X = edit(n.X).(Node)
   810  	}
   811  	if n.Index != nil {
   812  		n.Index = edit(n.Index).(Node)
   813  	}
   814  	if n.RType != nil {
   815  		n.RType = edit(n.RType).(Node)
   816  	}
   817  }
   818  
   819  func (n *InlineMarkStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   820  func (n *InlineMarkStmt) copy() Node {
   821  	c := *n
   822  	c.init = copyNodes(c.init)
   823  	return &c
   824  }
   825  func (n *InlineMarkStmt) doChildren(do func(Node) bool) bool {
   826  	if doNodes(n.init, do) {
   827  		return true
   828  	}
   829  	return false
   830  }
   831  func (n *InlineMarkStmt) editChildren(edit func(Node) Node) {
   832  	editNodes(n.init, edit)
   833  }
   834  func (n *InlineMarkStmt) editChildrenWithHidden(edit func(Node) Node) {
   835  	editNodes(n.init, edit)
   836  }
   837  
   838  func (n *InlinedCallExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   839  func (n *InlinedCallExpr) copy() Node {
   840  	c := *n
   841  	c.init = copyNodes(c.init)
   842  	c.Body = copyNodes(c.Body)
   843  	c.ReturnVars = copyNodes(c.ReturnVars)
   844  	return &c
   845  }
   846  func (n *InlinedCallExpr) doChildren(do func(Node) bool) bool {
   847  	if doNodes(n.init, do) {
   848  		return true
   849  	}
   850  	if doNodes(n.Body, do) {
   851  		return true
   852  	}
   853  	if doNodes(n.ReturnVars, do) {
   854  		return true
   855  	}
   856  	return false
   857  }
   858  func (n *InlinedCallExpr) editChildren(edit func(Node) Node) {
   859  	editNodes(n.init, edit)
   860  	editNodes(n.Body, edit)
   861  	editNodes(n.ReturnVars, edit)
   862  }
   863  func (n *InlinedCallExpr) editChildrenWithHidden(edit func(Node) Node) {
   864  	editNodes(n.init, edit)
   865  	editNodes(n.Body, edit)
   866  	editNodes(n.ReturnVars, edit)
   867  }
   868  
   869  func (n *InstExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   870  func (n *InstExpr) copy() Node {
   871  	c := *n
   872  	c.init = copyNodes(c.init)
   873  	c.Targs = copyNtypes(c.Targs)
   874  	return &c
   875  }
   876  func (n *InstExpr) doChildren(do func(Node) bool) bool {
   877  	if doNodes(n.init, do) {
   878  		return true
   879  	}
   880  	if n.X != nil && do(n.X) {
   881  		return true
   882  	}
   883  	if doNtypes(n.Targs, do) {
   884  		return true
   885  	}
   886  	return false
   887  }
   888  func (n *InstExpr) editChildren(edit func(Node) Node) {
   889  	editNodes(n.init, edit)
   890  	if n.X != nil {
   891  		n.X = edit(n.X).(Node)
   892  	}
   893  	editNtypes(n.Targs, edit)
   894  }
   895  func (n *InstExpr) editChildrenWithHidden(edit func(Node) Node) {
   896  	editNodes(n.init, edit)
   897  	if n.X != nil {
   898  		n.X = edit(n.X).(Node)
   899  	}
   900  	editNtypes(n.Targs, edit)
   901  }
   902  
   903  func (n *JumpTableStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   904  func (n *JumpTableStmt) copy() Node {
   905  	c := *n
   906  	c.init = copyNodes(c.init)
   907  	return &c
   908  }
   909  func (n *JumpTableStmt) doChildren(do func(Node) bool) bool {
   910  	if doNodes(n.init, do) {
   911  		return true
   912  	}
   913  	if n.Idx != nil && do(n.Idx) {
   914  		return true
   915  	}
   916  	return false
   917  }
   918  func (n *JumpTableStmt) editChildren(edit func(Node) Node) {
   919  	editNodes(n.init, edit)
   920  	if n.Idx != nil {
   921  		n.Idx = edit(n.Idx).(Node)
   922  	}
   923  }
   924  func (n *JumpTableStmt) editChildrenWithHidden(edit func(Node) Node) {
   925  	editNodes(n.init, edit)
   926  	if n.Idx != nil {
   927  		n.Idx = edit(n.Idx).(Node)
   928  	}
   929  }
   930  
   931  func (n *KeyExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   932  func (n *KeyExpr) copy() Node {
   933  	c := *n
   934  	c.init = copyNodes(c.init)
   935  	return &c
   936  }
   937  func (n *KeyExpr) doChildren(do func(Node) bool) bool {
   938  	if doNodes(n.init, do) {
   939  		return true
   940  	}
   941  	if n.Key != nil && do(n.Key) {
   942  		return true
   943  	}
   944  	if n.Value != nil && do(n.Value) {
   945  		return true
   946  	}
   947  	return false
   948  }
   949  func (n *KeyExpr) editChildren(edit func(Node) Node) {
   950  	editNodes(n.init, edit)
   951  	if n.Key != nil {
   952  		n.Key = edit(n.Key).(Node)
   953  	}
   954  	if n.Value != nil {
   955  		n.Value = edit(n.Value).(Node)
   956  	}
   957  }
   958  func (n *KeyExpr) editChildrenWithHidden(edit func(Node) Node) {
   959  	editNodes(n.init, edit)
   960  	if n.Key != nil {
   961  		n.Key = edit(n.Key).(Node)
   962  	}
   963  	if n.Value != nil {
   964  		n.Value = edit(n.Value).(Node)
   965  	}
   966  }
   967  
   968  func (n *LabelStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   969  func (n *LabelStmt) copy() Node {
   970  	c := *n
   971  	c.init = copyNodes(c.init)
   972  	return &c
   973  }
   974  func (n *LabelStmt) doChildren(do func(Node) bool) bool {
   975  	if doNodes(n.init, do) {
   976  		return true
   977  	}
   978  	return false
   979  }
   980  func (n *LabelStmt) editChildren(edit func(Node) Node) {
   981  	editNodes(n.init, edit)
   982  }
   983  func (n *LabelStmt) editChildrenWithHidden(edit func(Node) Node) {
   984  	editNodes(n.init, edit)
   985  }
   986  
   987  func (n *LinksymOffsetExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   988  func (n *LinksymOffsetExpr) copy() Node {
   989  	c := *n
   990  	c.init = copyNodes(c.init)
   991  	return &c
   992  }
   993  func (n *LinksymOffsetExpr) doChildren(do func(Node) bool) bool {
   994  	if doNodes(n.init, do) {
   995  		return true
   996  	}
   997  	return false
   998  }
   999  func (n *LinksymOffsetExpr) editChildren(edit func(Node) Node) {
  1000  	editNodes(n.init, edit)
  1001  }
  1002  func (n *LinksymOffsetExpr) editChildrenWithHidden(edit func(Node) Node) {
  1003  	editNodes(n.init, edit)
  1004  }
  1005  
  1006  func (n *LogicalExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1007  func (n *LogicalExpr) copy() Node {
  1008  	c := *n
  1009  	c.init = copyNodes(c.init)
  1010  	return &c
  1011  }
  1012  func (n *LogicalExpr) doChildren(do func(Node) bool) bool {
  1013  	if doNodes(n.init, do) {
  1014  		return true
  1015  	}
  1016  	if n.X != nil && do(n.X) {
  1017  		return true
  1018  	}
  1019  	if n.Y != nil && do(n.Y) {
  1020  		return true
  1021  	}
  1022  	return false
  1023  }
  1024  func (n *LogicalExpr) editChildren(edit func(Node) Node) {
  1025  	editNodes(n.init, edit)
  1026  	if n.X != nil {
  1027  		n.X = edit(n.X).(Node)
  1028  	}
  1029  	if n.Y != nil {
  1030  		n.Y = edit(n.Y).(Node)
  1031  	}
  1032  }
  1033  func (n *LogicalExpr) editChildrenWithHidden(edit func(Node) Node) {
  1034  	editNodes(n.init, edit)
  1035  	if n.X != nil {
  1036  		n.X = edit(n.X).(Node)
  1037  	}
  1038  	if n.Y != nil {
  1039  		n.Y = edit(n.Y).(Node)
  1040  	}
  1041  }
  1042  
  1043  func (n *MakeExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1044  func (n *MakeExpr) copy() Node {
  1045  	c := *n
  1046  	c.init = copyNodes(c.init)
  1047  	return &c
  1048  }
  1049  func (n *MakeExpr) doChildren(do func(Node) bool) bool {
  1050  	if doNodes(n.init, do) {
  1051  		return true
  1052  	}
  1053  	if n.Len != nil && do(n.Len) {
  1054  		return true
  1055  	}
  1056  	if n.Cap != nil && do(n.Cap) {
  1057  		return true
  1058  	}
  1059  	return false
  1060  }
  1061  func (n *MakeExpr) editChildren(edit func(Node) Node) {
  1062  	editNodes(n.init, edit)
  1063  	if n.Len != nil {
  1064  		n.Len = edit(n.Len).(Node)
  1065  	}
  1066  	if n.Cap != nil {
  1067  		n.Cap = edit(n.Cap).(Node)
  1068  	}
  1069  }
  1070  func (n *MakeExpr) editChildrenWithHidden(edit func(Node) Node) {
  1071  	editNodes(n.init, edit)
  1072  	if n.RType != nil {
  1073  		n.RType = edit(n.RType).(Node)
  1074  	}
  1075  	if n.Len != nil {
  1076  		n.Len = edit(n.Len).(Node)
  1077  	}
  1078  	if n.Cap != nil {
  1079  		n.Cap = edit(n.Cap).(Node)
  1080  	}
  1081  }
  1082  
  1083  func (n *Name) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1084  
  1085  func (n *NilExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1086  func (n *NilExpr) copy() Node {
  1087  	c := *n
  1088  	c.init = copyNodes(c.init)
  1089  	return &c
  1090  }
  1091  func (n *NilExpr) doChildren(do func(Node) bool) bool {
  1092  	if doNodes(n.init, do) {
  1093  		return true
  1094  	}
  1095  	return false
  1096  }
  1097  func (n *NilExpr) editChildren(edit func(Node) Node) {
  1098  	editNodes(n.init, edit)
  1099  }
  1100  func (n *NilExpr) editChildrenWithHidden(edit func(Node) Node) {
  1101  	editNodes(n.init, edit)
  1102  }
  1103  
  1104  func (n *ParenExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1105  func (n *ParenExpr) copy() Node {
  1106  	c := *n
  1107  	c.init = copyNodes(c.init)
  1108  	return &c
  1109  }
  1110  func (n *ParenExpr) doChildren(do func(Node) bool) bool {
  1111  	if doNodes(n.init, do) {
  1112  		return true
  1113  	}
  1114  	if n.X != nil && do(n.X) {
  1115  		return true
  1116  	}
  1117  	return false
  1118  }
  1119  func (n *ParenExpr) editChildren(edit func(Node) Node) {
  1120  	editNodes(n.init, edit)
  1121  	if n.X != nil {
  1122  		n.X = edit(n.X).(Node)
  1123  	}
  1124  }
  1125  func (n *ParenExpr) editChildrenWithHidden(edit func(Node) Node) {
  1126  	editNodes(n.init, edit)
  1127  	if n.X != nil {
  1128  		n.X = edit(n.X).(Node)
  1129  	}
  1130  }
  1131  
  1132  func (n *RangeStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1133  func (n *RangeStmt) copy() Node {
  1134  	c := *n
  1135  	c.init = copyNodes(c.init)
  1136  	c.Body = copyNodes(c.Body)
  1137  	return &c
  1138  }
  1139  func (n *RangeStmt) doChildren(do func(Node) bool) bool {
  1140  	if doNodes(n.init, do) {
  1141  		return true
  1142  	}
  1143  	if n.X != nil && do(n.X) {
  1144  		return true
  1145  	}
  1146  	if n.Key != nil && do(n.Key) {
  1147  		return true
  1148  	}
  1149  	if n.Value != nil && do(n.Value) {
  1150  		return true
  1151  	}
  1152  	if doNodes(n.Body, do) {
  1153  		return true
  1154  	}
  1155  	if n.Prealloc != nil && do(n.Prealloc) {
  1156  		return true
  1157  	}
  1158  	return false
  1159  }
  1160  func (n *RangeStmt) editChildren(edit func(Node) Node) {
  1161  	editNodes(n.init, edit)
  1162  	if n.X != nil {
  1163  		n.X = edit(n.X).(Node)
  1164  	}
  1165  	if n.Key != nil {
  1166  		n.Key = edit(n.Key).(Node)
  1167  	}
  1168  	if n.Value != nil {
  1169  		n.Value = edit(n.Value).(Node)
  1170  	}
  1171  	editNodes(n.Body, edit)
  1172  	if n.Prealloc != nil {
  1173  		n.Prealloc = edit(n.Prealloc).(*Name)
  1174  	}
  1175  }
  1176  func (n *RangeStmt) editChildrenWithHidden(edit func(Node) Node) {
  1177  	editNodes(n.init, edit)
  1178  	if n.X != nil {
  1179  		n.X = edit(n.X).(Node)
  1180  	}
  1181  	if n.RType != nil {
  1182  		n.RType = edit(n.RType).(Node)
  1183  	}
  1184  	if n.Key != nil {
  1185  		n.Key = edit(n.Key).(Node)
  1186  	}
  1187  	if n.Value != nil {
  1188  		n.Value = edit(n.Value).(Node)
  1189  	}
  1190  	editNodes(n.Body, edit)
  1191  	if n.Prealloc != nil {
  1192  		n.Prealloc = edit(n.Prealloc).(*Name)
  1193  	}
  1194  	if n.KeyTypeWord != nil {
  1195  		n.KeyTypeWord = edit(n.KeyTypeWord).(Node)
  1196  	}
  1197  	if n.KeySrcRType != nil {
  1198  		n.KeySrcRType = edit(n.KeySrcRType).(Node)
  1199  	}
  1200  	if n.ValueTypeWord != nil {
  1201  		n.ValueTypeWord = edit(n.ValueTypeWord).(Node)
  1202  	}
  1203  	if n.ValueSrcRType != nil {
  1204  		n.ValueSrcRType = edit(n.ValueSrcRType).(Node)
  1205  	}
  1206  }
  1207  
  1208  func (n *RawOrigExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1209  func (n *RawOrigExpr) copy() Node {
  1210  	c := *n
  1211  	c.init = copyNodes(c.init)
  1212  	return &c
  1213  }
  1214  func (n *RawOrigExpr) doChildren(do func(Node) bool) bool {
  1215  	if doNodes(n.init, do) {
  1216  		return true
  1217  	}
  1218  	return false
  1219  }
  1220  func (n *RawOrigExpr) editChildren(edit func(Node) Node) {
  1221  	editNodes(n.init, edit)
  1222  }
  1223  func (n *RawOrigExpr) editChildrenWithHidden(edit func(Node) Node) {
  1224  	editNodes(n.init, edit)
  1225  }
  1226  
  1227  func (n *ResultExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1228  func (n *ResultExpr) copy() Node {
  1229  	c := *n
  1230  	c.init = copyNodes(c.init)
  1231  	return &c
  1232  }
  1233  func (n *ResultExpr) doChildren(do func(Node) bool) bool {
  1234  	if doNodes(n.init, do) {
  1235  		return true
  1236  	}
  1237  	return false
  1238  }
  1239  func (n *ResultExpr) editChildren(edit func(Node) Node) {
  1240  	editNodes(n.init, edit)
  1241  }
  1242  func (n *ResultExpr) editChildrenWithHidden(edit func(Node) Node) {
  1243  	editNodes(n.init, edit)
  1244  }
  1245  
  1246  func (n *ReturnStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1247  func (n *ReturnStmt) copy() Node {
  1248  	c := *n
  1249  	c.init = copyNodes(c.init)
  1250  	c.Results = copyNodes(c.Results)
  1251  	return &c
  1252  }
  1253  func (n *ReturnStmt) doChildren(do func(Node) bool) bool {
  1254  	if doNodes(n.init, do) {
  1255  		return true
  1256  	}
  1257  	if doNodes(n.Results, do) {
  1258  		return true
  1259  	}
  1260  	return false
  1261  }
  1262  func (n *ReturnStmt) editChildren(edit func(Node) Node) {
  1263  	editNodes(n.init, edit)
  1264  	editNodes(n.Results, edit)
  1265  }
  1266  func (n *ReturnStmt) editChildrenWithHidden(edit func(Node) Node) {
  1267  	editNodes(n.init, edit)
  1268  	editNodes(n.Results, edit)
  1269  }
  1270  
  1271  func (n *SelectStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1272  func (n *SelectStmt) copy() Node {
  1273  	c := *n
  1274  	c.init = copyNodes(c.init)
  1275  	c.Cases = copyCommClauses(c.Cases)
  1276  	c.Compiled = copyNodes(c.Compiled)
  1277  	return &c
  1278  }
  1279  func (n *SelectStmt) doChildren(do func(Node) bool) bool {
  1280  	if doNodes(n.init, do) {
  1281  		return true
  1282  	}
  1283  	if doCommClauses(n.Cases, do) {
  1284  		return true
  1285  	}
  1286  	if doNodes(n.Compiled, do) {
  1287  		return true
  1288  	}
  1289  	return false
  1290  }
  1291  func (n *SelectStmt) editChildren(edit func(Node) Node) {
  1292  	editNodes(n.init, edit)
  1293  	editCommClauses(n.Cases, edit)
  1294  	editNodes(n.Compiled, edit)
  1295  }
  1296  func (n *SelectStmt) editChildrenWithHidden(edit func(Node) Node) {
  1297  	editNodes(n.init, edit)
  1298  	editCommClauses(n.Cases, edit)
  1299  	editNodes(n.Compiled, edit)
  1300  }
  1301  
  1302  func (n *SelectorExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1303  func (n *SelectorExpr) copy() Node {
  1304  	c := *n
  1305  	c.init = copyNodes(c.init)
  1306  	return &c
  1307  }
  1308  func (n *SelectorExpr) doChildren(do func(Node) bool) bool {
  1309  	if doNodes(n.init, do) {
  1310  		return true
  1311  	}
  1312  	if n.X != nil && do(n.X) {
  1313  		return true
  1314  	}
  1315  	if n.Prealloc != nil && do(n.Prealloc) {
  1316  		return true
  1317  	}
  1318  	return false
  1319  }
  1320  func (n *SelectorExpr) editChildren(edit func(Node) Node) {
  1321  	editNodes(n.init, edit)
  1322  	if n.X != nil {
  1323  		n.X = edit(n.X).(Node)
  1324  	}
  1325  	if n.Prealloc != nil {
  1326  		n.Prealloc = edit(n.Prealloc).(*Name)
  1327  	}
  1328  }
  1329  func (n *SelectorExpr) editChildrenWithHidden(edit func(Node) Node) {
  1330  	editNodes(n.init, edit)
  1331  	if n.X != nil {
  1332  		n.X = edit(n.X).(Node)
  1333  	}
  1334  	if n.Prealloc != nil {
  1335  		n.Prealloc = edit(n.Prealloc).(*Name)
  1336  	}
  1337  }
  1338  
  1339  func (n *SendStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1340  func (n *SendStmt) copy() Node {
  1341  	c := *n
  1342  	c.init = copyNodes(c.init)
  1343  	return &c
  1344  }
  1345  func (n *SendStmt) doChildren(do func(Node) bool) bool {
  1346  	if doNodes(n.init, do) {
  1347  		return true
  1348  	}
  1349  	if n.Chan != nil && do(n.Chan) {
  1350  		return true
  1351  	}
  1352  	if n.Value != nil && do(n.Value) {
  1353  		return true
  1354  	}
  1355  	return false
  1356  }
  1357  func (n *SendStmt) editChildren(edit func(Node) Node) {
  1358  	editNodes(n.init, edit)
  1359  	if n.Chan != nil {
  1360  		n.Chan = edit(n.Chan).(Node)
  1361  	}
  1362  	if n.Value != nil {
  1363  		n.Value = edit(n.Value).(Node)
  1364  	}
  1365  }
  1366  func (n *SendStmt) editChildrenWithHidden(edit func(Node) Node) {
  1367  	editNodes(n.init, edit)
  1368  	if n.Chan != nil {
  1369  		n.Chan = edit(n.Chan).(Node)
  1370  	}
  1371  	if n.Value != nil {
  1372  		n.Value = edit(n.Value).(Node)
  1373  	}
  1374  }
  1375  
  1376  func (n *SliceExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1377  func (n *SliceExpr) copy() Node {
  1378  	c := *n
  1379  	c.init = copyNodes(c.init)
  1380  	return &c
  1381  }
  1382  func (n *SliceExpr) doChildren(do func(Node) bool) bool {
  1383  	if doNodes(n.init, do) {
  1384  		return true
  1385  	}
  1386  	if n.X != nil && do(n.X) {
  1387  		return true
  1388  	}
  1389  	if n.Low != nil && do(n.Low) {
  1390  		return true
  1391  	}
  1392  	if n.High != nil && do(n.High) {
  1393  		return true
  1394  	}
  1395  	if n.Max != nil && do(n.Max) {
  1396  		return true
  1397  	}
  1398  	return false
  1399  }
  1400  func (n *SliceExpr) editChildren(edit func(Node) Node) {
  1401  	editNodes(n.init, edit)
  1402  	if n.X != nil {
  1403  		n.X = edit(n.X).(Node)
  1404  	}
  1405  	if n.Low != nil {
  1406  		n.Low = edit(n.Low).(Node)
  1407  	}
  1408  	if n.High != nil {
  1409  		n.High = edit(n.High).(Node)
  1410  	}
  1411  	if n.Max != nil {
  1412  		n.Max = edit(n.Max).(Node)
  1413  	}
  1414  }
  1415  func (n *SliceExpr) editChildrenWithHidden(edit func(Node) Node) {
  1416  	editNodes(n.init, edit)
  1417  	if n.X != nil {
  1418  		n.X = edit(n.X).(Node)
  1419  	}
  1420  	if n.Low != nil {
  1421  		n.Low = edit(n.Low).(Node)
  1422  	}
  1423  	if n.High != nil {
  1424  		n.High = edit(n.High).(Node)
  1425  	}
  1426  	if n.Max != nil {
  1427  		n.Max = edit(n.Max).(Node)
  1428  	}
  1429  }
  1430  
  1431  func (n *SliceHeaderExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1432  func (n *SliceHeaderExpr) copy() Node {
  1433  	c := *n
  1434  	c.init = copyNodes(c.init)
  1435  	return &c
  1436  }
  1437  func (n *SliceHeaderExpr) doChildren(do func(Node) bool) bool {
  1438  	if doNodes(n.init, do) {
  1439  		return true
  1440  	}
  1441  	if n.Ptr != nil && do(n.Ptr) {
  1442  		return true
  1443  	}
  1444  	if n.Len != nil && do(n.Len) {
  1445  		return true
  1446  	}
  1447  	if n.Cap != nil && do(n.Cap) {
  1448  		return true
  1449  	}
  1450  	return false
  1451  }
  1452  func (n *SliceHeaderExpr) editChildren(edit func(Node) Node) {
  1453  	editNodes(n.init, edit)
  1454  	if n.Ptr != nil {
  1455  		n.Ptr = edit(n.Ptr).(Node)
  1456  	}
  1457  	if n.Len != nil {
  1458  		n.Len = edit(n.Len).(Node)
  1459  	}
  1460  	if n.Cap != nil {
  1461  		n.Cap = edit(n.Cap).(Node)
  1462  	}
  1463  }
  1464  func (n *SliceHeaderExpr) editChildrenWithHidden(edit func(Node) Node) {
  1465  	editNodes(n.init, edit)
  1466  	if n.Ptr != nil {
  1467  		n.Ptr = edit(n.Ptr).(Node)
  1468  	}
  1469  	if n.Len != nil {
  1470  		n.Len = edit(n.Len).(Node)
  1471  	}
  1472  	if n.Cap != nil {
  1473  		n.Cap = edit(n.Cap).(Node)
  1474  	}
  1475  }
  1476  
  1477  func (n *StarExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1478  func (n *StarExpr) copy() Node {
  1479  	c := *n
  1480  	c.init = copyNodes(c.init)
  1481  	return &c
  1482  }
  1483  func (n *StarExpr) doChildren(do func(Node) bool) bool {
  1484  	if doNodes(n.init, do) {
  1485  		return true
  1486  	}
  1487  	if n.X != nil && do(n.X) {
  1488  		return true
  1489  	}
  1490  	return false
  1491  }
  1492  func (n *StarExpr) editChildren(edit func(Node) Node) {
  1493  	editNodes(n.init, edit)
  1494  	if n.X != nil {
  1495  		n.X = edit(n.X).(Node)
  1496  	}
  1497  }
  1498  func (n *StarExpr) editChildrenWithHidden(edit func(Node) Node) {
  1499  	editNodes(n.init, edit)
  1500  	if n.X != nil {
  1501  		n.X = edit(n.X).(Node)
  1502  	}
  1503  }
  1504  
  1505  func (n *StringHeaderExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1506  func (n *StringHeaderExpr) copy() Node {
  1507  	c := *n
  1508  	c.init = copyNodes(c.init)
  1509  	return &c
  1510  }
  1511  func (n *StringHeaderExpr) doChildren(do func(Node) bool) bool {
  1512  	if doNodes(n.init, do) {
  1513  		return true
  1514  	}
  1515  	if n.Ptr != nil && do(n.Ptr) {
  1516  		return true
  1517  	}
  1518  	if n.Len != nil && do(n.Len) {
  1519  		return true
  1520  	}
  1521  	return false
  1522  }
  1523  func (n *StringHeaderExpr) editChildren(edit func(Node) Node) {
  1524  	editNodes(n.init, edit)
  1525  	if n.Ptr != nil {
  1526  		n.Ptr = edit(n.Ptr).(Node)
  1527  	}
  1528  	if n.Len != nil {
  1529  		n.Len = edit(n.Len).(Node)
  1530  	}
  1531  }
  1532  func (n *StringHeaderExpr) editChildrenWithHidden(edit func(Node) Node) {
  1533  	editNodes(n.init, edit)
  1534  	if n.Ptr != nil {
  1535  		n.Ptr = edit(n.Ptr).(Node)
  1536  	}
  1537  	if n.Len != nil {
  1538  		n.Len = edit(n.Len).(Node)
  1539  	}
  1540  }
  1541  
  1542  func (n *StructKeyExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1543  func (n *StructKeyExpr) copy() Node {
  1544  	c := *n
  1545  	c.init = copyNodes(c.init)
  1546  	return &c
  1547  }
  1548  func (n *StructKeyExpr) doChildren(do func(Node) bool) bool {
  1549  	if doNodes(n.init, do) {
  1550  		return true
  1551  	}
  1552  	if n.Value != nil && do(n.Value) {
  1553  		return true
  1554  	}
  1555  	return false
  1556  }
  1557  func (n *StructKeyExpr) editChildren(edit func(Node) Node) {
  1558  	editNodes(n.init, edit)
  1559  	if n.Value != nil {
  1560  		n.Value = edit(n.Value).(Node)
  1561  	}
  1562  }
  1563  func (n *StructKeyExpr) editChildrenWithHidden(edit func(Node) Node) {
  1564  	editNodes(n.init, edit)
  1565  	if n.Value != nil {
  1566  		n.Value = edit(n.Value).(Node)
  1567  	}
  1568  }
  1569  
  1570  func (n *SwitchStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1571  func (n *SwitchStmt) copy() Node {
  1572  	c := *n
  1573  	c.init = copyNodes(c.init)
  1574  	c.Cases = copyCaseClauses(c.Cases)
  1575  	c.Compiled = copyNodes(c.Compiled)
  1576  	return &c
  1577  }
  1578  func (n *SwitchStmt) doChildren(do func(Node) bool) bool {
  1579  	if doNodes(n.init, do) {
  1580  		return true
  1581  	}
  1582  	if n.Tag != nil && do(n.Tag) {
  1583  		return true
  1584  	}
  1585  	if doCaseClauses(n.Cases, do) {
  1586  		return true
  1587  	}
  1588  	if doNodes(n.Compiled, do) {
  1589  		return true
  1590  	}
  1591  	return false
  1592  }
  1593  func (n *SwitchStmt) editChildren(edit func(Node) Node) {
  1594  	editNodes(n.init, edit)
  1595  	if n.Tag != nil {
  1596  		n.Tag = edit(n.Tag).(Node)
  1597  	}
  1598  	editCaseClauses(n.Cases, edit)
  1599  	editNodes(n.Compiled, edit)
  1600  }
  1601  func (n *SwitchStmt) editChildrenWithHidden(edit func(Node) Node) {
  1602  	editNodes(n.init, edit)
  1603  	if n.Tag != nil {
  1604  		n.Tag = edit(n.Tag).(Node)
  1605  	}
  1606  	editCaseClauses(n.Cases, edit)
  1607  	editNodes(n.Compiled, edit)
  1608  }
  1609  
  1610  func (n *TailCallStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1611  func (n *TailCallStmt) copy() Node {
  1612  	c := *n
  1613  	c.init = copyNodes(c.init)
  1614  	return &c
  1615  }
  1616  func (n *TailCallStmt) doChildren(do func(Node) bool) bool {
  1617  	if doNodes(n.init, do) {
  1618  		return true
  1619  	}
  1620  	if n.Call != nil && do(n.Call) {
  1621  		return true
  1622  	}
  1623  	return false
  1624  }
  1625  func (n *TailCallStmt) editChildren(edit func(Node) Node) {
  1626  	editNodes(n.init, edit)
  1627  	if n.Call != nil {
  1628  		n.Call = edit(n.Call).(*CallExpr)
  1629  	}
  1630  }
  1631  func (n *TailCallStmt) editChildrenWithHidden(edit func(Node) Node) {
  1632  	editNodes(n.init, edit)
  1633  	if n.Call != nil {
  1634  		n.Call = edit(n.Call).(*CallExpr)
  1635  	}
  1636  }
  1637  
  1638  func (n *TypeAssertExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1639  func (n *TypeAssertExpr) copy() Node {
  1640  	c := *n
  1641  	c.init = copyNodes(c.init)
  1642  	return &c
  1643  }
  1644  func (n *TypeAssertExpr) doChildren(do func(Node) bool) bool {
  1645  	if doNodes(n.init, do) {
  1646  		return true
  1647  	}
  1648  	if n.X != nil && do(n.X) {
  1649  		return true
  1650  	}
  1651  	return false
  1652  }
  1653  func (n *TypeAssertExpr) editChildren(edit func(Node) Node) {
  1654  	editNodes(n.init, edit)
  1655  	if n.X != nil {
  1656  		n.X = edit(n.X).(Node)
  1657  	}
  1658  }
  1659  func (n *TypeAssertExpr) editChildrenWithHidden(edit func(Node) Node) {
  1660  	editNodes(n.init, edit)
  1661  	if n.X != nil {
  1662  		n.X = edit(n.X).(Node)
  1663  	}
  1664  	if n.ITab != nil {
  1665  		n.ITab = edit(n.ITab).(Node)
  1666  	}
  1667  }
  1668  
  1669  func (n *TypeSwitchGuard) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1670  func (n *TypeSwitchGuard) copy() Node {
  1671  	c := *n
  1672  	return &c
  1673  }
  1674  func (n *TypeSwitchGuard) doChildren(do func(Node) bool) bool {
  1675  	if n.Tag != nil && do(n.Tag) {
  1676  		return true
  1677  	}
  1678  	if n.X != nil && do(n.X) {
  1679  		return true
  1680  	}
  1681  	return false
  1682  }
  1683  func (n *TypeSwitchGuard) editChildren(edit func(Node) Node) {
  1684  	if n.Tag != nil {
  1685  		n.Tag = edit(n.Tag).(*Ident)
  1686  	}
  1687  	if n.X != nil {
  1688  		n.X = edit(n.X).(Node)
  1689  	}
  1690  }
  1691  func (n *TypeSwitchGuard) editChildrenWithHidden(edit func(Node) Node) {
  1692  	if n.Tag != nil {
  1693  		n.Tag = edit(n.Tag).(*Ident)
  1694  	}
  1695  	if n.X != nil {
  1696  		n.X = edit(n.X).(Node)
  1697  	}
  1698  }
  1699  
  1700  func (n *UnaryExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1701  func (n *UnaryExpr) copy() Node {
  1702  	c := *n
  1703  	c.init = copyNodes(c.init)
  1704  	return &c
  1705  }
  1706  func (n *UnaryExpr) doChildren(do func(Node) bool) bool {
  1707  	if doNodes(n.init, do) {
  1708  		return true
  1709  	}
  1710  	if n.X != nil && do(n.X) {
  1711  		return true
  1712  	}
  1713  	return false
  1714  }
  1715  func (n *UnaryExpr) editChildren(edit func(Node) Node) {
  1716  	editNodes(n.init, edit)
  1717  	if n.X != nil {
  1718  		n.X = edit(n.X).(Node)
  1719  	}
  1720  }
  1721  func (n *UnaryExpr) editChildrenWithHidden(edit func(Node) Node) {
  1722  	editNodes(n.init, edit)
  1723  	if n.X != nil {
  1724  		n.X = edit(n.X).(Node)
  1725  	}
  1726  }
  1727  
  1728  func (n *typeNode) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1729  func (n *typeNode) copy() Node {
  1730  	c := *n
  1731  	return &c
  1732  }
  1733  func (n *typeNode) doChildren(do func(Node) bool) bool {
  1734  	return false
  1735  }
  1736  func (n *typeNode) editChildren(edit func(Node) Node) {
  1737  }
  1738  func (n *typeNode) editChildrenWithHidden(edit func(Node) Node) {
  1739  }
  1740  
  1741  func copyCaseClauses(list []*CaseClause) []*CaseClause {
  1742  	if list == nil {
  1743  		return nil
  1744  	}
  1745  	c := make([]*CaseClause, len(list))
  1746  	copy(c, list)
  1747  	return c
  1748  }
  1749  func doCaseClauses(list []*CaseClause, do func(Node) bool) bool {
  1750  	for _, x := range list {
  1751  		if x != nil && do(x) {
  1752  			return true
  1753  		}
  1754  	}
  1755  	return false
  1756  }
  1757  func editCaseClauses(list []*CaseClause, edit func(Node) Node) {
  1758  	for i, x := range list {
  1759  		if x != nil {
  1760  			list[i] = edit(x).(*CaseClause)
  1761  		}
  1762  	}
  1763  }
  1764  
  1765  func copyCommClauses(list []*CommClause) []*CommClause {
  1766  	if list == nil {
  1767  		return nil
  1768  	}
  1769  	c := make([]*CommClause, len(list))
  1770  	copy(c, list)
  1771  	return c
  1772  }
  1773  func doCommClauses(list []*CommClause, do func(Node) bool) bool {
  1774  	for _, x := range list {
  1775  		if x != nil && do(x) {
  1776  			return true
  1777  		}
  1778  	}
  1779  	return false
  1780  }
  1781  func editCommClauses(list []*CommClause, edit func(Node) Node) {
  1782  	for i, x := range list {
  1783  		if x != nil {
  1784  			list[i] = edit(x).(*CommClause)
  1785  		}
  1786  	}
  1787  }
  1788  
  1789  func copyNames(list []*Name) []*Name {
  1790  	if list == nil {
  1791  		return nil
  1792  	}
  1793  	c := make([]*Name, len(list))
  1794  	copy(c, list)
  1795  	return c
  1796  }
  1797  func doNames(list []*Name, do func(Node) bool) bool {
  1798  	for _, x := range list {
  1799  		if x != nil && do(x) {
  1800  			return true
  1801  		}
  1802  	}
  1803  	return false
  1804  }
  1805  func editNames(list []*Name, edit func(Node) Node) {
  1806  	for i, x := range list {
  1807  		if x != nil {
  1808  			list[i] = edit(x).(*Name)
  1809  		}
  1810  	}
  1811  }
  1812  
  1813  func copyNodes(list []Node) []Node {
  1814  	if list == nil {
  1815  		return nil
  1816  	}
  1817  	c := make([]Node, len(list))
  1818  	copy(c, list)
  1819  	return c
  1820  }
  1821  func doNodes(list []Node, do func(Node) bool) bool {
  1822  	for _, x := range list {
  1823  		if x != nil && do(x) {
  1824  			return true
  1825  		}
  1826  	}
  1827  	return false
  1828  }
  1829  func editNodes(list []Node, edit func(Node) Node) {
  1830  	for i, x := range list {
  1831  		if x != nil {
  1832  			list[i] = edit(x).(Node)
  1833  		}
  1834  	}
  1835  }
  1836  
  1837  func copyNtypes(list []Ntype) []Ntype {
  1838  	if list == nil {
  1839  		return nil
  1840  	}
  1841  	c := make([]Ntype, len(list))
  1842  	copy(c, list)
  1843  	return c
  1844  }
  1845  func doNtypes(list []Ntype, do func(Node) bool) bool {
  1846  	for _, x := range list {
  1847  		if x != nil && do(x) {
  1848  			return true
  1849  		}
  1850  	}
  1851  	return false
  1852  }
  1853  func editNtypes(list []Ntype, edit func(Node) Node) {
  1854  	for i, x := range list {
  1855  		if x != nil {
  1856  			list[i] = edit(x).(Ntype)
  1857  		}
  1858  	}
  1859  }