github.com/go-asm/go@v1.21.1-0.20240213172139-40c5ead50c48/cmd/compile/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.Fun != nil && do(n.Fun) {
   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.Fun != nil {
   312  		n.Fun = edit(n.Fun).(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.Fun != nil {
   320  		n.Fun = edit(n.Fun).(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 *ConvExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   475  func (n *ConvExpr) copy() Node {
   476  	c := *n
   477  	c.init = copyNodes(c.init)
   478  	return &c
   479  }
   480  func (n *ConvExpr) doChildren(do func(Node) bool) bool {
   481  	if doNodes(n.init, do) {
   482  		return true
   483  	}
   484  	if n.X != nil && do(n.X) {
   485  		return true
   486  	}
   487  	return false
   488  }
   489  func (n *ConvExpr) editChildren(edit func(Node) Node) {
   490  	editNodes(n.init, edit)
   491  	if n.X != nil {
   492  		n.X = edit(n.X).(Node)
   493  	}
   494  }
   495  func (n *ConvExpr) editChildrenWithHidden(edit func(Node) Node) {
   496  	editNodes(n.init, edit)
   497  	if n.X != nil {
   498  		n.X = edit(n.X).(Node)
   499  	}
   500  	if n.TypeWord != nil {
   501  		n.TypeWord = edit(n.TypeWord).(Node)
   502  	}
   503  	if n.SrcRType != nil {
   504  		n.SrcRType = edit(n.SrcRType).(Node)
   505  	}
   506  	if n.ElemRType != nil {
   507  		n.ElemRType = edit(n.ElemRType).(Node)
   508  	}
   509  	if n.ElemElemRType != nil {
   510  		n.ElemElemRType = edit(n.ElemElemRType).(Node)
   511  	}
   512  }
   513  
   514  func (n *Decl) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   515  func (n *Decl) copy() Node {
   516  	c := *n
   517  	return &c
   518  }
   519  func (n *Decl) doChildren(do func(Node) bool) bool {
   520  	if n.X != nil && do(n.X) {
   521  		return true
   522  	}
   523  	return false
   524  }
   525  func (n *Decl) editChildren(edit func(Node) Node) {
   526  	if n.X != nil {
   527  		n.X = edit(n.X).(*Name)
   528  	}
   529  }
   530  func (n *Decl) editChildrenWithHidden(edit func(Node) Node) {
   531  	if n.X != nil {
   532  		n.X = edit(n.X).(*Name)
   533  	}
   534  }
   535  
   536  func (n *DynamicType) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   537  func (n *DynamicType) copy() Node {
   538  	c := *n
   539  	c.init = copyNodes(c.init)
   540  	return &c
   541  }
   542  func (n *DynamicType) doChildren(do func(Node) bool) bool {
   543  	if doNodes(n.init, do) {
   544  		return true
   545  	}
   546  	if n.RType != nil && do(n.RType) {
   547  		return true
   548  	}
   549  	if n.ITab != nil && do(n.ITab) {
   550  		return true
   551  	}
   552  	return false
   553  }
   554  func (n *DynamicType) editChildren(edit func(Node) Node) {
   555  	editNodes(n.init, edit)
   556  	if n.RType != nil {
   557  		n.RType = edit(n.RType).(Node)
   558  	}
   559  	if n.ITab != nil {
   560  		n.ITab = edit(n.ITab).(Node)
   561  	}
   562  }
   563  func (n *DynamicType) editChildrenWithHidden(edit func(Node) Node) {
   564  	editNodes(n.init, edit)
   565  	if n.RType != nil {
   566  		n.RType = edit(n.RType).(Node)
   567  	}
   568  	if n.ITab != nil {
   569  		n.ITab = edit(n.ITab).(Node)
   570  	}
   571  }
   572  
   573  func (n *DynamicTypeAssertExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   574  func (n *DynamicTypeAssertExpr) copy() Node {
   575  	c := *n
   576  	c.init = copyNodes(c.init)
   577  	return &c
   578  }
   579  func (n *DynamicTypeAssertExpr) doChildren(do func(Node) bool) bool {
   580  	if doNodes(n.init, do) {
   581  		return true
   582  	}
   583  	if n.X != nil && do(n.X) {
   584  		return true
   585  	}
   586  	if n.SrcRType != nil && do(n.SrcRType) {
   587  		return true
   588  	}
   589  	if n.RType != nil && do(n.RType) {
   590  		return true
   591  	}
   592  	if n.ITab != nil && do(n.ITab) {
   593  		return true
   594  	}
   595  	return false
   596  }
   597  func (n *DynamicTypeAssertExpr) editChildren(edit func(Node) Node) {
   598  	editNodes(n.init, edit)
   599  	if n.X != nil {
   600  		n.X = edit(n.X).(Node)
   601  	}
   602  	if n.SrcRType != nil {
   603  		n.SrcRType = edit(n.SrcRType).(Node)
   604  	}
   605  	if n.RType != nil {
   606  		n.RType = edit(n.RType).(Node)
   607  	}
   608  	if n.ITab != nil {
   609  		n.ITab = edit(n.ITab).(Node)
   610  	}
   611  }
   612  func (n *DynamicTypeAssertExpr) editChildrenWithHidden(edit func(Node) Node) {
   613  	editNodes(n.init, edit)
   614  	if n.X != nil {
   615  		n.X = edit(n.X).(Node)
   616  	}
   617  	if n.SrcRType != nil {
   618  		n.SrcRType = edit(n.SrcRType).(Node)
   619  	}
   620  	if n.RType != nil {
   621  		n.RType = edit(n.RType).(Node)
   622  	}
   623  	if n.ITab != nil {
   624  		n.ITab = edit(n.ITab).(Node)
   625  	}
   626  }
   627  
   628  func (n *ForStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   629  func (n *ForStmt) copy() Node {
   630  	c := *n
   631  	c.init = copyNodes(c.init)
   632  	c.Body = copyNodes(c.Body)
   633  	return &c
   634  }
   635  func (n *ForStmt) doChildren(do func(Node) bool) bool {
   636  	if doNodes(n.init, do) {
   637  		return true
   638  	}
   639  	if n.Cond != nil && do(n.Cond) {
   640  		return true
   641  	}
   642  	if n.Post != nil && do(n.Post) {
   643  		return true
   644  	}
   645  	if doNodes(n.Body, do) {
   646  		return true
   647  	}
   648  	return false
   649  }
   650  func (n *ForStmt) editChildren(edit func(Node) Node) {
   651  	editNodes(n.init, edit)
   652  	if n.Cond != nil {
   653  		n.Cond = edit(n.Cond).(Node)
   654  	}
   655  	if n.Post != nil {
   656  		n.Post = edit(n.Post).(Node)
   657  	}
   658  	editNodes(n.Body, edit)
   659  }
   660  func (n *ForStmt) editChildrenWithHidden(edit func(Node) Node) {
   661  	editNodes(n.init, edit)
   662  	if n.Cond != nil {
   663  		n.Cond = edit(n.Cond).(Node)
   664  	}
   665  	if n.Post != nil {
   666  		n.Post = edit(n.Post).(Node)
   667  	}
   668  	editNodes(n.Body, edit)
   669  }
   670  
   671  func (n *Func) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   672  
   673  func (n *GoDeferStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   674  func (n *GoDeferStmt) copy() Node {
   675  	c := *n
   676  	c.init = copyNodes(c.init)
   677  	return &c
   678  }
   679  func (n *GoDeferStmt) doChildren(do func(Node) bool) bool {
   680  	if doNodes(n.init, do) {
   681  		return true
   682  	}
   683  	if n.Call != nil && do(n.Call) {
   684  		return true
   685  	}
   686  	return false
   687  }
   688  func (n *GoDeferStmt) editChildren(edit func(Node) Node) {
   689  	editNodes(n.init, edit)
   690  	if n.Call != nil {
   691  		n.Call = edit(n.Call).(Node)
   692  	}
   693  }
   694  func (n *GoDeferStmt) editChildrenWithHidden(edit func(Node) Node) {
   695  	editNodes(n.init, edit)
   696  	if n.Call != nil {
   697  		n.Call = edit(n.Call).(Node)
   698  	}
   699  }
   700  
   701  func (n *Ident) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   702  func (n *Ident) copy() Node {
   703  	c := *n
   704  	c.init = copyNodes(c.init)
   705  	return &c
   706  }
   707  func (n *Ident) doChildren(do func(Node) bool) bool {
   708  	if doNodes(n.init, do) {
   709  		return true
   710  	}
   711  	return false
   712  }
   713  func (n *Ident) editChildren(edit func(Node) Node) {
   714  	editNodes(n.init, edit)
   715  }
   716  func (n *Ident) editChildrenWithHidden(edit func(Node) Node) {
   717  	editNodes(n.init, edit)
   718  }
   719  
   720  func (n *IfStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   721  func (n *IfStmt) copy() Node {
   722  	c := *n
   723  	c.init = copyNodes(c.init)
   724  	c.Body = copyNodes(c.Body)
   725  	c.Else = copyNodes(c.Else)
   726  	return &c
   727  }
   728  func (n *IfStmt) doChildren(do func(Node) bool) bool {
   729  	if doNodes(n.init, do) {
   730  		return true
   731  	}
   732  	if n.Cond != nil && do(n.Cond) {
   733  		return true
   734  	}
   735  	if doNodes(n.Body, do) {
   736  		return true
   737  	}
   738  	if doNodes(n.Else, do) {
   739  		return true
   740  	}
   741  	return false
   742  }
   743  func (n *IfStmt) editChildren(edit func(Node) Node) {
   744  	editNodes(n.init, edit)
   745  	if n.Cond != nil {
   746  		n.Cond = edit(n.Cond).(Node)
   747  	}
   748  	editNodes(n.Body, edit)
   749  	editNodes(n.Else, edit)
   750  }
   751  func (n *IfStmt) editChildrenWithHidden(edit func(Node) Node) {
   752  	editNodes(n.init, edit)
   753  	if n.Cond != nil {
   754  		n.Cond = edit(n.Cond).(Node)
   755  	}
   756  	editNodes(n.Body, edit)
   757  	editNodes(n.Else, edit)
   758  }
   759  
   760  func (n *IndexExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   761  func (n *IndexExpr) copy() Node {
   762  	c := *n
   763  	c.init = copyNodes(c.init)
   764  	return &c
   765  }
   766  func (n *IndexExpr) doChildren(do func(Node) bool) bool {
   767  	if doNodes(n.init, do) {
   768  		return true
   769  	}
   770  	if n.X != nil && do(n.X) {
   771  		return true
   772  	}
   773  	if n.Index != nil && do(n.Index) {
   774  		return true
   775  	}
   776  	return false
   777  }
   778  func (n *IndexExpr) editChildren(edit func(Node) Node) {
   779  	editNodes(n.init, edit)
   780  	if n.X != nil {
   781  		n.X = edit(n.X).(Node)
   782  	}
   783  	if n.Index != nil {
   784  		n.Index = edit(n.Index).(Node)
   785  	}
   786  }
   787  func (n *IndexExpr) editChildrenWithHidden(edit func(Node) Node) {
   788  	editNodes(n.init, edit)
   789  	if n.X != nil {
   790  		n.X = edit(n.X).(Node)
   791  	}
   792  	if n.Index != nil {
   793  		n.Index = edit(n.Index).(Node)
   794  	}
   795  	if n.RType != nil {
   796  		n.RType = edit(n.RType).(Node)
   797  	}
   798  }
   799  
   800  func (n *InlineMarkStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   801  func (n *InlineMarkStmt) copy() Node {
   802  	c := *n
   803  	c.init = copyNodes(c.init)
   804  	return &c
   805  }
   806  func (n *InlineMarkStmt) doChildren(do func(Node) bool) bool {
   807  	if doNodes(n.init, do) {
   808  		return true
   809  	}
   810  	return false
   811  }
   812  func (n *InlineMarkStmt) editChildren(edit func(Node) Node) {
   813  	editNodes(n.init, edit)
   814  }
   815  func (n *InlineMarkStmt) editChildrenWithHidden(edit func(Node) Node) {
   816  	editNodes(n.init, edit)
   817  }
   818  
   819  func (n *InlinedCallExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   820  func (n *InlinedCallExpr) copy() Node {
   821  	c := *n
   822  	c.init = copyNodes(c.init)
   823  	c.Body = copyNodes(c.Body)
   824  	c.ReturnVars = copyNodes(c.ReturnVars)
   825  	return &c
   826  }
   827  func (n *InlinedCallExpr) doChildren(do func(Node) bool) bool {
   828  	if doNodes(n.init, do) {
   829  		return true
   830  	}
   831  	if doNodes(n.Body, do) {
   832  		return true
   833  	}
   834  	if doNodes(n.ReturnVars, do) {
   835  		return true
   836  	}
   837  	return false
   838  }
   839  func (n *InlinedCallExpr) editChildren(edit func(Node) Node) {
   840  	editNodes(n.init, edit)
   841  	editNodes(n.Body, edit)
   842  	editNodes(n.ReturnVars, edit)
   843  }
   844  func (n *InlinedCallExpr) editChildrenWithHidden(edit func(Node) Node) {
   845  	editNodes(n.init, edit)
   846  	editNodes(n.Body, edit)
   847  	editNodes(n.ReturnVars, edit)
   848  }
   849  
   850  func (n *InterfaceSwitchStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   851  func (n *InterfaceSwitchStmt) copy() Node {
   852  	c := *n
   853  	c.init = copyNodes(c.init)
   854  	return &c
   855  }
   856  func (n *InterfaceSwitchStmt) doChildren(do func(Node) bool) bool {
   857  	if doNodes(n.init, do) {
   858  		return true
   859  	}
   860  	if n.Case != nil && do(n.Case) {
   861  		return true
   862  	}
   863  	if n.Itab != nil && do(n.Itab) {
   864  		return true
   865  	}
   866  	if n.RuntimeType != nil && do(n.RuntimeType) {
   867  		return true
   868  	}
   869  	return false
   870  }
   871  func (n *InterfaceSwitchStmt) editChildren(edit func(Node) Node) {
   872  	editNodes(n.init, edit)
   873  	if n.Case != nil {
   874  		n.Case = edit(n.Case).(Node)
   875  	}
   876  	if n.Itab != nil {
   877  		n.Itab = edit(n.Itab).(Node)
   878  	}
   879  	if n.RuntimeType != nil {
   880  		n.RuntimeType = edit(n.RuntimeType).(Node)
   881  	}
   882  }
   883  func (n *InterfaceSwitchStmt) editChildrenWithHidden(edit func(Node) Node) {
   884  	editNodes(n.init, edit)
   885  	if n.Case != nil {
   886  		n.Case = edit(n.Case).(Node)
   887  	}
   888  	if n.Itab != nil {
   889  		n.Itab = edit(n.Itab).(Node)
   890  	}
   891  	if n.RuntimeType != nil {
   892  		n.RuntimeType = edit(n.RuntimeType).(Node)
   893  	}
   894  }
   895  
   896  func (n *JumpTableStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   897  func (n *JumpTableStmt) copy() Node {
   898  	c := *n
   899  	c.init = copyNodes(c.init)
   900  	return &c
   901  }
   902  func (n *JumpTableStmt) doChildren(do func(Node) bool) bool {
   903  	if doNodes(n.init, do) {
   904  		return true
   905  	}
   906  	if n.Idx != nil && do(n.Idx) {
   907  		return true
   908  	}
   909  	return false
   910  }
   911  func (n *JumpTableStmt) editChildren(edit func(Node) Node) {
   912  	editNodes(n.init, edit)
   913  	if n.Idx != nil {
   914  		n.Idx = edit(n.Idx).(Node)
   915  	}
   916  }
   917  func (n *JumpTableStmt) editChildrenWithHidden(edit func(Node) Node) {
   918  	editNodes(n.init, edit)
   919  	if n.Idx != nil {
   920  		n.Idx = edit(n.Idx).(Node)
   921  	}
   922  }
   923  
   924  func (n *KeyExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   925  func (n *KeyExpr) copy() Node {
   926  	c := *n
   927  	c.init = copyNodes(c.init)
   928  	return &c
   929  }
   930  func (n *KeyExpr) doChildren(do func(Node) bool) bool {
   931  	if doNodes(n.init, do) {
   932  		return true
   933  	}
   934  	if n.Key != nil && do(n.Key) {
   935  		return true
   936  	}
   937  	if n.Value != nil && do(n.Value) {
   938  		return true
   939  	}
   940  	return false
   941  }
   942  func (n *KeyExpr) editChildren(edit func(Node) Node) {
   943  	editNodes(n.init, edit)
   944  	if n.Key != nil {
   945  		n.Key = edit(n.Key).(Node)
   946  	}
   947  	if n.Value != nil {
   948  		n.Value = edit(n.Value).(Node)
   949  	}
   950  }
   951  func (n *KeyExpr) editChildrenWithHidden(edit func(Node) Node) {
   952  	editNodes(n.init, edit)
   953  	if n.Key != nil {
   954  		n.Key = edit(n.Key).(Node)
   955  	}
   956  	if n.Value != nil {
   957  		n.Value = edit(n.Value).(Node)
   958  	}
   959  }
   960  
   961  func (n *LabelStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   962  func (n *LabelStmt) copy() Node {
   963  	c := *n
   964  	c.init = copyNodes(c.init)
   965  	return &c
   966  }
   967  func (n *LabelStmt) doChildren(do func(Node) bool) bool {
   968  	if doNodes(n.init, do) {
   969  		return true
   970  	}
   971  	return false
   972  }
   973  func (n *LabelStmt) editChildren(edit func(Node) Node) {
   974  	editNodes(n.init, edit)
   975  }
   976  func (n *LabelStmt) editChildrenWithHidden(edit func(Node) Node) {
   977  	editNodes(n.init, edit)
   978  }
   979  
   980  func (n *LinksymOffsetExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
   981  func (n *LinksymOffsetExpr) copy() Node {
   982  	c := *n
   983  	c.init = copyNodes(c.init)
   984  	return &c
   985  }
   986  func (n *LinksymOffsetExpr) doChildren(do func(Node) bool) bool {
   987  	if doNodes(n.init, do) {
   988  		return true
   989  	}
   990  	return false
   991  }
   992  func (n *LinksymOffsetExpr) editChildren(edit func(Node) Node) {
   993  	editNodes(n.init, edit)
   994  }
   995  func (n *LinksymOffsetExpr) editChildrenWithHidden(edit func(Node) Node) {
   996  	editNodes(n.init, edit)
   997  }
   998  
   999  func (n *LogicalExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1000  func (n *LogicalExpr) copy() Node {
  1001  	c := *n
  1002  	c.init = copyNodes(c.init)
  1003  	return &c
  1004  }
  1005  func (n *LogicalExpr) doChildren(do func(Node) bool) bool {
  1006  	if doNodes(n.init, do) {
  1007  		return true
  1008  	}
  1009  	if n.X != nil && do(n.X) {
  1010  		return true
  1011  	}
  1012  	if n.Y != nil && do(n.Y) {
  1013  		return true
  1014  	}
  1015  	return false
  1016  }
  1017  func (n *LogicalExpr) editChildren(edit func(Node) Node) {
  1018  	editNodes(n.init, edit)
  1019  	if n.X != nil {
  1020  		n.X = edit(n.X).(Node)
  1021  	}
  1022  	if n.Y != nil {
  1023  		n.Y = edit(n.Y).(Node)
  1024  	}
  1025  }
  1026  func (n *LogicalExpr) editChildrenWithHidden(edit func(Node) Node) {
  1027  	editNodes(n.init, edit)
  1028  	if n.X != nil {
  1029  		n.X = edit(n.X).(Node)
  1030  	}
  1031  	if n.Y != nil {
  1032  		n.Y = edit(n.Y).(Node)
  1033  	}
  1034  }
  1035  
  1036  func (n *MakeExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1037  func (n *MakeExpr) copy() Node {
  1038  	c := *n
  1039  	c.init = copyNodes(c.init)
  1040  	return &c
  1041  }
  1042  func (n *MakeExpr) doChildren(do func(Node) bool) bool {
  1043  	if doNodes(n.init, do) {
  1044  		return true
  1045  	}
  1046  	if n.Len != nil && do(n.Len) {
  1047  		return true
  1048  	}
  1049  	if n.Cap != nil && do(n.Cap) {
  1050  		return true
  1051  	}
  1052  	return false
  1053  }
  1054  func (n *MakeExpr) editChildren(edit func(Node) Node) {
  1055  	editNodes(n.init, edit)
  1056  	if n.Len != nil {
  1057  		n.Len = edit(n.Len).(Node)
  1058  	}
  1059  	if n.Cap != nil {
  1060  		n.Cap = edit(n.Cap).(Node)
  1061  	}
  1062  }
  1063  func (n *MakeExpr) editChildrenWithHidden(edit func(Node) Node) {
  1064  	editNodes(n.init, edit)
  1065  	if n.RType != nil {
  1066  		n.RType = edit(n.RType).(Node)
  1067  	}
  1068  	if n.Len != nil {
  1069  		n.Len = edit(n.Len).(Node)
  1070  	}
  1071  	if n.Cap != nil {
  1072  		n.Cap = edit(n.Cap).(Node)
  1073  	}
  1074  }
  1075  
  1076  func (n *Name) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1077  
  1078  func (n *NilExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1079  func (n *NilExpr) copy() Node {
  1080  	c := *n
  1081  	c.init = copyNodes(c.init)
  1082  	return &c
  1083  }
  1084  func (n *NilExpr) doChildren(do func(Node) bool) bool {
  1085  	if doNodes(n.init, do) {
  1086  		return true
  1087  	}
  1088  	return false
  1089  }
  1090  func (n *NilExpr) editChildren(edit func(Node) Node) {
  1091  	editNodes(n.init, edit)
  1092  }
  1093  func (n *NilExpr) editChildrenWithHidden(edit func(Node) Node) {
  1094  	editNodes(n.init, edit)
  1095  }
  1096  
  1097  func (n *ParenExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1098  func (n *ParenExpr) copy() Node {
  1099  	c := *n
  1100  	c.init = copyNodes(c.init)
  1101  	return &c
  1102  }
  1103  func (n *ParenExpr) doChildren(do func(Node) bool) bool {
  1104  	if doNodes(n.init, do) {
  1105  		return true
  1106  	}
  1107  	if n.X != nil && do(n.X) {
  1108  		return true
  1109  	}
  1110  	return false
  1111  }
  1112  func (n *ParenExpr) editChildren(edit func(Node) Node) {
  1113  	editNodes(n.init, edit)
  1114  	if n.X != nil {
  1115  		n.X = edit(n.X).(Node)
  1116  	}
  1117  }
  1118  func (n *ParenExpr) editChildrenWithHidden(edit func(Node) Node) {
  1119  	editNodes(n.init, edit)
  1120  	if n.X != nil {
  1121  		n.X = edit(n.X).(Node)
  1122  	}
  1123  }
  1124  
  1125  func (n *RangeStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1126  func (n *RangeStmt) copy() Node {
  1127  	c := *n
  1128  	c.init = copyNodes(c.init)
  1129  	c.Body = copyNodes(c.Body)
  1130  	return &c
  1131  }
  1132  func (n *RangeStmt) doChildren(do func(Node) bool) bool {
  1133  	if doNodes(n.init, do) {
  1134  		return true
  1135  	}
  1136  	if n.X != nil && do(n.X) {
  1137  		return true
  1138  	}
  1139  	if n.Key != nil && do(n.Key) {
  1140  		return true
  1141  	}
  1142  	if n.Value != nil && do(n.Value) {
  1143  		return true
  1144  	}
  1145  	if doNodes(n.Body, do) {
  1146  		return true
  1147  	}
  1148  	if n.Prealloc != nil && do(n.Prealloc) {
  1149  		return true
  1150  	}
  1151  	return false
  1152  }
  1153  func (n *RangeStmt) editChildren(edit func(Node) Node) {
  1154  	editNodes(n.init, edit)
  1155  	if n.X != nil {
  1156  		n.X = edit(n.X).(Node)
  1157  	}
  1158  	if n.Key != nil {
  1159  		n.Key = edit(n.Key).(Node)
  1160  	}
  1161  	if n.Value != nil {
  1162  		n.Value = edit(n.Value).(Node)
  1163  	}
  1164  	editNodes(n.Body, edit)
  1165  	if n.Prealloc != nil {
  1166  		n.Prealloc = edit(n.Prealloc).(*Name)
  1167  	}
  1168  }
  1169  func (n *RangeStmt) editChildrenWithHidden(edit func(Node) Node) {
  1170  	editNodes(n.init, edit)
  1171  	if n.X != nil {
  1172  		n.X = edit(n.X).(Node)
  1173  	}
  1174  	if n.RType != nil {
  1175  		n.RType = edit(n.RType).(Node)
  1176  	}
  1177  	if n.Key != nil {
  1178  		n.Key = edit(n.Key).(Node)
  1179  	}
  1180  	if n.Value != nil {
  1181  		n.Value = edit(n.Value).(Node)
  1182  	}
  1183  	editNodes(n.Body, edit)
  1184  	if n.Prealloc != nil {
  1185  		n.Prealloc = edit(n.Prealloc).(*Name)
  1186  	}
  1187  	if n.KeyTypeWord != nil {
  1188  		n.KeyTypeWord = edit(n.KeyTypeWord).(Node)
  1189  	}
  1190  	if n.KeySrcRType != nil {
  1191  		n.KeySrcRType = edit(n.KeySrcRType).(Node)
  1192  	}
  1193  	if n.ValueTypeWord != nil {
  1194  		n.ValueTypeWord = edit(n.ValueTypeWord).(Node)
  1195  	}
  1196  	if n.ValueSrcRType != nil {
  1197  		n.ValueSrcRType = edit(n.ValueSrcRType).(Node)
  1198  	}
  1199  }
  1200  
  1201  func (n *ResultExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1202  func (n *ResultExpr) copy() Node {
  1203  	c := *n
  1204  	c.init = copyNodes(c.init)
  1205  	return &c
  1206  }
  1207  func (n *ResultExpr) doChildren(do func(Node) bool) bool {
  1208  	if doNodes(n.init, do) {
  1209  		return true
  1210  	}
  1211  	return false
  1212  }
  1213  func (n *ResultExpr) editChildren(edit func(Node) Node) {
  1214  	editNodes(n.init, edit)
  1215  }
  1216  func (n *ResultExpr) editChildrenWithHidden(edit func(Node) Node) {
  1217  	editNodes(n.init, edit)
  1218  }
  1219  
  1220  func (n *ReturnStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1221  func (n *ReturnStmt) copy() Node {
  1222  	c := *n
  1223  	c.init = copyNodes(c.init)
  1224  	c.Results = copyNodes(c.Results)
  1225  	return &c
  1226  }
  1227  func (n *ReturnStmt) doChildren(do func(Node) bool) bool {
  1228  	if doNodes(n.init, do) {
  1229  		return true
  1230  	}
  1231  	if doNodes(n.Results, do) {
  1232  		return true
  1233  	}
  1234  	return false
  1235  }
  1236  func (n *ReturnStmt) editChildren(edit func(Node) Node) {
  1237  	editNodes(n.init, edit)
  1238  	editNodes(n.Results, edit)
  1239  }
  1240  func (n *ReturnStmt) editChildrenWithHidden(edit func(Node) Node) {
  1241  	editNodes(n.init, edit)
  1242  	editNodes(n.Results, edit)
  1243  }
  1244  
  1245  func (n *SelectStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1246  func (n *SelectStmt) copy() Node {
  1247  	c := *n
  1248  	c.init = copyNodes(c.init)
  1249  	c.Cases = copyCommClauses(c.Cases)
  1250  	c.Compiled = copyNodes(c.Compiled)
  1251  	return &c
  1252  }
  1253  func (n *SelectStmt) doChildren(do func(Node) bool) bool {
  1254  	if doNodes(n.init, do) {
  1255  		return true
  1256  	}
  1257  	if doCommClauses(n.Cases, do) {
  1258  		return true
  1259  	}
  1260  	if doNodes(n.Compiled, do) {
  1261  		return true
  1262  	}
  1263  	return false
  1264  }
  1265  func (n *SelectStmt) editChildren(edit func(Node) Node) {
  1266  	editNodes(n.init, edit)
  1267  	editCommClauses(n.Cases, edit)
  1268  	editNodes(n.Compiled, edit)
  1269  }
  1270  func (n *SelectStmt) editChildrenWithHidden(edit func(Node) Node) {
  1271  	editNodes(n.init, edit)
  1272  	editCommClauses(n.Cases, edit)
  1273  	editNodes(n.Compiled, edit)
  1274  }
  1275  
  1276  func (n *SelectorExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1277  func (n *SelectorExpr) copy() Node {
  1278  	c := *n
  1279  	c.init = copyNodes(c.init)
  1280  	return &c
  1281  }
  1282  func (n *SelectorExpr) doChildren(do func(Node) bool) bool {
  1283  	if doNodes(n.init, do) {
  1284  		return true
  1285  	}
  1286  	if n.X != nil && do(n.X) {
  1287  		return true
  1288  	}
  1289  	if n.Prealloc != nil && do(n.Prealloc) {
  1290  		return true
  1291  	}
  1292  	return false
  1293  }
  1294  func (n *SelectorExpr) editChildren(edit func(Node) Node) {
  1295  	editNodes(n.init, edit)
  1296  	if n.X != nil {
  1297  		n.X = edit(n.X).(Node)
  1298  	}
  1299  	if n.Prealloc != nil {
  1300  		n.Prealloc = edit(n.Prealloc).(*Name)
  1301  	}
  1302  }
  1303  func (n *SelectorExpr) editChildrenWithHidden(edit func(Node) Node) {
  1304  	editNodes(n.init, edit)
  1305  	if n.X != nil {
  1306  		n.X = edit(n.X).(Node)
  1307  	}
  1308  	if n.Prealloc != nil {
  1309  		n.Prealloc = edit(n.Prealloc).(*Name)
  1310  	}
  1311  }
  1312  
  1313  func (n *SendStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1314  func (n *SendStmt) copy() Node {
  1315  	c := *n
  1316  	c.init = copyNodes(c.init)
  1317  	return &c
  1318  }
  1319  func (n *SendStmt) doChildren(do func(Node) bool) bool {
  1320  	if doNodes(n.init, do) {
  1321  		return true
  1322  	}
  1323  	if n.Chan != nil && do(n.Chan) {
  1324  		return true
  1325  	}
  1326  	if n.Value != nil && do(n.Value) {
  1327  		return true
  1328  	}
  1329  	return false
  1330  }
  1331  func (n *SendStmt) editChildren(edit func(Node) Node) {
  1332  	editNodes(n.init, edit)
  1333  	if n.Chan != nil {
  1334  		n.Chan = edit(n.Chan).(Node)
  1335  	}
  1336  	if n.Value != nil {
  1337  		n.Value = edit(n.Value).(Node)
  1338  	}
  1339  }
  1340  func (n *SendStmt) editChildrenWithHidden(edit func(Node) Node) {
  1341  	editNodes(n.init, edit)
  1342  	if n.Chan != nil {
  1343  		n.Chan = edit(n.Chan).(Node)
  1344  	}
  1345  	if n.Value != nil {
  1346  		n.Value = edit(n.Value).(Node)
  1347  	}
  1348  }
  1349  
  1350  func (n *SliceExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1351  func (n *SliceExpr) copy() Node {
  1352  	c := *n
  1353  	c.init = copyNodes(c.init)
  1354  	return &c
  1355  }
  1356  func (n *SliceExpr) doChildren(do func(Node) bool) bool {
  1357  	if doNodes(n.init, do) {
  1358  		return true
  1359  	}
  1360  	if n.X != nil && do(n.X) {
  1361  		return true
  1362  	}
  1363  	if n.Low != nil && do(n.Low) {
  1364  		return true
  1365  	}
  1366  	if n.High != nil && do(n.High) {
  1367  		return true
  1368  	}
  1369  	if n.Max != nil && do(n.Max) {
  1370  		return true
  1371  	}
  1372  	return false
  1373  }
  1374  func (n *SliceExpr) editChildren(edit func(Node) Node) {
  1375  	editNodes(n.init, edit)
  1376  	if n.X != nil {
  1377  		n.X = edit(n.X).(Node)
  1378  	}
  1379  	if n.Low != nil {
  1380  		n.Low = edit(n.Low).(Node)
  1381  	}
  1382  	if n.High != nil {
  1383  		n.High = edit(n.High).(Node)
  1384  	}
  1385  	if n.Max != nil {
  1386  		n.Max = edit(n.Max).(Node)
  1387  	}
  1388  }
  1389  func (n *SliceExpr) editChildrenWithHidden(edit func(Node) Node) {
  1390  	editNodes(n.init, edit)
  1391  	if n.X != nil {
  1392  		n.X = edit(n.X).(Node)
  1393  	}
  1394  	if n.Low != nil {
  1395  		n.Low = edit(n.Low).(Node)
  1396  	}
  1397  	if n.High != nil {
  1398  		n.High = edit(n.High).(Node)
  1399  	}
  1400  	if n.Max != nil {
  1401  		n.Max = edit(n.Max).(Node)
  1402  	}
  1403  }
  1404  
  1405  func (n *SliceHeaderExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1406  func (n *SliceHeaderExpr) copy() Node {
  1407  	c := *n
  1408  	c.init = copyNodes(c.init)
  1409  	return &c
  1410  }
  1411  func (n *SliceHeaderExpr) doChildren(do func(Node) bool) bool {
  1412  	if doNodes(n.init, do) {
  1413  		return true
  1414  	}
  1415  	if n.Ptr != nil && do(n.Ptr) {
  1416  		return true
  1417  	}
  1418  	if n.Len != nil && do(n.Len) {
  1419  		return true
  1420  	}
  1421  	if n.Cap != nil && do(n.Cap) {
  1422  		return true
  1423  	}
  1424  	return false
  1425  }
  1426  func (n *SliceHeaderExpr) editChildren(edit func(Node) Node) {
  1427  	editNodes(n.init, edit)
  1428  	if n.Ptr != nil {
  1429  		n.Ptr = edit(n.Ptr).(Node)
  1430  	}
  1431  	if n.Len != nil {
  1432  		n.Len = edit(n.Len).(Node)
  1433  	}
  1434  	if n.Cap != nil {
  1435  		n.Cap = edit(n.Cap).(Node)
  1436  	}
  1437  }
  1438  func (n *SliceHeaderExpr) editChildrenWithHidden(edit func(Node) Node) {
  1439  	editNodes(n.init, edit)
  1440  	if n.Ptr != nil {
  1441  		n.Ptr = edit(n.Ptr).(Node)
  1442  	}
  1443  	if n.Len != nil {
  1444  		n.Len = edit(n.Len).(Node)
  1445  	}
  1446  	if n.Cap != nil {
  1447  		n.Cap = edit(n.Cap).(Node)
  1448  	}
  1449  }
  1450  
  1451  func (n *StarExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1452  func (n *StarExpr) copy() Node {
  1453  	c := *n
  1454  	c.init = copyNodes(c.init)
  1455  	return &c
  1456  }
  1457  func (n *StarExpr) doChildren(do func(Node) bool) bool {
  1458  	if doNodes(n.init, do) {
  1459  		return true
  1460  	}
  1461  	if n.X != nil && do(n.X) {
  1462  		return true
  1463  	}
  1464  	return false
  1465  }
  1466  func (n *StarExpr) editChildren(edit func(Node) Node) {
  1467  	editNodes(n.init, edit)
  1468  	if n.X != nil {
  1469  		n.X = edit(n.X).(Node)
  1470  	}
  1471  }
  1472  func (n *StarExpr) editChildrenWithHidden(edit func(Node) Node) {
  1473  	editNodes(n.init, edit)
  1474  	if n.X != nil {
  1475  		n.X = edit(n.X).(Node)
  1476  	}
  1477  }
  1478  
  1479  func (n *StringHeaderExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1480  func (n *StringHeaderExpr) copy() Node {
  1481  	c := *n
  1482  	c.init = copyNodes(c.init)
  1483  	return &c
  1484  }
  1485  func (n *StringHeaderExpr) doChildren(do func(Node) bool) bool {
  1486  	if doNodes(n.init, do) {
  1487  		return true
  1488  	}
  1489  	if n.Ptr != nil && do(n.Ptr) {
  1490  		return true
  1491  	}
  1492  	if n.Len != nil && do(n.Len) {
  1493  		return true
  1494  	}
  1495  	return false
  1496  }
  1497  func (n *StringHeaderExpr) editChildren(edit func(Node) Node) {
  1498  	editNodes(n.init, edit)
  1499  	if n.Ptr != nil {
  1500  		n.Ptr = edit(n.Ptr).(Node)
  1501  	}
  1502  	if n.Len != nil {
  1503  		n.Len = edit(n.Len).(Node)
  1504  	}
  1505  }
  1506  func (n *StringHeaderExpr) editChildrenWithHidden(edit func(Node) Node) {
  1507  	editNodes(n.init, edit)
  1508  	if n.Ptr != nil {
  1509  		n.Ptr = edit(n.Ptr).(Node)
  1510  	}
  1511  	if n.Len != nil {
  1512  		n.Len = edit(n.Len).(Node)
  1513  	}
  1514  }
  1515  
  1516  func (n *StructKeyExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1517  func (n *StructKeyExpr) copy() Node {
  1518  	c := *n
  1519  	c.init = copyNodes(c.init)
  1520  	return &c
  1521  }
  1522  func (n *StructKeyExpr) doChildren(do func(Node) bool) bool {
  1523  	if doNodes(n.init, do) {
  1524  		return true
  1525  	}
  1526  	if n.Value != nil && do(n.Value) {
  1527  		return true
  1528  	}
  1529  	return false
  1530  }
  1531  func (n *StructKeyExpr) editChildren(edit func(Node) Node) {
  1532  	editNodes(n.init, edit)
  1533  	if n.Value != nil {
  1534  		n.Value = edit(n.Value).(Node)
  1535  	}
  1536  }
  1537  func (n *StructKeyExpr) editChildrenWithHidden(edit func(Node) Node) {
  1538  	editNodes(n.init, edit)
  1539  	if n.Value != nil {
  1540  		n.Value = edit(n.Value).(Node)
  1541  	}
  1542  }
  1543  
  1544  func (n *SwitchStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1545  func (n *SwitchStmt) copy() Node {
  1546  	c := *n
  1547  	c.init = copyNodes(c.init)
  1548  	c.Cases = copyCaseClauses(c.Cases)
  1549  	c.Compiled = copyNodes(c.Compiled)
  1550  	return &c
  1551  }
  1552  func (n *SwitchStmt) doChildren(do func(Node) bool) bool {
  1553  	if doNodes(n.init, do) {
  1554  		return true
  1555  	}
  1556  	if n.Tag != nil && do(n.Tag) {
  1557  		return true
  1558  	}
  1559  	if doCaseClauses(n.Cases, do) {
  1560  		return true
  1561  	}
  1562  	if doNodes(n.Compiled, do) {
  1563  		return true
  1564  	}
  1565  	return false
  1566  }
  1567  func (n *SwitchStmt) editChildren(edit func(Node) Node) {
  1568  	editNodes(n.init, edit)
  1569  	if n.Tag != nil {
  1570  		n.Tag = edit(n.Tag).(Node)
  1571  	}
  1572  	editCaseClauses(n.Cases, edit)
  1573  	editNodes(n.Compiled, edit)
  1574  }
  1575  func (n *SwitchStmt) editChildrenWithHidden(edit func(Node) Node) {
  1576  	editNodes(n.init, edit)
  1577  	if n.Tag != nil {
  1578  		n.Tag = edit(n.Tag).(Node)
  1579  	}
  1580  	editCaseClauses(n.Cases, edit)
  1581  	editNodes(n.Compiled, edit)
  1582  }
  1583  
  1584  func (n *TailCallStmt) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1585  func (n *TailCallStmt) copy() Node {
  1586  	c := *n
  1587  	c.init = copyNodes(c.init)
  1588  	return &c
  1589  }
  1590  func (n *TailCallStmt) doChildren(do func(Node) bool) bool {
  1591  	if doNodes(n.init, do) {
  1592  		return true
  1593  	}
  1594  	if n.Call != nil && do(n.Call) {
  1595  		return true
  1596  	}
  1597  	return false
  1598  }
  1599  func (n *TailCallStmt) editChildren(edit func(Node) Node) {
  1600  	editNodes(n.init, edit)
  1601  	if n.Call != nil {
  1602  		n.Call = edit(n.Call).(*CallExpr)
  1603  	}
  1604  }
  1605  func (n *TailCallStmt) editChildrenWithHidden(edit func(Node) Node) {
  1606  	editNodes(n.init, edit)
  1607  	if n.Call != nil {
  1608  		n.Call = edit(n.Call).(*CallExpr)
  1609  	}
  1610  }
  1611  
  1612  func (n *TypeAssertExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1613  func (n *TypeAssertExpr) copy() Node {
  1614  	c := *n
  1615  	c.init = copyNodes(c.init)
  1616  	return &c
  1617  }
  1618  func (n *TypeAssertExpr) doChildren(do func(Node) bool) bool {
  1619  	if doNodes(n.init, do) {
  1620  		return true
  1621  	}
  1622  	if n.X != nil && do(n.X) {
  1623  		return true
  1624  	}
  1625  	return false
  1626  }
  1627  func (n *TypeAssertExpr) editChildren(edit func(Node) Node) {
  1628  	editNodes(n.init, edit)
  1629  	if n.X != nil {
  1630  		n.X = edit(n.X).(Node)
  1631  	}
  1632  }
  1633  func (n *TypeAssertExpr) editChildrenWithHidden(edit func(Node) Node) {
  1634  	editNodes(n.init, edit)
  1635  	if n.X != nil {
  1636  		n.X = edit(n.X).(Node)
  1637  	}
  1638  	if n.ITab != nil {
  1639  		n.ITab = edit(n.ITab).(Node)
  1640  	}
  1641  }
  1642  
  1643  func (n *TypeSwitchGuard) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1644  func (n *TypeSwitchGuard) copy() Node {
  1645  	c := *n
  1646  	return &c
  1647  }
  1648  func (n *TypeSwitchGuard) doChildren(do func(Node) bool) bool {
  1649  	if n.Tag != nil && do(n.Tag) {
  1650  		return true
  1651  	}
  1652  	if n.X != nil && do(n.X) {
  1653  		return true
  1654  	}
  1655  	return false
  1656  }
  1657  func (n *TypeSwitchGuard) editChildren(edit func(Node) Node) {
  1658  	if n.Tag != nil {
  1659  		n.Tag = edit(n.Tag).(*Ident)
  1660  	}
  1661  	if n.X != nil {
  1662  		n.X = edit(n.X).(Node)
  1663  	}
  1664  }
  1665  func (n *TypeSwitchGuard) editChildrenWithHidden(edit func(Node) Node) {
  1666  	if n.Tag != nil {
  1667  		n.Tag = edit(n.Tag).(*Ident)
  1668  	}
  1669  	if n.X != nil {
  1670  		n.X = edit(n.X).(Node)
  1671  	}
  1672  }
  1673  
  1674  func (n *UnaryExpr) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1675  func (n *UnaryExpr) copy() Node {
  1676  	c := *n
  1677  	c.init = copyNodes(c.init)
  1678  	return &c
  1679  }
  1680  func (n *UnaryExpr) doChildren(do func(Node) bool) bool {
  1681  	if doNodes(n.init, do) {
  1682  		return true
  1683  	}
  1684  	if n.X != nil && do(n.X) {
  1685  		return true
  1686  	}
  1687  	return false
  1688  }
  1689  func (n *UnaryExpr) editChildren(edit func(Node) Node) {
  1690  	editNodes(n.init, edit)
  1691  	if n.X != nil {
  1692  		n.X = edit(n.X).(Node)
  1693  	}
  1694  }
  1695  func (n *UnaryExpr) editChildrenWithHidden(edit func(Node) Node) {
  1696  	editNodes(n.init, edit)
  1697  	if n.X != nil {
  1698  		n.X = edit(n.X).(Node)
  1699  	}
  1700  }
  1701  
  1702  func (n *typeNode) Format(s fmt.State, verb rune) { fmtNode(n, s, verb) }
  1703  func (n *typeNode) copy() Node {
  1704  	c := *n
  1705  	return &c
  1706  }
  1707  func (n *typeNode) doChildren(do func(Node) bool) bool {
  1708  	return false
  1709  }
  1710  func (n *typeNode) editChildren(edit func(Node) Node) {
  1711  }
  1712  func (n *typeNode) editChildrenWithHidden(edit func(Node) Node) {
  1713  }
  1714  
  1715  func copyCaseClauses(list []*CaseClause) []*CaseClause {
  1716  	if list == nil {
  1717  		return nil
  1718  	}
  1719  	c := make([]*CaseClause, len(list))
  1720  	copy(c, list)
  1721  	return c
  1722  }
  1723  func doCaseClauses(list []*CaseClause, do func(Node) bool) bool {
  1724  	for _, x := range list {
  1725  		if x != nil && do(x) {
  1726  			return true
  1727  		}
  1728  	}
  1729  	return false
  1730  }
  1731  func editCaseClauses(list []*CaseClause, edit func(Node) Node) {
  1732  	for i, x := range list {
  1733  		if x != nil {
  1734  			list[i] = edit(x).(*CaseClause)
  1735  		}
  1736  	}
  1737  }
  1738  
  1739  func copyCommClauses(list []*CommClause) []*CommClause {
  1740  	if list == nil {
  1741  		return nil
  1742  	}
  1743  	c := make([]*CommClause, len(list))
  1744  	copy(c, list)
  1745  	return c
  1746  }
  1747  func doCommClauses(list []*CommClause, do func(Node) bool) bool {
  1748  	for _, x := range list {
  1749  		if x != nil && do(x) {
  1750  			return true
  1751  		}
  1752  	}
  1753  	return false
  1754  }
  1755  func editCommClauses(list []*CommClause, edit func(Node) Node) {
  1756  	for i, x := range list {
  1757  		if x != nil {
  1758  			list[i] = edit(x).(*CommClause)
  1759  		}
  1760  	}
  1761  }
  1762  
  1763  func copyNames(list []*Name) []*Name {
  1764  	if list == nil {
  1765  		return nil
  1766  	}
  1767  	c := make([]*Name, len(list))
  1768  	copy(c, list)
  1769  	return c
  1770  }
  1771  func doNames(list []*Name, do func(Node) bool) bool {
  1772  	for _, x := range list {
  1773  		if x != nil && do(x) {
  1774  			return true
  1775  		}
  1776  	}
  1777  	return false
  1778  }
  1779  func editNames(list []*Name, edit func(Node) Node) {
  1780  	for i, x := range list {
  1781  		if x != nil {
  1782  			list[i] = edit(x).(*Name)
  1783  		}
  1784  	}
  1785  }
  1786  
  1787  func copyNodes(list []Node) []Node {
  1788  	if list == nil {
  1789  		return nil
  1790  	}
  1791  	c := make([]Node, len(list))
  1792  	copy(c, list)
  1793  	return c
  1794  }
  1795  func doNodes(list []Node, do func(Node) bool) bool {
  1796  	for _, x := range list {
  1797  		if x != nil && do(x) {
  1798  			return true
  1799  		}
  1800  	}
  1801  	return false
  1802  }
  1803  func editNodes(list []Node, edit func(Node) Node) {
  1804  	for i, x := range list {
  1805  		if x != nil {
  1806  			list[i] = edit(x).(Node)
  1807  		}
  1808  	}
  1809  }