@openrewrite/rewrite 8.63.0 → 8.63.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/dist/java/index.d.ts +1 -0
  2. package/dist/java/index.d.ts.map +1 -1
  3. package/dist/java/index.js +1 -0
  4. package/dist/java/index.js.map +1 -1
  5. package/dist/java/rpc.d.ts +2 -0
  6. package/dist/java/rpc.d.ts.map +1 -1
  7. package/dist/java/rpc.js +749 -410
  8. package/dist/java/rpc.js.map +1 -1
  9. package/dist/java/tree.d.ts +1 -1
  10. package/dist/java/tree.d.ts.map +1 -1
  11. package/dist/java/type-visitor.d.ts +48 -0
  12. package/dist/java/type-visitor.d.ts.map +1 -0
  13. package/dist/java/type-visitor.js +260 -0
  14. package/dist/java/type-visitor.js.map +1 -0
  15. package/dist/java/type.d.ts +2 -0
  16. package/dist/java/type.d.ts.map +1 -1
  17. package/dist/java/type.js +0 -317
  18. package/dist/java/type.js.map +1 -1
  19. package/dist/java/visitor.d.ts.map +1 -1
  20. package/dist/java/visitor.js +579 -363
  21. package/dist/java/visitor.js.map +1 -1
  22. package/dist/javascript/preconditions.d.ts +1 -1
  23. package/dist/javascript/preconditions.d.ts.map +1 -1
  24. package/dist/javascript/preconditions.js +7 -6
  25. package/dist/javascript/preconditions.js.map +1 -1
  26. package/dist/javascript/rpc.js +430 -350
  27. package/dist/javascript/rpc.js.map +1 -1
  28. package/dist/javascript/tree.d.ts +1 -1
  29. package/dist/javascript/tree.d.ts.map +1 -1
  30. package/dist/javascript/type-mapping.d.ts.map +1 -1
  31. package/dist/javascript/type-mapping.js +7 -0
  32. package/dist/javascript/type-mapping.js.map +1 -1
  33. package/dist/javascript/visitor.d.ts.map +1 -1
  34. package/dist/javascript/visitor.js +504 -309
  35. package/dist/javascript/visitor.js.map +1 -1
  36. package/dist/json/visitor.d.ts.map +1 -1
  37. package/dist/json/visitor.js +46 -21
  38. package/dist/json/visitor.js.map +1 -1
  39. package/dist/rpc/queue.d.ts +7 -4
  40. package/dist/rpc/queue.d.ts.map +1 -1
  41. package/dist/rpc/queue.js +22 -32
  42. package/dist/rpc/queue.js.map +1 -1
  43. package/dist/rpc/request/generate.d.ts.map +1 -1
  44. package/dist/rpc/request/generate.js +2 -3
  45. package/dist/rpc/request/generate.js.map +1 -1
  46. package/dist/rpc/request/get-languages.d.ts.map +1 -1
  47. package/dist/rpc/request/get-languages.js +4 -3
  48. package/dist/rpc/request/get-languages.js.map +1 -1
  49. package/dist/rpc/request/get-object.d.ts +1 -1
  50. package/dist/rpc/request/get-object.d.ts.map +1 -1
  51. package/dist/rpc/request/get-object.js +8 -7
  52. package/dist/rpc/request/get-object.js.map +1 -1
  53. package/dist/rpc/request/get-recipes.d.ts.map +1 -1
  54. package/dist/rpc/request/get-recipes.js +2 -2
  55. package/dist/rpc/request/get-recipes.js.map +1 -1
  56. package/dist/rpc/request/index.d.ts +1 -0
  57. package/dist/rpc/request/index.d.ts.map +1 -1
  58. package/dist/rpc/request/index.js +1 -0
  59. package/dist/rpc/request/index.js.map +1 -1
  60. package/dist/rpc/request/install-recipes.d.ts.map +1 -1
  61. package/dist/rpc/request/install-recipes.js +30 -21
  62. package/dist/rpc/request/install-recipes.js.map +1 -1
  63. package/dist/rpc/request/metrics.d.ts +10 -10
  64. package/dist/rpc/request/metrics.d.ts.map +1 -1
  65. package/dist/rpc/request/metrics.js +38 -31
  66. package/dist/rpc/request/metrics.js.map +1 -1
  67. package/dist/rpc/request/parse.d.ts.map +1 -1
  68. package/dist/rpc/request/parse.js +10 -12
  69. package/dist/rpc/request/parse.js.map +1 -1
  70. package/dist/rpc/request/prepare-recipe.d.ts.map +1 -1
  71. package/dist/rpc/request/prepare-recipe.js +4 -4
  72. package/dist/rpc/request/prepare-recipe.js.map +1 -1
  73. package/dist/rpc/request/print.d.ts +1 -1
  74. package/dist/rpc/request/print.d.ts.map +1 -1
  75. package/dist/rpc/request/print.js +10 -6
  76. package/dist/rpc/request/print.js.map +1 -1
  77. package/dist/rpc/request/trace-get-object.d.ts +5 -0
  78. package/dist/rpc/request/trace-get-object.d.ts.map +1 -0
  79. package/dist/rpc/request/trace-get-object.js +3 -0
  80. package/dist/rpc/request/trace-get-object.js.map +1 -0
  81. package/dist/rpc/request/visit.d.ts.map +1 -1
  82. package/dist/rpc/request/visit.js +2 -3
  83. package/dist/rpc/request/visit.js.map +1 -1
  84. package/dist/rpc/rewrite-rpc.d.ts +2 -3
  85. package/dist/rpc/rewrite-rpc.d.ts.map +1 -1
  86. package/dist/rpc/rewrite-rpc.js +14 -5
  87. package/dist/rpc/rewrite-rpc.js.map +1 -1
  88. package/dist/rpc/server.d.ts.map +1 -1
  89. package/dist/rpc/server.js +15 -44
  90. package/dist/rpc/server.js.map +1 -1
  91. package/dist/rpc/trace.d.ts +1 -1
  92. package/dist/rpc/trace.d.ts.map +1 -1
  93. package/dist/rpc/trace.js +3 -3
  94. package/dist/rpc/trace.js.map +1 -1
  95. package/dist/util.d.ts +6 -0
  96. package/dist/util.d.ts.map +1 -1
  97. package/dist/util.js +14 -0
  98. package/dist/util.js.map +1 -1
  99. package/dist/version.txt +1 -1
  100. package/package.json +1 -1
  101. package/src/java/index.ts +1 -0
  102. package/src/java/rpc.ts +726 -537
  103. package/src/java/tree.ts +1 -1
  104. package/src/java/type-visitor.ts +241 -0
  105. package/src/java/type.ts +13 -277
  106. package/src/java/visitor.ts +581 -378
  107. package/src/javascript/preconditions.ts +7 -6
  108. package/src/javascript/rpc.ts +431 -360
  109. package/src/javascript/tree.ts +1 -1
  110. package/src/javascript/type-mapping.ts +7 -0
  111. package/src/javascript/visitor.ts +505 -310
  112. package/src/json/visitor.ts +47 -22
  113. package/src/rpc/queue.ts +20 -17
  114. package/src/rpc/request/generate.ts +31 -25
  115. package/src/rpc/request/get-languages.ts +18 -10
  116. package/src/rpc/request/get-object.ts +42 -34
  117. package/src/rpc/request/get-recipes.ts +15 -8
  118. package/src/rpc/request/index.ts +1 -0
  119. package/src/rpc/request/install-recipes.ts +96 -79
  120. package/src/rpc/request/metrics.ts +54 -48
  121. package/src/rpc/request/parse.ts +31 -25
  122. package/src/rpc/request/prepare-recipe.ts +31 -23
  123. package/src/rpc/request/print.ts +28 -14
  124. package/src/rpc/request/trace-get-object.ts +4 -0
  125. package/src/rpc/request/visit.ts +22 -16
  126. package/src/rpc/rewrite-rpc.ts +23 -10
  127. package/src/rpc/server.ts +17 -52
  128. package/src/rpc/trace.ts +3 -3
  129. package/src/util.ts +14 -0
  130. package/dist/rpc/chrome-profiler.d.ts +0 -25
  131. package/dist/rpc/chrome-profiler.d.ts.map +0 -1
  132. package/dist/rpc/chrome-profiler.js +0 -405
  133. package/dist/rpc/chrome-profiler.js.map +0 -1
  134. package/src/rpc/chrome-profiler.ts +0 -373
@@ -92,10 +92,13 @@ class JavaVisitor extends visitor_1.TreeVisitor {
92
92
  return expression;
93
93
  }
94
94
  annotatedType = expression;
95
- return this.produceJava(annotatedType, p, (draft) => __awaiter(this, void 0, void 0, function* () {
96
- draft.annotations = yield (0, util_1.mapAsync)(annotatedType.annotations, a => this.visitDefined(a, p));
97
- draft.typeExpression = (yield this.visitDefined(annotatedType.typeExpression, p));
98
- }));
95
+ const updates = {
96
+ prefix: yield this.visitSpace(annotatedType.prefix, p),
97
+ markers: yield this.visitMarkers(annotatedType.markers, p),
98
+ annotations: yield (0, util_1.mapAsync)(annotatedType.annotations, a => this.visitDefined(a, p)),
99
+ typeExpression: yield this.visitDefined(annotatedType.typeExpression, p)
100
+ };
101
+ return (0, util_1.updateIfChanged)(annotatedType, updates);
99
102
  });
100
103
  }
101
104
  visitAnnotation(annotation, p) {
@@ -105,10 +108,13 @@ class JavaVisitor extends visitor_1.TreeVisitor {
105
108
  return expression;
106
109
  }
107
110
  annotation = expression;
108
- return this.produceJava(annotation, p, (draft) => __awaiter(this, void 0, void 0, function* () {
109
- draft.annotationType = yield this.visitTypeName(annotation.annotationType, p);
110
- draft.arguments = yield this.visitOptionalContainer(annotation.arguments, p);
111
- }));
111
+ const updates = {
112
+ prefix: yield this.visitSpace(annotation.prefix, p),
113
+ markers: yield this.visitMarkers(annotation.markers, p),
114
+ annotationType: yield this.visitTypeName(annotation.annotationType, p),
115
+ arguments: yield this.visitOptionalContainer(annotation.arguments, p)
116
+ };
117
+ return (0, util_1.updateIfChanged)(annotation, updates);
112
118
  });
113
119
  }
114
120
  visitArrayAccess(arrayAccess, p) {
@@ -118,17 +124,23 @@ class JavaVisitor extends visitor_1.TreeVisitor {
118
124
  return expression;
119
125
  }
120
126
  arrayAccess = expression;
121
- return this.produceJava(arrayAccess, p, (draft) => __awaiter(this, void 0, void 0, function* () {
122
- draft.indexed = (yield this.visitDefined(arrayAccess.indexed, p));
123
- draft.dimension = (yield this.visitDefined(arrayAccess.dimension, p));
124
- }));
127
+ const updates = {
128
+ prefix: yield this.visitSpace(arrayAccess.prefix, p),
129
+ markers: yield this.visitMarkers(arrayAccess.markers, p),
130
+ indexed: yield this.visitDefined(arrayAccess.indexed, p),
131
+ dimension: yield this.visitDefined(arrayAccess.dimension, p)
132
+ };
133
+ return (0, util_1.updateIfChanged)(arrayAccess, updates);
125
134
  });
126
135
  }
127
136
  visitArrayDimension(arrayDimension, p) {
128
137
  return __awaiter(this, void 0, void 0, function* () {
129
- return this.produceJava(arrayDimension, p, (draft) => __awaiter(this, void 0, void 0, function* () {
130
- draft.index = yield this.visitRightPadded(arrayDimension.index, p);
131
- }));
138
+ const updates = {
139
+ prefix: yield this.visitSpace(arrayDimension.prefix, p),
140
+ markers: yield this.visitMarkers(arrayDimension.markers, p),
141
+ index: yield this.visitRightPadded(arrayDimension.index, p)
142
+ };
143
+ return (0, util_1.updateIfChanged)(arrayDimension, updates);
132
144
  });
133
145
  }
134
146
  visitArrayType(arrayType, p) {
@@ -138,14 +150,17 @@ class JavaVisitor extends visitor_1.TreeVisitor {
138
150
  return expression;
139
151
  }
140
152
  arrayType = expression;
141
- return this.produceJava(arrayType, p, (draft) => __awaiter(this, void 0, void 0, function* () {
142
- draft.elementType = (yield this.visitDefined(arrayType.elementType, p));
143
- if (arrayType.annotations) {
144
- draft.annotations = yield (0, util_1.mapAsync)(arrayType.annotations, a => this.visitDefined(a, p));
145
- }
146
- draft.dimension = yield this.visitLeftPadded(arrayType.dimension, p);
147
- draft.type = yield this.visitType(arrayType.type, p);
148
- }));
153
+ const updates = {
154
+ prefix: yield this.visitSpace(arrayType.prefix, p),
155
+ markers: yield this.visitMarkers(arrayType.markers, p),
156
+ elementType: yield this.visitDefined(arrayType.elementType, p),
157
+ dimension: yield this.visitLeftPadded(arrayType.dimension, p),
158
+ type: yield this.visitType(arrayType.type, p)
159
+ };
160
+ if (arrayType.annotations) {
161
+ updates.annotations = yield (0, util_1.mapAsync)(arrayType.annotations, a => this.visitDefined(a, p));
162
+ }
163
+ return (0, util_1.updateIfChanged)(arrayType, updates);
149
164
  });
150
165
  }
151
166
  visitAssert(anAssert, p) {
@@ -155,10 +170,13 @@ class JavaVisitor extends visitor_1.TreeVisitor {
155
170
  return statement;
156
171
  }
157
172
  anAssert = statement;
158
- return this.produceJava(anAssert, p, (draft) => __awaiter(this, void 0, void 0, function* () {
159
- draft.condition = (yield this.visitDefined(anAssert.condition, p));
160
- draft.detail = yield this.visitOptionalLeftPadded(anAssert.detail, p);
161
- }));
173
+ const updates = {
174
+ prefix: yield this.visitSpace(anAssert.prefix, p),
175
+ markers: yield this.visitMarkers(anAssert.markers, p),
176
+ condition: yield this.visitDefined(anAssert.condition, p),
177
+ detail: yield this.visitOptionalLeftPadded(anAssert.detail, p)
178
+ };
179
+ return (0, util_1.updateIfChanged)(anAssert, updates);
162
180
  });
163
181
  }
164
182
  visitAssignment(assignment, p) {
@@ -173,11 +191,14 @@ class JavaVisitor extends visitor_1.TreeVisitor {
173
191
  return statement;
174
192
  }
175
193
  assignment = statement;
176
- return this.produceJava(assignment, p, (draft) => __awaiter(this, void 0, void 0, function* () {
177
- draft.variable = (yield this.visitDefined(assignment.variable, p));
178
- draft.assignment = yield this.visitLeftPadded(assignment.assignment, p);
179
- draft.type = yield this.visitType(assignment.type, p);
180
- }));
194
+ const updates = {
195
+ prefix: yield this.visitSpace(assignment.prefix, p),
196
+ markers: yield this.visitMarkers(assignment.markers, p),
197
+ variable: yield this.visitDefined(assignment.variable, p),
198
+ assignment: yield this.visitLeftPadded(assignment.assignment, p),
199
+ type: yield this.visitType(assignment.type, p)
200
+ };
201
+ return (0, util_1.updateIfChanged)(assignment, updates);
181
202
  });
182
203
  }
183
204
  visitAssignmentOperation(assignOp, p) {
@@ -187,12 +208,15 @@ class JavaVisitor extends visitor_1.TreeVisitor {
187
208
  return expression;
188
209
  }
189
210
  assignOp = expression;
190
- return this.produceJava(assignOp, p, (draft) => __awaiter(this, void 0, void 0, function* () {
191
- draft.variable = (yield this.visitDefined(assignOp.variable, p));
192
- draft.operator = yield this.visitLeftPadded(assignOp.operator, p);
193
- draft.assignment = (yield this.visitDefined(assignOp.assignment, p));
194
- draft.type = yield this.visitType(assignOp.type, p);
195
- }));
211
+ const updates = {
212
+ prefix: yield this.visitSpace(assignOp.prefix, p),
213
+ markers: yield this.visitMarkers(assignOp.markers, p),
214
+ variable: yield this.visitDefined(assignOp.variable, p),
215
+ operator: yield this.visitLeftPadded(assignOp.operator, p),
216
+ assignment: yield this.visitDefined(assignOp.assignment, p),
217
+ type: yield this.visitType(assignOp.type, p)
218
+ };
219
+ return (0, util_1.updateIfChanged)(assignOp, updates);
196
220
  });
197
221
  }
198
222
  visitBinary(binary, p) {
@@ -202,21 +226,27 @@ class JavaVisitor extends visitor_1.TreeVisitor {
202
226
  return expression;
203
227
  }
204
228
  binary = expression;
205
- return this.produceJava(binary, p, (draft) => __awaiter(this, void 0, void 0, function* () {
206
- draft.left = (yield this.visitDefined(binary.left, p));
207
- draft.operator = yield this.visitLeftPadded(binary.operator, p);
208
- draft.right = (yield this.visitDefined(binary.right, p));
209
- draft.type = yield this.visitType(binary.type, p);
210
- }));
229
+ const updates = {
230
+ prefix: yield this.visitSpace(binary.prefix, p),
231
+ markers: yield this.visitMarkers(binary.markers, p),
232
+ left: yield this.visitDefined(binary.left, p),
233
+ operator: yield this.visitLeftPadded(binary.operator, p),
234
+ right: yield this.visitDefined(binary.right, p),
235
+ type: yield this.visitType(binary.type, p)
236
+ };
237
+ return (0, util_1.updateIfChanged)(binary, updates);
211
238
  });
212
239
  }
213
240
  visitBlock(block, p) {
214
241
  return __awaiter(this, void 0, void 0, function* () {
215
- return this.produceJava(block, p, (draft) => __awaiter(this, void 0, void 0, function* () {
216
- draft.static = yield this.visitRightPadded(block.static, p);
217
- draft.statements = yield (0, util_1.mapAsync)(block.statements, stmt => this.visitRightPadded(stmt, p));
218
- draft.end = yield this.visitSpace(block.end, p);
219
- }));
242
+ const updates = {
243
+ prefix: yield this.visitSpace(block.prefix, p),
244
+ markers: yield this.visitMarkers(block.markers, p),
245
+ static: yield this.visitRightPadded(block.static, p),
246
+ statements: yield (0, util_1.mapAsync)(block.statements, stmt => this.visitRightPadded(stmt, p)),
247
+ end: yield this.visitSpace(block.end, p)
248
+ };
249
+ return (0, util_1.updateIfChanged)(block, updates);
220
250
  });
221
251
  }
222
252
  visitBreak(breakStatement, p) {
@@ -226,11 +256,14 @@ class JavaVisitor extends visitor_1.TreeVisitor {
226
256
  return statement;
227
257
  }
228
258
  breakStatement = statement;
229
- return this.produceJava(breakStatement, p, (draft) => __awaiter(this, void 0, void 0, function* () {
230
- if (breakStatement.label) {
231
- draft.label = (yield this.visitDefined(breakStatement.label, p));
232
- }
233
- }));
259
+ const updates = {
260
+ prefix: yield this.visitSpace(breakStatement.prefix, p),
261
+ markers: yield this.visitMarkers(breakStatement.markers, p)
262
+ };
263
+ if (breakStatement.label) {
264
+ updates.label = (yield this.visitDefined(breakStatement.label, p));
265
+ }
266
+ return (0, util_1.updateIfChanged)(breakStatement, updates);
234
267
  });
235
268
  }
236
269
  visitCase(aCase, p) {
@@ -240,14 +273,17 @@ class JavaVisitor extends visitor_1.TreeVisitor {
240
273
  return statement;
241
274
  }
242
275
  aCase = statement;
243
- return this.produceJava(aCase, p, (draft) => __awaiter(this, void 0, void 0, function* () {
244
- draft.caseLabels = yield this.visitContainer(aCase.caseLabels, p);
245
- draft.statements = yield this.visitContainer(aCase.statements, p);
246
- draft.body = yield this.visitOptionalRightPadded(aCase.body, p);
247
- if (aCase.guard) {
248
- draft.guard = (yield this.visitDefined(aCase.guard, p));
249
- }
250
- }));
276
+ const updates = {
277
+ prefix: yield this.visitSpace(aCase.prefix, p),
278
+ markers: yield this.visitMarkers(aCase.markers, p),
279
+ caseLabels: yield this.visitContainer(aCase.caseLabels, p),
280
+ statements: yield this.visitContainer(aCase.statements, p),
281
+ body: yield this.visitOptionalRightPadded(aCase.body, p)
282
+ };
283
+ if (aCase.guard) {
284
+ updates.guard = (yield this.visitDefined(aCase.guard, p));
285
+ }
286
+ return (0, util_1.updateIfChanged)(aCase, updates);
251
287
  });
252
288
  }
253
289
  visitClassDeclaration(classDecl, p) {
@@ -257,36 +293,45 @@ class JavaVisitor extends visitor_1.TreeVisitor {
257
293
  return statement;
258
294
  }
259
295
  classDecl = statement;
260
- return this.produceJava(classDecl, p, (draft) => __awaiter(this, void 0, void 0, function* () {
261
- draft.leadingAnnotations = yield (0, util_1.mapAsync)(classDecl.leadingAnnotations, a => this.visitDefined(a, p));
262
- draft.modifiers = yield (0, util_1.mapAsync)(classDecl.modifiers, m => this.visitDefined(m, p));
263
- draft.classKind = (yield this.visitDefined(classDecl.classKind, p));
264
- draft.name = (yield this.visitDefined(classDecl.name, p));
265
- draft.typeParameters = yield this.visitOptionalContainer(classDecl.typeParameters, p);
266
- draft.primaryConstructor = yield this.visitOptionalContainer(classDecl.primaryConstructor, p);
267
- draft.extends = yield this.visitOptionalLeftPadded(classDecl.extends, p);
268
- draft.implements = yield this.visitOptionalContainer(classDecl.implements, p);
269
- draft.permitting = yield this.visitOptionalContainer(classDecl.permitting, p);
270
- draft.body = (yield this.visitDefined(classDecl.body, p));
271
- draft.type = (yield this.visitType(classDecl.type, p));
272
- }));
296
+ const updates = {
297
+ prefix: yield this.visitSpace(classDecl.prefix, p),
298
+ markers: yield this.visitMarkers(classDecl.markers, p),
299
+ leadingAnnotations: yield (0, util_1.mapAsync)(classDecl.leadingAnnotations, a => this.visitDefined(a, p)),
300
+ modifiers: yield (0, util_1.mapAsync)(classDecl.modifiers, m => this.visitDefined(m, p)),
301
+ classKind: yield this.visitDefined(classDecl.classKind, p),
302
+ name: yield this.visitDefined(classDecl.name, p),
303
+ typeParameters: yield this.visitOptionalContainer(classDecl.typeParameters, p),
304
+ primaryConstructor: yield this.visitOptionalContainer(classDecl.primaryConstructor, p),
305
+ extends: yield this.visitOptionalLeftPadded(classDecl.extends, p),
306
+ implements: yield this.visitOptionalContainer(classDecl.implements, p),
307
+ permitting: yield this.visitOptionalContainer(classDecl.permitting, p),
308
+ body: yield this.visitDefined(classDecl.body, p),
309
+ type: yield this.visitType(classDecl.type, p)
310
+ };
311
+ return (0, util_1.updateIfChanged)(classDecl, updates);
273
312
  });
274
313
  }
275
314
  visitClassDeclarationKind(kind, p) {
276
315
  return __awaiter(this, void 0, void 0, function* () {
277
- return this.produceJava(kind, p, (draft) => __awaiter(this, void 0, void 0, function* () {
278
- draft.annotations = yield (0, util_1.mapAsync)(kind.annotations, a => this.visitDefined(a, p));
279
- }));
316
+ const updates = {
317
+ prefix: yield this.visitSpace(kind.prefix, p),
318
+ markers: yield this.visitMarkers(kind.markers, p),
319
+ annotations: yield (0, util_1.mapAsync)(kind.annotations, a => this.visitDefined(a, p))
320
+ };
321
+ return (0, util_1.updateIfChanged)(kind, updates);
280
322
  });
281
323
  }
282
324
  visitCompilationUnit(cu, p) {
283
325
  return __awaiter(this, void 0, void 0, function* () {
284
- return this.produceJava(cu, p, (draft) => __awaiter(this, void 0, void 0, function* () {
285
- draft.packageDeclaration = (yield this.visitRightPadded(cu.packageDeclaration, p));
286
- draft.imports = yield (0, util_1.mapAsync)(cu.imports, imp => this.visitRightPadded(imp, p));
287
- draft.classes = yield (0, util_1.mapAsync)(cu.classes, cls => this.visitDefined(cls, p));
288
- draft.eof = yield this.visitSpace(cu.eof, p);
289
- }));
326
+ const updates = {
327
+ prefix: yield this.visitSpace(cu.prefix, p),
328
+ markers: yield this.visitMarkers(cu.markers, p),
329
+ packageDeclaration: yield this.visitRightPadded(cu.packageDeclaration, p),
330
+ imports: yield (0, util_1.mapAsync)(cu.imports, imp => this.visitRightPadded(imp, p)),
331
+ classes: yield (0, util_1.mapAsync)(cu.classes, cls => this.visitDefined(cls, p)),
332
+ eof: yield this.visitSpace(cu.eof, p)
333
+ };
334
+ return (0, util_1.updateIfChanged)(cu, updates);
290
335
  });
291
336
  }
292
337
  visitContinue(continueStatement, p) {
@@ -296,27 +341,36 @@ class JavaVisitor extends visitor_1.TreeVisitor {
296
341
  return statement;
297
342
  }
298
343
  continueStatement = statement;
299
- return this.produceJava(continueStatement, p, (draft) => __awaiter(this, void 0, void 0, function* () {
300
- if (continueStatement.label) {
301
- draft.label = (yield this.visitDefined(continueStatement.label, p));
302
- }
303
- }));
344
+ const updates = {
345
+ prefix: yield this.visitSpace(continueStatement.prefix, p),
346
+ markers: yield this.visitMarkers(continueStatement.markers, p)
347
+ };
348
+ if (continueStatement.label) {
349
+ updates.label = (yield this.visitDefined(continueStatement.label, p));
350
+ }
351
+ return (0, util_1.updateIfChanged)(continueStatement, updates);
304
352
  });
305
353
  }
306
354
  visitControlParentheses(controlParens, p) {
307
355
  return __awaiter(this, void 0, void 0, function* () {
308
- return this.produceJava(controlParens, p, (draft) => __awaiter(this, void 0, void 0, function* () {
309
- draft.tree = yield this.visitRightPadded(controlParens.tree, p);
310
- }));
356
+ const updates = {
357
+ prefix: yield this.visitSpace(controlParens.prefix, p),
358
+ markers: yield this.visitMarkers(controlParens.markers, p),
359
+ tree: yield this.visitRightPadded(controlParens.tree, p)
360
+ };
361
+ return (0, util_1.updateIfChanged)(controlParens, updates);
311
362
  });
312
363
  }
313
364
  visitDeconstructionPattern(pattern, p) {
314
365
  return __awaiter(this, void 0, void 0, function* () {
315
- return this.produceJava(pattern, p, (draft) => __awaiter(this, void 0, void 0, function* () {
316
- draft.deconstructor = (yield this.visitDefined(pattern.deconstructor, p));
317
- draft.nested = yield this.visitContainer(pattern.nested, p);
318
- draft.type = yield this.visitType(pattern.type, p);
319
- }));
366
+ const updates = {
367
+ prefix: yield this.visitSpace(pattern.prefix, p),
368
+ markers: yield this.visitMarkers(pattern.markers, p),
369
+ deconstructor: yield this.visitDefined(pattern.deconstructor, p),
370
+ nested: yield this.visitContainer(pattern.nested, p),
371
+ type: yield this.visitType(pattern.type, p)
372
+ };
373
+ return (0, util_1.updateIfChanged)(pattern, updates);
320
374
  });
321
375
  }
322
376
  visitDoWhileLoop(doWhileLoop, p) {
@@ -326,10 +380,13 @@ class JavaVisitor extends visitor_1.TreeVisitor {
326
380
  return statement;
327
381
  }
328
382
  doWhileLoop = statement;
329
- return this.produceJava(doWhileLoop, p, (draft) => __awaiter(this, void 0, void 0, function* () {
330
- draft.body = yield this.visitRightPadded(doWhileLoop.body, p);
331
- draft.whileCondition = yield this.visitLeftPadded(doWhileLoop.whileCondition, p);
332
- }));
383
+ const updates = {
384
+ prefix: yield this.visitSpace(doWhileLoop.prefix, p),
385
+ markers: yield this.visitMarkers(doWhileLoop.markers, p),
386
+ body: yield this.visitRightPadded(doWhileLoop.body, p),
387
+ whileCondition: yield this.visitLeftPadded(doWhileLoop.whileCondition, p)
388
+ };
389
+ return (0, util_1.updateIfChanged)(doWhileLoop, updates);
333
390
  });
334
391
  }
335
392
  visitEmpty(empty, p) {
@@ -344,18 +401,25 @@ class JavaVisitor extends visitor_1.TreeVisitor {
344
401
  return statement;
345
402
  }
346
403
  empty = statement;
347
- return this.produceJava(empty, p);
404
+ const updates = {
405
+ prefix: yield this.visitSpace(empty.prefix, p),
406
+ markers: yield this.visitMarkers(empty.markers, p)
407
+ };
408
+ return (0, util_1.updateIfChanged)(empty, updates);
348
409
  });
349
410
  }
350
411
  visitEnumValue(enumValue, p) {
351
412
  return __awaiter(this, void 0, void 0, function* () {
352
- return this.produceJava(enumValue, p, (draft) => __awaiter(this, void 0, void 0, function* () {
353
- draft.annotations = yield (0, util_1.mapAsync)(enumValue.annotations, a => this.visitDefined(a, p));
354
- draft.name = (yield this.visitDefined(enumValue.name, p));
355
- if (enumValue.initializer) {
356
- draft.initializer = (yield this.visitDefined(enumValue.initializer, p));
357
- }
358
- }));
413
+ const updates = {
414
+ prefix: yield this.visitSpace(enumValue.prefix, p),
415
+ markers: yield this.visitMarkers(enumValue.markers, p),
416
+ annotations: yield (0, util_1.mapAsync)(enumValue.annotations, a => this.visitDefined(a, p)),
417
+ name: yield this.visitDefined(enumValue.name, p)
418
+ };
419
+ if (enumValue.initializer) {
420
+ updates.initializer = (yield this.visitDefined(enumValue.initializer, p));
421
+ }
422
+ return (0, util_1.updateIfChanged)(enumValue, updates);
359
423
  });
360
424
  }
361
425
  visitEnumValueSet(enumValueSet, p) {
@@ -365,9 +429,12 @@ class JavaVisitor extends visitor_1.TreeVisitor {
365
429
  return statement;
366
430
  }
367
431
  enumValueSet = statement;
368
- return this.produceJava(enumValueSet, p, (draft) => __awaiter(this, void 0, void 0, function* () {
369
- draft.enums = yield (0, util_1.mapAsync)(enumValueSet.enums, e => this.visitRightPadded(e, p));
370
- }));
432
+ const updates = {
433
+ prefix: yield this.visitSpace(enumValueSet.prefix, p),
434
+ markers: yield this.visitMarkers(enumValueSet.markers, p),
435
+ enums: yield (0, util_1.mapAsync)(enumValueSet.enums, e => this.visitRightPadded(e, p))
436
+ };
437
+ return (0, util_1.updateIfChanged)(enumValueSet, updates);
371
438
  });
372
439
  }
373
440
  visitErroneous(erroneous, p) {
@@ -382,7 +449,11 @@ class JavaVisitor extends visitor_1.TreeVisitor {
382
449
  return statement;
383
450
  }
384
451
  erroneous = statement;
385
- return this.produceJava(erroneous, p);
452
+ const updates = {
453
+ prefix: yield this.visitSpace(erroneous.prefix, p),
454
+ markers: yield this.visitMarkers(erroneous.markers, p)
455
+ };
456
+ return (0, util_1.updateIfChanged)(erroneous, updates);
386
457
  });
387
458
  }
388
459
  visitFieldAccess(fieldAccess, p) {
@@ -397,11 +468,14 @@ class JavaVisitor extends visitor_1.TreeVisitor {
397
468
  return statement;
398
469
  }
399
470
  fieldAccess = statement;
400
- return this.produceJava(fieldAccess, p, (draft) => __awaiter(this, void 0, void 0, function* () {
401
- draft.target = (yield this.visitDefined(fieldAccess.target, p));
402
- draft.name = yield this.visitLeftPadded(fieldAccess.name, p);
403
- draft.type = yield this.visitType(fieldAccess.type, p);
404
- }));
471
+ const updates = {
472
+ prefix: yield this.visitSpace(fieldAccess.prefix, p),
473
+ markers: yield this.visitMarkers(fieldAccess.markers, p),
474
+ target: yield this.visitDefined(fieldAccess.target, p),
475
+ name: yield this.visitLeftPadded(fieldAccess.name, p),
476
+ type: yield this.visitType(fieldAccess.type, p)
477
+ };
478
+ return (0, util_1.updateIfChanged)(fieldAccess, updates);
405
479
  });
406
480
  }
407
481
  visitForEachLoop(forLoop, p) {
@@ -411,18 +485,24 @@ class JavaVisitor extends visitor_1.TreeVisitor {
411
485
  return statement;
412
486
  }
413
487
  forLoop = statement;
414
- return this.produceJava(forLoop, p, (draft) => __awaiter(this, void 0, void 0, function* () {
415
- draft.control = (yield this.visitDefined(forLoop.control, p));
416
- draft.body = yield this.visitRightPadded(forLoop.body, p);
417
- }));
488
+ const updates = {
489
+ prefix: yield this.visitSpace(forLoop.prefix, p),
490
+ markers: yield this.visitMarkers(forLoop.markers, p),
491
+ control: yield this.visitDefined(forLoop.control, p),
492
+ body: yield this.visitRightPadded(forLoop.body, p)
493
+ };
494
+ return (0, util_1.updateIfChanged)(forLoop, updates);
418
495
  });
419
496
  }
420
497
  visitForEachLoopControl(control, p) {
421
498
  return __awaiter(this, void 0, void 0, function* () {
422
- return this.produceJava(control, p, (draft) => __awaiter(this, void 0, void 0, function* () {
423
- draft.variable = yield this.visitRightPadded(control.variable, p);
424
- draft.iterable = yield this.visitRightPadded(control.iterable, p);
425
- }));
499
+ const updates = {
500
+ prefix: yield this.visitSpace(control.prefix, p),
501
+ markers: yield this.visitMarkers(control.markers, p),
502
+ variable: yield this.visitRightPadded(control.variable, p),
503
+ iterable: yield this.visitRightPadded(control.iterable, p)
504
+ };
505
+ return (0, util_1.updateIfChanged)(control, updates);
426
506
  });
427
507
  }
428
508
  visitForLoop(forLoop, p) {
@@ -432,19 +512,25 @@ class JavaVisitor extends visitor_1.TreeVisitor {
432
512
  return statement;
433
513
  }
434
514
  forLoop = statement;
435
- return this.produceJava(forLoop, p, (draft) => __awaiter(this, void 0, void 0, function* () {
436
- draft.control = (yield this.visitDefined(forLoop.control, p));
437
- draft.body = yield this.visitRightPadded(forLoop.body, p);
438
- }));
515
+ const updates = {
516
+ prefix: yield this.visitSpace(forLoop.prefix, p),
517
+ markers: yield this.visitMarkers(forLoop.markers, p),
518
+ control: yield this.visitDefined(forLoop.control, p),
519
+ body: yield this.visitRightPadded(forLoop.body, p)
520
+ };
521
+ return (0, util_1.updateIfChanged)(forLoop, updates);
439
522
  });
440
523
  }
441
524
  visitForLoopControl(control, p) {
442
525
  return __awaiter(this, void 0, void 0, function* () {
443
- return this.produceJava(control, p, (draft) => __awaiter(this, void 0, void 0, function* () {
444
- draft.init = yield (0, util_1.mapAsync)(control.init, i => this.visitRightPadded(i, p));
445
- draft.condition = yield this.visitOptionalRightPadded(control.condition, p);
446
- draft.update = yield (0, util_1.mapAsync)(control.update, u => this.visitRightPadded(u, p));
447
- }));
526
+ const updates = {
527
+ prefix: yield this.visitSpace(control.prefix, p),
528
+ markers: yield this.visitMarkers(control.markers, p),
529
+ init: yield (0, util_1.mapAsync)(control.init, i => this.visitRightPadded(i, p)),
530
+ condition: yield this.visitOptionalRightPadded(control.condition, p),
531
+ update: yield (0, util_1.mapAsync)(control.update, u => this.visitRightPadded(u, p))
532
+ };
533
+ return (0, util_1.updateIfChanged)(control, updates);
448
534
  });
449
535
  }
450
536
  visitIdentifier(ident, p) {
@@ -454,11 +540,14 @@ class JavaVisitor extends visitor_1.TreeVisitor {
454
540
  return expression;
455
541
  }
456
542
  ident = expression;
457
- return this.produceJava(ident, p, (draft) => __awaiter(this, void 0, void 0, function* () {
458
- draft.annotations = yield (0, util_1.mapAsync)(ident.annotations, a => this.visitDefined(a, p));
459
- draft.type = yield this.visitType(ident.type, p);
460
- draft.fieldType = (yield this.visitType(ident.fieldType, p));
461
- }));
543
+ const updates = {
544
+ prefix: yield this.visitSpace(ident.prefix, p),
545
+ markers: yield this.visitMarkers(ident.markers, p),
546
+ annotations: yield (0, util_1.mapAsync)(ident.annotations, a => this.visitDefined(a, p)),
547
+ type: yield this.visitType(ident.type, p),
548
+ fieldType: yield this.visitType(ident.fieldType, p)
549
+ };
550
+ return (0, util_1.updateIfChanged)(ident, updates);
462
551
  });
463
552
  }
464
553
  visitIf(iff, p) {
@@ -468,29 +557,38 @@ class JavaVisitor extends visitor_1.TreeVisitor {
468
557
  return statement;
469
558
  }
470
559
  iff = statement;
471
- return this.produceJava(iff, p, (draft) => __awaiter(this, void 0, void 0, function* () {
472
- draft.ifCondition = (yield this.visitDefined(iff.ifCondition, p));
473
- draft.thenPart = yield this.visitRightPadded(iff.thenPart, p);
474
- if (iff.elsePart) {
475
- draft.elsePart = (yield this.visitDefined(iff.elsePart, p));
476
- }
477
- }));
560
+ const updates = {
561
+ prefix: yield this.visitSpace(iff.prefix, p),
562
+ markers: yield this.visitMarkers(iff.markers, p),
563
+ ifCondition: yield this.visitDefined(iff.ifCondition, p),
564
+ thenPart: yield this.visitRightPadded(iff.thenPart, p)
565
+ };
566
+ if (iff.elsePart) {
567
+ updates.elsePart = (yield this.visitDefined(iff.elsePart, p));
568
+ }
569
+ return (0, util_1.updateIfChanged)(iff, updates);
478
570
  });
479
571
  }
480
572
  visitElse(anElse, p) {
481
573
  return __awaiter(this, void 0, void 0, function* () {
482
- return this.produceJava(anElse, p, (draft) => __awaiter(this, void 0, void 0, function* () {
483
- draft.body = yield this.visitRightPadded(anElse.body, p);
484
- }));
574
+ const updates = {
575
+ prefix: yield this.visitSpace(anElse.prefix, p),
576
+ markers: yield this.visitMarkers(anElse.markers, p),
577
+ body: yield this.visitRightPadded(anElse.body, p)
578
+ };
579
+ return (0, util_1.updateIfChanged)(anElse, updates);
485
580
  });
486
581
  }
487
582
  visitImport(anImport, p) {
488
583
  return __awaiter(this, void 0, void 0, function* () {
489
- return this.produceJava(anImport, p, (draft) => __awaiter(this, void 0, void 0, function* () {
490
- draft.static = yield this.visitLeftPadded(anImport.static, p);
491
- draft.qualid = (yield this.visitDefined(anImport.qualid, p));
492
- draft.alias = yield this.visitOptionalLeftPadded(anImport.alias, p);
493
- }));
584
+ const updates = {
585
+ prefix: yield this.visitSpace(anImport.prefix, p),
586
+ markers: yield this.visitMarkers(anImport.markers, p),
587
+ static: yield this.visitLeftPadded(anImport.static, p),
588
+ qualid: yield this.visitDefined(anImport.qualid, p),
589
+ alias: yield this.visitOptionalLeftPadded(anImport.alias, p)
590
+ };
591
+ return (0, util_1.updateIfChanged)(anImport, updates);
494
592
  });
495
593
  }
496
594
  visitInstanceOf(instanceOf, p) {
@@ -500,17 +598,20 @@ class JavaVisitor extends visitor_1.TreeVisitor {
500
598
  return expression;
501
599
  }
502
600
  instanceOf = expression;
503
- return this.produceJava(instanceOf, p, (draft) => __awaiter(this, void 0, void 0, function* () {
504
- draft.expression = yield this.visitRightPadded(instanceOf.expression, p);
505
- draft.class = (yield this.visitDefined(instanceOf.class, p));
506
- if (instanceOf.pattern) {
507
- draft.pattern = (yield this.visitDefined(instanceOf.pattern, p));
508
- }
509
- draft.type = yield this.visitType(instanceOf.type, p);
510
- if (instanceOf.modifier) {
511
- draft.modifier = (yield this.visitDefined(instanceOf.modifier, p));
512
- }
513
- }));
601
+ const updates = {
602
+ prefix: yield this.visitSpace(instanceOf.prefix, p),
603
+ markers: yield this.visitMarkers(instanceOf.markers, p),
604
+ expression: yield this.visitRightPadded(instanceOf.expression, p),
605
+ class: yield this.visitDefined(instanceOf.class, p),
606
+ type: yield this.visitType(instanceOf.type, p)
607
+ };
608
+ if (instanceOf.pattern) {
609
+ updates.pattern = (yield this.visitDefined(instanceOf.pattern, p));
610
+ }
611
+ if (instanceOf.modifier) {
612
+ updates.modifier = (yield this.visitDefined(instanceOf.modifier, p));
613
+ }
614
+ return (0, util_1.updateIfChanged)(instanceOf, updates);
514
615
  });
515
616
  }
516
617
  visitIntersectionType(intersectionType, p) {
@@ -520,9 +621,12 @@ class JavaVisitor extends visitor_1.TreeVisitor {
520
621
  return expression;
521
622
  }
522
623
  intersectionType = expression;
523
- return this.produceJava(intersectionType, p, (draft) => __awaiter(this, void 0, void 0, function* () {
524
- draft.bounds = yield this.visitContainer(intersectionType.bounds, p);
525
- }));
624
+ const updates = {
625
+ prefix: yield this.visitSpace(intersectionType.prefix, p),
626
+ markers: yield this.visitMarkers(intersectionType.markers, p),
627
+ bounds: yield this.visitContainer(intersectionType.bounds, p)
628
+ };
629
+ return (0, util_1.updateIfChanged)(intersectionType, updates);
526
630
  });
527
631
  }
528
632
  visitLabel(label, p) {
@@ -532,10 +636,13 @@ class JavaVisitor extends visitor_1.TreeVisitor {
532
636
  return statement;
533
637
  }
534
638
  label = statement;
535
- return this.produceJava(label, p, (draft) => __awaiter(this, void 0, void 0, function* () {
536
- draft.label = yield this.visitRightPadded(label.label, p);
537
- draft.statement = (yield this.visitDefined(label.statement, p));
538
- }));
639
+ const updates = {
640
+ prefix: yield this.visitSpace(label.prefix, p),
641
+ markers: yield this.visitMarkers(label.markers, p),
642
+ label: yield this.visitRightPadded(label.label, p),
643
+ statement: yield this.visitDefined(label.statement, p)
644
+ };
645
+ return (0, util_1.updateIfChanged)(label, updates);
539
646
  });
540
647
  }
541
648
  visitLambda(lambda, p) {
@@ -550,19 +657,25 @@ class JavaVisitor extends visitor_1.TreeVisitor {
550
657
  return statement;
551
658
  }
552
659
  lambda = statement;
553
- return this.produceJava(lambda, p, (draft) => __awaiter(this, void 0, void 0, function* () {
554
- draft.parameters = (yield this.visitDefined(lambda.parameters, p));
555
- draft.arrow = yield this.visitSpace(lambda.arrow, p);
556
- draft.body = (yield this.visitDefined(lambda.body, p));
557
- draft.type = yield this.visitType(lambda.type, p);
558
- }));
660
+ const updates = {
661
+ prefix: yield this.visitSpace(lambda.prefix, p),
662
+ markers: yield this.visitMarkers(lambda.markers, p),
663
+ parameters: yield this.visitDefined(lambda.parameters, p),
664
+ arrow: yield this.visitSpace(lambda.arrow, p),
665
+ body: yield this.visitDefined(lambda.body, p),
666
+ type: yield this.visitType(lambda.type, p)
667
+ };
668
+ return (0, util_1.updateIfChanged)(lambda, updates);
559
669
  });
560
670
  }
561
671
  visitLambdaParameters(params, p) {
562
672
  return __awaiter(this, void 0, void 0, function* () {
563
- return this.produceJava(params, p, (draft) => __awaiter(this, void 0, void 0, function* () {
564
- draft.parameters = yield (0, util_1.mapAsync)(params.parameters, param => this.visitRightPadded(param, p));
565
- }));
673
+ const updates = {
674
+ prefix: yield this.visitSpace(params.prefix, p),
675
+ markers: yield this.visitMarkers(params.markers, p),
676
+ parameters: yield (0, util_1.mapAsync)(params.parameters, param => this.visitRightPadded(param, p))
677
+ };
678
+ return (0, util_1.updateIfChanged)(params, updates);
566
679
  });
567
680
  }
568
681
  visitLiteral(literal, p) {
@@ -572,9 +685,12 @@ class JavaVisitor extends visitor_1.TreeVisitor {
572
685
  return expression;
573
686
  }
574
687
  literal = expression;
575
- return this.produceJava(literal, p, (draft) => __awaiter(this, void 0, void 0, function* () {
576
- draft.type = (yield this.visitType(literal.type, p));
577
- }));
688
+ const updates = {
689
+ prefix: yield this.visitSpace(literal.prefix, p),
690
+ markers: yield this.visitMarkers(literal.markers, p),
691
+ type: yield this.visitType(literal.type, p)
692
+ };
693
+ return (0, util_1.updateIfChanged)(literal, updates);
578
694
  });
579
695
  }
580
696
  visitMemberReference(memberRef, p) {
@@ -584,14 +700,17 @@ class JavaVisitor extends visitor_1.TreeVisitor {
584
700
  return expression;
585
701
  }
586
702
  memberRef = expression;
587
- return this.produceJava(memberRef, p, (draft) => __awaiter(this, void 0, void 0, function* () {
588
- draft.containing = yield this.visitRightPadded(memberRef.containing, p);
589
- draft.typeParameters = yield this.visitOptionalContainer(memberRef.typeParameters, p);
590
- draft.reference = yield this.visitLeftPadded(memberRef.reference, p);
591
- draft.type = yield this.visitType(memberRef.type, p);
592
- draft.methodType = (yield this.visitType(memberRef.methodType, p));
593
- draft.variableType = (yield this.visitType(memberRef.variableType, p));
594
- }));
703
+ const updates = {
704
+ prefix: yield this.visitSpace(memberRef.prefix, p),
705
+ markers: yield this.visitMarkers(memberRef.markers, p),
706
+ containing: yield this.visitRightPadded(memberRef.containing, p),
707
+ typeParameters: yield this.visitOptionalContainer(memberRef.typeParameters, p),
708
+ reference: yield this.visitLeftPadded(memberRef.reference, p),
709
+ type: yield this.visitType(memberRef.type, p),
710
+ methodType: yield this.visitType(memberRef.methodType, p),
711
+ variableType: yield this.visitType(memberRef.variableType, p)
712
+ };
713
+ return (0, util_1.updateIfChanged)(memberRef, updates);
595
714
  });
596
715
  }
597
716
  visitMethodDeclaration(method, p) {
@@ -601,23 +720,26 @@ class JavaVisitor extends visitor_1.TreeVisitor {
601
720
  return statement;
602
721
  }
603
722
  method = statement;
604
- return this.produceJava(method, p, (draft) => __awaiter(this, void 0, void 0, function* () {
605
- draft.leadingAnnotations = yield (0, util_1.mapAsync)(method.leadingAnnotations, a => this.visitDefined(a, p));
606
- draft.modifiers = yield (0, util_1.mapAsync)(method.modifiers, m => this.visitDefined(m, p));
607
- if (method.typeParameters) {
608
- draft.typeParameters = (yield this.visitDefined(method.typeParameters, p));
609
- }
610
- if (method.returnTypeExpression) {
611
- draft.returnTypeExpression = (yield this.visitDefined(method.returnTypeExpression, p));
612
- }
613
- draft.nameAnnotations = yield (0, util_1.mapAsync)(method.nameAnnotations, a => this.visitDefined(a, p));
614
- draft.name = yield this.visitDefined(method.name, p);
615
- draft.parameters = yield this.visitContainer(method.parameters, p);
616
- draft.throws = method.throws && (yield this.visitContainer(method.throws, p));
617
- draft.body = method.body && (yield this.visitDefined(method.body, p));
618
- draft.defaultValue = yield this.visitOptionalLeftPadded(method.defaultValue, p);
619
- draft.methodType = (yield this.visitType(method.methodType, p));
620
- }));
723
+ const updates = {
724
+ prefix: yield this.visitSpace(method.prefix, p),
725
+ markers: yield this.visitMarkers(method.markers, p),
726
+ leadingAnnotations: yield (0, util_1.mapAsync)(method.leadingAnnotations, a => this.visitDefined(a, p)),
727
+ modifiers: yield (0, util_1.mapAsync)(method.modifiers, m => this.visitDefined(m, p)),
728
+ nameAnnotations: yield (0, util_1.mapAsync)(method.nameAnnotations, a => this.visitDefined(a, p)),
729
+ name: yield this.visitDefined(method.name, p),
730
+ parameters: yield this.visitContainer(method.parameters, p),
731
+ throws: method.throws && (yield this.visitContainer(method.throws, p)),
732
+ body: method.body && (yield this.visitDefined(method.body, p)),
733
+ defaultValue: yield this.visitOptionalLeftPadded(method.defaultValue, p),
734
+ methodType: yield this.visitType(method.methodType, p)
735
+ };
736
+ if (method.typeParameters) {
737
+ updates.typeParameters = (yield this.visitDefined(method.typeParameters, p));
738
+ }
739
+ if (method.returnTypeExpression) {
740
+ updates.returnTypeExpression = (yield this.visitDefined(method.returnTypeExpression, p));
741
+ }
742
+ return (0, util_1.updateIfChanged)(method, updates);
621
743
  });
622
744
  }
623
745
  visitMethodInvocation(method, p) {
@@ -632,27 +754,36 @@ class JavaVisitor extends visitor_1.TreeVisitor {
632
754
  return statement;
633
755
  }
634
756
  method = statement;
635
- return this.produceJava(method, p, (draft) => __awaiter(this, void 0, void 0, function* () {
636
- draft.select = yield this.visitOptionalRightPadded(method.select, p);
637
- draft.typeParameters = yield this.visitOptionalContainer(method.typeParameters, p);
638
- draft.name = (yield this.visitDefined(method.name, p));
639
- draft.arguments = yield this.visitContainer(method.arguments, p);
640
- draft.methodType = (yield this.visitType(method.methodType, p));
641
- }));
757
+ const updates = {
758
+ prefix: yield this.visitSpace(method.prefix, p),
759
+ markers: yield this.visitMarkers(method.markers, p),
760
+ select: yield this.visitOptionalRightPadded(method.select, p),
761
+ typeParameters: yield this.visitOptionalContainer(method.typeParameters, p),
762
+ name: yield this.visitDefined(method.name, p),
763
+ arguments: yield this.visitContainer(method.arguments, p),
764
+ methodType: yield this.visitType(method.methodType, p)
765
+ };
766
+ return (0, util_1.updateIfChanged)(method, updates);
642
767
  });
643
768
  }
644
769
  visitModifier(modifier, p) {
645
770
  return __awaiter(this, void 0, void 0, function* () {
646
- return this.produceJava(modifier, p, (draft) => __awaiter(this, void 0, void 0, function* () {
647
- draft.annotations = yield (0, util_1.mapAsync)(modifier.annotations, a => this.visitDefined(a, p));
648
- }));
771
+ const updates = {
772
+ prefix: yield this.visitSpace(modifier.prefix, p),
773
+ markers: yield this.visitMarkers(modifier.markers, p),
774
+ annotations: yield (0, util_1.mapAsync)(modifier.annotations, a => this.visitDefined(a, p))
775
+ };
776
+ return (0, util_1.updateIfChanged)(modifier, updates);
649
777
  });
650
778
  }
651
779
  visitMultiCatch(multiCatch, p) {
652
780
  return __awaiter(this, void 0, void 0, function* () {
653
- return this.produceJava(multiCatch, p, (draft) => __awaiter(this, void 0, void 0, function* () {
654
- draft.alternatives = yield (0, util_1.mapAsync)(multiCatch.alternatives, alt => this.visitRightPadded(alt, p));
655
- }));
781
+ const updates = {
782
+ prefix: yield this.visitSpace(multiCatch.prefix, p),
783
+ markers: yield this.visitMarkers(multiCatch.markers, p),
784
+ alternatives: yield (0, util_1.mapAsync)(multiCatch.alternatives, alt => this.visitRightPadded(alt, p))
785
+ };
786
+ return (0, util_1.updateIfChanged)(multiCatch, updates);
656
787
  });
657
788
  }
658
789
  visitNewArray(newArray, p) {
@@ -662,14 +793,17 @@ class JavaVisitor extends visitor_1.TreeVisitor {
662
793
  return expression;
663
794
  }
664
795
  newArray = expression;
665
- return this.produceJava(newArray, p, (draft) => __awaiter(this, void 0, void 0, function* () {
666
- if (newArray.typeExpression) {
667
- draft.typeExpression = (yield this.visitDefined(newArray.typeExpression, p));
668
- }
669
- draft.dimensions = yield (0, util_1.mapAsync)(newArray.dimensions, dim => this.visitDefined(dim, p));
670
- draft.initializer = yield this.visitOptionalContainer(newArray.initializer, p);
671
- draft.type = yield this.visitType(newArray.type, p);
672
- }));
796
+ const updates = {
797
+ prefix: yield this.visitSpace(newArray.prefix, p),
798
+ markers: yield this.visitMarkers(newArray.markers, p),
799
+ dimensions: yield (0, util_1.mapAsync)(newArray.dimensions, dim => this.visitDefined(dim, p)),
800
+ initializer: yield this.visitOptionalContainer(newArray.initializer, p),
801
+ type: yield this.visitType(newArray.type, p)
802
+ };
803
+ if (newArray.typeExpression) {
804
+ updates.typeExpression = (yield this.visitDefined(newArray.typeExpression, p));
805
+ }
806
+ return (0, util_1.updateIfChanged)(newArray, updates);
673
807
  });
674
808
  }
675
809
  visitNewClass(newClass, p) {
@@ -679,20 +813,23 @@ class JavaVisitor extends visitor_1.TreeVisitor {
679
813
  return expression;
680
814
  }
681
815
  newClass = expression;
682
- return this.produceJava(newClass, p, (draft) => __awaiter(this, void 0, void 0, function* () {
683
- if (newClass.enclosing) {
684
- draft.enclosing = yield this.visitRightPadded(newClass.enclosing, p);
685
- }
686
- draft.new = yield this.visitSpace(newClass.new, p);
687
- if (newClass.class) {
688
- draft.class = (yield this.visitDefined(newClass.class, p));
689
- }
690
- draft.arguments = yield this.visitContainer(newClass.arguments, p);
691
- if (newClass.body) {
692
- draft.body = (yield this.visitDefined(newClass.body, p));
693
- }
694
- draft.constructorType = (yield this.visitType(newClass.constructorType, p));
695
- }));
816
+ const updates = {
817
+ prefix: yield this.visitSpace(newClass.prefix, p),
818
+ markers: yield this.visitMarkers(newClass.markers, p),
819
+ new: yield this.visitSpace(newClass.new, p),
820
+ arguments: yield this.visitContainer(newClass.arguments, p),
821
+ constructorType: yield this.visitType(newClass.constructorType, p)
822
+ };
823
+ if (newClass.enclosing) {
824
+ updates.enclosing = yield this.visitRightPadded(newClass.enclosing, p);
825
+ }
826
+ if (newClass.class) {
827
+ updates.class = (yield this.visitDefined(newClass.class, p));
828
+ }
829
+ if (newClass.body) {
830
+ updates.body = (yield this.visitDefined(newClass.body, p));
831
+ }
832
+ return (0, util_1.updateIfChanged)(newClass, updates);
696
833
  });
697
834
  }
698
835
  visitNullableType(nullableType, p) {
@@ -702,36 +839,48 @@ class JavaVisitor extends visitor_1.TreeVisitor {
702
839
  return expression;
703
840
  }
704
841
  nullableType = expression;
705
- return this.produceJava(nullableType, p, (draft) => __awaiter(this, void 0, void 0, function* () {
706
- draft.annotations = yield (0, util_1.mapAsync)(nullableType.annotations, a => this.visitDefined(a, p));
707
- draft.typeTree = yield this.visitRightPadded(nullableType.typeTree, p);
708
- }));
842
+ const updates = {
843
+ prefix: yield this.visitSpace(nullableType.prefix, p),
844
+ markers: yield this.visitMarkers(nullableType.markers, p),
845
+ annotations: yield (0, util_1.mapAsync)(nullableType.annotations, a => this.visitDefined(a, p)),
846
+ typeTree: yield this.visitRightPadded(nullableType.typeTree, p)
847
+ };
848
+ return (0, util_1.updateIfChanged)(nullableType, updates);
709
849
  });
710
850
  }
711
851
  visitPackage(aPackage, p) {
712
852
  return __awaiter(this, void 0, void 0, function* () {
713
- return this.produceJava(aPackage, p, (draft) => __awaiter(this, void 0, void 0, function* () {
714
- draft.expression = (yield this.visitDefined(aPackage.expression, p));
715
- if (aPackage.annotations) {
716
- draft.annotations = yield (0, util_1.mapAsync)(aPackage.annotations, a => this.visitDefined(a, p));
717
- }
718
- }));
853
+ const updates = {
854
+ prefix: yield this.visitSpace(aPackage.prefix, p),
855
+ markers: yield this.visitMarkers(aPackage.markers, p),
856
+ expression: yield this.visitDefined(aPackage.expression, p)
857
+ };
858
+ if (aPackage.annotations) {
859
+ updates.annotations = yield (0, util_1.mapAsync)(aPackage.annotations, a => this.visitDefined(a, p));
860
+ }
861
+ return (0, util_1.updateIfChanged)(aPackage, updates);
719
862
  });
720
863
  }
721
864
  visitParameterizedType(parameterizedType, p) {
722
865
  return __awaiter(this, void 0, void 0, function* () {
723
- return this.produceJava(parameterizedType, p, (draft) => __awaiter(this, void 0, void 0, function* () {
724
- draft.class = yield this.visitTypeName(parameterizedType.class, p);
725
- draft.typeParameters = yield this.visitOptionalContainer(parameterizedType.typeParameters, p);
726
- draft.type = yield this.visitType(parameterizedType.type, p);
727
- }));
866
+ const updates = {
867
+ prefix: yield this.visitSpace(parameterizedType.prefix, p),
868
+ markers: yield this.visitMarkers(parameterizedType.markers, p),
869
+ class: yield this.visitTypeName(parameterizedType.class, p),
870
+ typeParameters: yield this.visitOptionalContainer(parameterizedType.typeParameters, p),
871
+ type: yield this.visitType(parameterizedType.type, p)
872
+ };
873
+ return (0, util_1.updateIfChanged)(parameterizedType, updates);
728
874
  });
729
875
  }
730
876
  visitParentheses(parentheses, p) {
731
877
  return __awaiter(this, void 0, void 0, function* () {
732
- return this.produceJava(parentheses, p, (draft) => __awaiter(this, void 0, void 0, function* () {
733
- draft.tree = yield this.visitRightPadded(parentheses.tree, p);
734
- }));
878
+ const updates = {
879
+ prefix: yield this.visitSpace(parentheses.prefix, p),
880
+ markers: yield this.visitMarkers(parentheses.markers, p),
881
+ tree: yield this.visitRightPadded(parentheses.tree, p)
882
+ };
883
+ return (0, util_1.updateIfChanged)(parentheses, updates);
735
884
  });
736
885
  }
737
886
  visitParenthesizedTypeTree(parTypeTree, p) {
@@ -741,10 +890,13 @@ class JavaVisitor extends visitor_1.TreeVisitor {
741
890
  return expression;
742
891
  }
743
892
  parTypeTree = expression;
744
- return this.produceJava(parTypeTree, p, (draft) => __awaiter(this, void 0, void 0, function* () {
745
- draft.annotations = yield (0, util_1.mapAsync)(parTypeTree.annotations, a => this.visitDefined(a, p));
746
- draft.parenthesizedType = (yield this.visitDefined(parTypeTree.parenthesizedType, p));
747
- }));
893
+ const updates = {
894
+ prefix: yield this.visitSpace(parTypeTree.prefix, p),
895
+ markers: yield this.visitMarkers(parTypeTree.markers, p),
896
+ annotations: yield (0, util_1.mapAsync)(parTypeTree.annotations, a => this.visitDefined(a, p)),
897
+ parenthesizedType: yield this.visitDefined(parTypeTree.parenthesizedType, p)
898
+ };
899
+ return (0, util_1.updateIfChanged)(parTypeTree, updates);
748
900
  });
749
901
  }
750
902
  visitPrimitive(primitive, p) {
@@ -754,9 +906,12 @@ class JavaVisitor extends visitor_1.TreeVisitor {
754
906
  return expression;
755
907
  }
756
908
  primitive = expression;
757
- return this.produceJava(primitive, p, (draft) => __awaiter(this, void 0, void 0, function* () {
758
- draft.type = (yield this.visitType(primitive.type, p));
759
- }));
909
+ const updates = {
910
+ prefix: yield this.visitSpace(primitive.prefix, p),
911
+ markers: yield this.visitMarkers(primitive.markers, p),
912
+ type: yield this.visitType(primitive.type, p)
913
+ };
914
+ return (0, util_1.updateIfChanged)(primitive, updates);
760
915
  });
761
916
  }
762
917
  visitReturn(ret, p) {
@@ -766,11 +921,14 @@ class JavaVisitor extends visitor_1.TreeVisitor {
766
921
  return statement;
767
922
  }
768
923
  ret = statement;
769
- return this.produceJava(ret, p, (draft) => __awaiter(this, void 0, void 0, function* () {
770
- if (ret.expression) {
771
- draft.expression = (yield this.visitDefined(ret.expression, p));
772
- }
773
- }));
924
+ const updates = {
925
+ prefix: yield this.visitSpace(ret.prefix, p),
926
+ markers: yield this.visitMarkers(ret.markers, p)
927
+ };
928
+ if (ret.expression) {
929
+ updates.expression = (yield this.visitDefined(ret.expression, p));
930
+ }
931
+ return (0, util_1.updateIfChanged)(ret, updates);
774
932
  });
775
933
  }
776
934
  visitSwitch(aSwitch, p) {
@@ -780,10 +938,13 @@ class JavaVisitor extends visitor_1.TreeVisitor {
780
938
  return statement;
781
939
  }
782
940
  aSwitch = statement;
783
- return this.produceJava(aSwitch, p, (draft) => __awaiter(this, void 0, void 0, function* () {
784
- draft.selector = (yield this.visitDefined(aSwitch.selector, p));
785
- draft.cases = (yield this.visitDefined(aSwitch.cases, p));
786
- }));
941
+ const updates = {
942
+ prefix: yield this.visitSpace(aSwitch.prefix, p),
943
+ markers: yield this.visitMarkers(aSwitch.markers, p),
944
+ selector: yield this.visitDefined(aSwitch.selector, p),
945
+ cases: yield this.visitDefined(aSwitch.cases, p)
946
+ };
947
+ return (0, util_1.updateIfChanged)(aSwitch, updates);
787
948
  });
788
949
  }
789
950
  visitSwitchExpression(switchExpr, p) {
@@ -793,11 +954,14 @@ class JavaVisitor extends visitor_1.TreeVisitor {
793
954
  return expression;
794
955
  }
795
956
  switchExpr = expression;
796
- return this.produceJava(switchExpr, p, (draft) => __awaiter(this, void 0, void 0, function* () {
797
- draft.selector = (yield this.visitDefined(switchExpr.selector, p));
798
- draft.cases = (yield this.visitDefined(switchExpr.cases, p));
799
- draft.type = yield this.visitType(switchExpr.type, p);
800
- }));
957
+ const updates = {
958
+ prefix: yield this.visitSpace(switchExpr.prefix, p),
959
+ markers: yield this.visitMarkers(switchExpr.markers, p),
960
+ selector: yield this.visitDefined(switchExpr.selector, p),
961
+ cases: yield this.visitDefined(switchExpr.cases, p),
962
+ type: yield this.visitType(switchExpr.type, p)
963
+ };
964
+ return (0, util_1.updateIfChanged)(switchExpr, updates);
801
965
  });
802
966
  }
803
967
  visitSynchronized(sync, p) {
@@ -807,10 +971,13 @@ class JavaVisitor extends visitor_1.TreeVisitor {
807
971
  return statement;
808
972
  }
809
973
  sync = statement;
810
- return this.produceJava(sync, p, (draft) => __awaiter(this, void 0, void 0, function* () {
811
- draft.lock = (yield this.visitDefined(sync.lock, p));
812
- draft.body = (yield this.visitDefined(sync.body, p));
813
- }));
974
+ const updates = {
975
+ prefix: yield this.visitSpace(sync.prefix, p),
976
+ markers: yield this.visitMarkers(sync.markers, p),
977
+ lock: yield this.visitDefined(sync.lock, p),
978
+ body: yield this.visitDefined(sync.body, p)
979
+ };
980
+ return (0, util_1.updateIfChanged)(sync, updates);
814
981
  });
815
982
  }
816
983
  visitTernary(ternary, p) {
@@ -825,12 +992,15 @@ class JavaVisitor extends visitor_1.TreeVisitor {
825
992
  return statement;
826
993
  }
827
994
  ternary = statement;
828
- return this.produceJava(ternary, p, (draft) => __awaiter(this, void 0, void 0, function* () {
829
- draft.condition = (yield this.visitDefined(ternary.condition, p));
830
- draft.truePart = yield this.visitLeftPadded(ternary.truePart, p);
831
- draft.falsePart = yield this.visitLeftPadded(ternary.falsePart, p);
832
- draft.type = yield this.visitType(ternary.type, p);
833
- }));
995
+ const updates = {
996
+ prefix: yield this.visitSpace(ternary.prefix, p),
997
+ markers: yield this.visitMarkers(ternary.markers, p),
998
+ condition: yield this.visitDefined(ternary.condition, p),
999
+ truePart: yield this.visitLeftPadded(ternary.truePart, p),
1000
+ falsePart: yield this.visitLeftPadded(ternary.falsePart, p),
1001
+ type: yield this.visitType(ternary.type, p)
1002
+ };
1003
+ return (0, util_1.updateIfChanged)(ternary, updates);
834
1004
  });
835
1005
  }
836
1006
  visitThrow(thrown, p) {
@@ -840,9 +1010,12 @@ class JavaVisitor extends visitor_1.TreeVisitor {
840
1010
  return statement;
841
1011
  }
842
1012
  thrown = statement;
843
- return this.produceJava(thrown, p, (draft) => __awaiter(this, void 0, void 0, function* () {
844
- draft.exception = (yield this.visitDefined(thrown.exception, p));
845
- }));
1013
+ const updates = {
1014
+ prefix: yield this.visitSpace(thrown.prefix, p),
1015
+ markers: yield this.visitMarkers(thrown.markers, p),
1016
+ exception: yield this.visitDefined(thrown.exception, p)
1017
+ };
1018
+ return (0, util_1.updateIfChanged)(thrown, updates);
846
1019
  });
847
1020
  }
848
1021
  visitTry(tryable, p) {
@@ -852,27 +1025,36 @@ class JavaVisitor extends visitor_1.TreeVisitor {
852
1025
  return statement;
853
1026
  }
854
1027
  tryable = statement;
855
- return this.produceJava(tryable, p, (draft) => __awaiter(this, void 0, void 0, function* () {
856
- draft.resources = yield this.visitOptionalContainer(tryable.resources, p);
857
- draft.body = (yield this.visitDefined(tryable.body, p));
858
- draft.catches = yield (0, util_1.mapAsync)(tryable.catches, c => this.visitDefined(c, p));
859
- draft.finally = yield this.visitOptionalLeftPadded(tryable.finally, p);
860
- }));
1028
+ const updates = {
1029
+ prefix: yield this.visitSpace(tryable.prefix, p),
1030
+ markers: yield this.visitMarkers(tryable.markers, p),
1031
+ resources: yield this.visitOptionalContainer(tryable.resources, p),
1032
+ body: yield this.visitDefined(tryable.body, p),
1033
+ catches: yield (0, util_1.mapAsync)(tryable.catches, c => this.visitDefined(c, p)),
1034
+ finally: yield this.visitOptionalLeftPadded(tryable.finally, p)
1035
+ };
1036
+ return (0, util_1.updateIfChanged)(tryable, updates);
861
1037
  });
862
1038
  }
863
1039
  visitTryResource(resource, p) {
864
1040
  return __awaiter(this, void 0, void 0, function* () {
865
- return this.produceJava(resource, p, (draft) => __awaiter(this, void 0, void 0, function* () {
866
- draft.variableDeclarations = (yield this.visitDefined(resource.variableDeclarations, p));
867
- }));
1041
+ const updates = {
1042
+ prefix: yield this.visitSpace(resource.prefix, p),
1043
+ markers: yield this.visitMarkers(resource.markers, p),
1044
+ variableDeclarations: yield this.visitDefined(resource.variableDeclarations, p)
1045
+ };
1046
+ return (0, util_1.updateIfChanged)(resource, updates);
868
1047
  });
869
1048
  }
870
1049
  visitTryCatch(tryCatch, p) {
871
1050
  return __awaiter(this, void 0, void 0, function* () {
872
- return this.produceJava(tryCatch, p, (draft) => __awaiter(this, void 0, void 0, function* () {
873
- draft.parameter = (yield this.visitDefined(tryCatch.parameter, p));
874
- draft.body = (yield this.visitDefined(tryCatch.body, p));
875
- }));
1051
+ const updates = {
1052
+ prefix: yield this.visitSpace(tryCatch.prefix, p),
1053
+ markers: yield this.visitMarkers(tryCatch.markers, p),
1054
+ parameter: yield this.visitDefined(tryCatch.parameter, p),
1055
+ body: yield this.visitDefined(tryCatch.body, p)
1056
+ };
1057
+ return (0, util_1.updateIfChanged)(tryCatch, updates);
876
1058
  });
877
1059
  }
878
1060
  visitTypeCast(typeCast, p) {
@@ -882,28 +1064,37 @@ class JavaVisitor extends visitor_1.TreeVisitor {
882
1064
  return expression;
883
1065
  }
884
1066
  typeCast = expression;
885
- return this.produceJava(typeCast, p, (draft) => __awaiter(this, void 0, void 0, function* () {
886
- draft.class = (yield this.visitDefined(typeCast.class, p));
887
- draft.expression = (yield this.visitDefined(typeCast.expression, p));
888
- }));
1067
+ const updates = {
1068
+ prefix: yield this.visitSpace(typeCast.prefix, p),
1069
+ markers: yield this.visitMarkers(typeCast.markers, p),
1070
+ class: yield this.visitDefined(typeCast.class, p),
1071
+ expression: yield this.visitDefined(typeCast.expression, p)
1072
+ };
1073
+ return (0, util_1.updateIfChanged)(typeCast, updates);
889
1074
  });
890
1075
  }
891
1076
  visitTypeParameter(typeParam, p) {
892
1077
  return __awaiter(this, void 0, void 0, function* () {
893
- return this.produceJava(typeParam, p, (draft) => __awaiter(this, void 0, void 0, function* () {
894
- draft.annotations = yield (0, util_1.mapAsync)(typeParam.annotations, a => this.visitDefined(a, p));
895
- draft.modifiers = yield (0, util_1.mapAsync)(typeParam.modifiers, m => this.visitDefined(m, p));
896
- draft.name = (yield this.visitDefined(typeParam.name, p));
897
- draft.bounds = yield this.visitOptionalContainer(typeParam.bounds, p);
898
- }));
1078
+ const updates = {
1079
+ prefix: yield this.visitSpace(typeParam.prefix, p),
1080
+ markers: yield this.visitMarkers(typeParam.markers, p),
1081
+ annotations: yield (0, util_1.mapAsync)(typeParam.annotations, a => this.visitDefined(a, p)),
1082
+ modifiers: yield (0, util_1.mapAsync)(typeParam.modifiers, m => this.visitDefined(m, p)),
1083
+ name: yield this.visitDefined(typeParam.name, p),
1084
+ bounds: yield this.visitOptionalContainer(typeParam.bounds, p)
1085
+ };
1086
+ return (0, util_1.updateIfChanged)(typeParam, updates);
899
1087
  });
900
1088
  }
901
1089
  visitTypeParameters(typeParams, p) {
902
1090
  return __awaiter(this, void 0, void 0, function* () {
903
- return this.produceJava(typeParams, p, (draft) => __awaiter(this, void 0, void 0, function* () {
904
- draft.annotations = yield (0, util_1.mapAsync)(typeParams.annotations, a => this.visitDefined(a, p));
905
- draft.typeParameters = yield (0, util_1.mapAsync)(typeParams.typeParameters, tp => this.visitRightPadded(tp, p));
906
- }));
1091
+ const updates = {
1092
+ prefix: yield this.visitSpace(typeParams.prefix, p),
1093
+ markers: yield this.visitMarkers(typeParams.markers, p),
1094
+ annotations: yield (0, util_1.mapAsync)(typeParams.annotations, a => this.visitDefined(a, p)),
1095
+ typeParameters: yield (0, util_1.mapAsync)(typeParams.typeParameters, tp => this.visitRightPadded(tp, p))
1096
+ };
1097
+ return (0, util_1.updateIfChanged)(typeParams, updates);
907
1098
  });
908
1099
  }
909
1100
  visitUnary(unary, p) {
@@ -918,11 +1109,14 @@ class JavaVisitor extends visitor_1.TreeVisitor {
918
1109
  return statement;
919
1110
  }
920
1111
  unary = statement;
921
- return this.produceJava(unary, p, (draft) => __awaiter(this, void 0, void 0, function* () {
922
- draft.operator = yield this.visitLeftPadded(unary.operator, p);
923
- draft.expression = (yield this.visitDefined(unary.expression, p));
924
- draft.type = yield this.visitType(unary.type, p);
925
- }));
1112
+ const updates = {
1113
+ prefix: yield this.visitSpace(unary.prefix, p),
1114
+ markers: yield this.visitMarkers(unary.markers, p),
1115
+ operator: yield this.visitLeftPadded(unary.operator, p),
1116
+ expression: yield this.visitDefined(unary.expression, p),
1117
+ type: yield this.visitType(unary.type, p)
1118
+ };
1119
+ return (0, util_1.updateIfChanged)(unary, updates);
926
1120
  });
927
1121
  }
928
1122
  visitUnknown(unknown, p) {
@@ -937,14 +1131,21 @@ class JavaVisitor extends visitor_1.TreeVisitor {
937
1131
  return statement;
938
1132
  }
939
1133
  unknown = statement;
940
- return this.produceJava(unknown, p, (draft) => __awaiter(this, void 0, void 0, function* () {
941
- draft.source = (yield this.visitDefined(unknown.source, p));
942
- }));
1134
+ const updates = {
1135
+ prefix: yield this.visitSpace(unknown.prefix, p),
1136
+ markers: yield this.visitMarkers(unknown.markers, p),
1137
+ source: yield this.visitDefined(unknown.source, p)
1138
+ };
1139
+ return (0, util_1.updateIfChanged)(unknown, updates);
943
1140
  });
944
1141
  }
945
1142
  visitUnknownSource(source, p) {
946
1143
  return __awaiter(this, void 0, void 0, function* () {
947
- return this.produceJava(source, p);
1144
+ const updates = {
1145
+ prefix: yield this.visitSpace(source.prefix, p),
1146
+ markers: yield this.visitMarkers(source.markers, p)
1147
+ };
1148
+ return (0, util_1.updateIfChanged)(source, updates);
948
1149
  });
949
1150
  }
950
1151
  visitVariableDeclarations(varDecls, p) {
@@ -954,27 +1155,33 @@ class JavaVisitor extends visitor_1.TreeVisitor {
954
1155
  return statement;
955
1156
  }
956
1157
  varDecls = statement;
957
- return this.produceJava(varDecls, p, (draft) => __awaiter(this, void 0, void 0, function* () {
958
- draft.leadingAnnotations = yield (0, util_1.mapAsync)(varDecls.leadingAnnotations, a => this.visitDefined(a, p));
959
- draft.modifiers = yield (0, util_1.mapAsync)(varDecls.modifiers, m => this.visitDefined(m, p));
960
- if (varDecls.typeExpression) {
961
- draft.typeExpression = (yield this.visitDefined(varDecls.typeExpression, p));
962
- }
963
- if (varDecls.varargs) {
964
- draft.varargs = yield this.visitSpace(varDecls.varargs, p);
965
- }
966
- draft.variables = yield (0, util_1.mapAsync)(varDecls.variables, v => this.visitRightPadded(v, p));
967
- }));
1158
+ const updates = {
1159
+ prefix: yield this.visitSpace(varDecls.prefix, p),
1160
+ markers: yield this.visitMarkers(varDecls.markers, p),
1161
+ leadingAnnotations: yield (0, util_1.mapAsync)(varDecls.leadingAnnotations, a => this.visitDefined(a, p)),
1162
+ modifiers: yield (0, util_1.mapAsync)(varDecls.modifiers, m => this.visitDefined(m, p)),
1163
+ variables: yield (0, util_1.mapAsync)(varDecls.variables, v => this.visitRightPadded(v, p))
1164
+ };
1165
+ if (varDecls.typeExpression) {
1166
+ updates.typeExpression = (yield this.visitDefined(varDecls.typeExpression, p));
1167
+ }
1168
+ if (varDecls.varargs) {
1169
+ updates.varargs = yield this.visitSpace(varDecls.varargs, p);
1170
+ }
1171
+ return (0, util_1.updateIfChanged)(varDecls, updates);
968
1172
  });
969
1173
  }
970
1174
  visitVariable(variable, p) {
971
1175
  return __awaiter(this, void 0, void 0, function* () {
972
- return this.produceJava(variable, p, (draft) => __awaiter(this, void 0, void 0, function* () {
973
- draft.name = (yield this.visitDefined(variable.name, p));
974
- draft.dimensionsAfterName = yield (0, util_1.mapAsync)(variable.dimensionsAfterName, dim => this.visitLeftPadded(dim, p));
975
- draft.initializer = yield this.visitOptionalLeftPadded(variable.initializer, p);
976
- draft.variableType = (yield this.visitType(variable.variableType, p));
977
- }));
1176
+ const updates = {
1177
+ prefix: yield this.visitSpace(variable.prefix, p),
1178
+ markers: yield this.visitMarkers(variable.markers, p),
1179
+ name: yield this.visitDefined(variable.name, p),
1180
+ dimensionsAfterName: yield (0, util_1.mapAsync)(variable.dimensionsAfterName, dim => this.visitLeftPadded(dim, p)),
1181
+ initializer: yield this.visitOptionalLeftPadded(variable.initializer, p),
1182
+ variableType: yield this.visitType(variable.variableType, p)
1183
+ };
1184
+ return (0, util_1.updateIfChanged)(variable, updates);
978
1185
  });
979
1186
  }
980
1187
  visitWhileLoop(whileLoop, p) {
@@ -984,10 +1191,13 @@ class JavaVisitor extends visitor_1.TreeVisitor {
984
1191
  return statement;
985
1192
  }
986
1193
  whileLoop = statement;
987
- return this.produceJava(whileLoop, p, (draft) => __awaiter(this, void 0, void 0, function* () {
988
- draft.condition = (yield this.visitDefined(whileLoop.condition, p));
989
- draft.body = yield this.visitRightPadded(whileLoop.body, p);
990
- }));
1194
+ const updates = {
1195
+ prefix: yield this.visitSpace(whileLoop.prefix, p),
1196
+ markers: yield this.visitMarkers(whileLoop.markers, p),
1197
+ condition: yield this.visitDefined(whileLoop.condition, p),
1198
+ body: yield this.visitRightPadded(whileLoop.body, p)
1199
+ };
1200
+ return (0, util_1.updateIfChanged)(whileLoop, updates);
991
1201
  });
992
1202
  }
993
1203
  visitWildcard(wildcard, p) {
@@ -997,12 +1207,15 @@ class JavaVisitor extends visitor_1.TreeVisitor {
997
1207
  return expression;
998
1208
  }
999
1209
  wildcard = expression;
1000
- return this.produceJava(wildcard, p, (draft) => __awaiter(this, void 0, void 0, function* () {
1001
- draft.bound = yield this.visitOptionalLeftPadded(wildcard.bound, p);
1002
- if (wildcard.boundedType) {
1003
- draft.boundedType = yield this.visitTypeName(wildcard.boundedType, p);
1004
- }
1005
- }));
1210
+ const updates = {
1211
+ prefix: yield this.visitSpace(wildcard.prefix, p),
1212
+ markers: yield this.visitMarkers(wildcard.markers, p),
1213
+ bound: yield this.visitOptionalLeftPadded(wildcard.bound, p)
1214
+ };
1215
+ if (wildcard.boundedType) {
1216
+ updates.boundedType = yield this.visitTypeName(wildcard.boundedType, p);
1217
+ }
1218
+ return (0, util_1.updateIfChanged)(wildcard, updates);
1006
1219
  });
1007
1220
  }
1008
1221
  visitYield(aYield, p) {
@@ -1012,9 +1225,12 @@ class JavaVisitor extends visitor_1.TreeVisitor {
1012
1225
  return statement;
1013
1226
  }
1014
1227
  aYield = statement;
1015
- return this.produceJava(aYield, p, (draft) => __awaiter(this, void 0, void 0, function* () {
1016
- draft.value = (yield this.visitDefined(aYield.value, p));
1017
- }));
1228
+ const updates = {
1229
+ prefix: yield this.visitSpace(aYield.prefix, p),
1230
+ markers: yield this.visitMarkers(aYield.markers, p),
1231
+ value: yield this.visitDefined(aYield.value, p)
1232
+ };
1233
+ return (0, util_1.updateIfChanged)(aYield, updates);
1018
1234
  });
1019
1235
  }
1020
1236
  visitOptionalRightPadded(right, p) {