1 /* 2 * Copyright (C) 2007-2010 Jlio Vilmar Gesser. 3 * Copyright (C) 2011, 2013-2016 The JavaParser Team. 4 * 5 * This file is part of JavaParser. 6 * 7 * JavaParser can be used either under the terms of 8 * a) the GNU Lesser General Public License as published by 9 * the Free Software Foundation, either version 3 of the License, or 10 * (at your option) any later version. 11 * b) the terms of the Apache License 12 * 13 * You should have received a copy of both licenses in LICENCE.LGPL and 14 * LICENCE.APACHE. Please refer to those files for details. 15 * 16 * JavaParser is distributed in the hope that it will be useful, 17 * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 * GNU Lesser General Public License for more details. 20 */ 21 package com.github.javaparser.ast.visitor; 22 23 import com.github.javaparser.ast.*; 24 import com.github.javaparser.ast.body.*; 25 import com.github.javaparser.ast.comments.*; 26 import com.github.javaparser.ast.expr.*; 27 import com.github.javaparser.ast.modules.*; 28 import com.github.javaparser.ast.stmt.*; 29 import com.github.javaparser.ast.type.*; 30 import java.util.Optional; 31 import javax.annotation.Generated; 32 33 /** 34 * A visitor that clones (copies) a node and all its children. 35 */ 36 public class CloneVisitor implements GenericVisitor<Visitable, Object> { 37 38 @Override 39 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 40 public Visitable visit(final CompilationUnit n, final Object arg) { 41 NodeList<ImportDeclaration> imports = cloneList(n.getImports(), arg); 42 ModuleDeclaration module = cloneNode(n.getModule(), arg); 43 PackageDeclaration packageDeclaration = cloneNode(n.getPackageDeclaration(), arg); 44 NodeList<TypeDeclaration<?>> types = cloneList(n.getTypes(), arg); 45 Comment comment = cloneNode(n.getComment(), arg); 46 CompilationUnit r = new CompilationUnit(n.getTokenRange().orElse(null), packageDeclaration, imports, types, module); 47 r.setComment(comment); 48 return r; 49 } 50 51 @Override 52 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 53 public Visitable visit(final PackageDeclaration n, final Object arg) { 54 NodeList<AnnotationExpr> annotations = cloneList(n.getAnnotations(), arg); 55 Name name = cloneNode(n.getName(), arg); 56 Comment comment = cloneNode(n.getComment(), arg); 57 PackageDeclaration r = new PackageDeclaration(n.getTokenRange().orElse(null), annotations, name); 58 r.setComment(comment); 59 return r; 60 } 61 62 @Override 63 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 64 public Visitable visit(final TypeParameter n, final Object arg) { 65 SimpleName name = cloneNode(n.getName(), arg); 66 NodeList<ClassOrInterfaceType> typeBound = cloneList(n.getTypeBound(), arg); 67 NodeList<AnnotationExpr> annotations = cloneList(n.getAnnotations(), arg); 68 Comment comment = cloneNode(n.getComment(), arg); 69 TypeParameter r = new TypeParameter(n.getTokenRange().orElse(null), name, typeBound, annotations); 70 r.setComment(comment); 71 return r; 72 } 73 74 @Override 75 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 76 public Visitable visit(final LineComment n, final Object arg) { 77 Comment comment = cloneNode(n.getComment(), arg); 78 LineComment r = new LineComment(n.getTokenRange().orElse(null), n.getContent()); 79 r.setComment(comment); 80 return r; 81 } 82 83 @Override 84 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 85 public Visitable visit(final BlockComment n, final Object arg) { 86 Comment comment = cloneNode(n.getComment(), arg); 87 BlockComment r = new BlockComment(n.getTokenRange().orElse(null), n.getContent()); 88 r.setComment(comment); 89 return r; 90 } 91 92 @Override 93 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 94 public Visitable visit(final ClassOrInterfaceDeclaration n, final Object arg) { 95 NodeList<ClassOrInterfaceType> extendedTypes = cloneList(n.getExtendedTypes(), arg); 96 NodeList<ClassOrInterfaceType> implementedTypes = cloneList(n.getImplementedTypes(), arg); 97 NodeList<TypeParameter> typeParameters = cloneList(n.getTypeParameters(), arg); 98 NodeList<BodyDeclaration<?>> members = cloneList(n.getMembers(), arg); 99 SimpleName name = cloneNode(n.getName(), arg); 100 NodeList<AnnotationExpr> annotations = cloneList(n.getAnnotations(), arg); 101 Comment comment = cloneNode(n.getComment(), arg); 102 ClassOrInterfaceDeclaration r = new ClassOrInterfaceDeclaration(n.getTokenRange().orElse(null), n.getModifiers(), annotations, n.isInterface(), name, typeParameters, extendedTypes, implementedTypes, members); 103 r.setComment(comment); 104 return r; 105 } 106 107 @Override 108 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 109 public Visitable visit(final EnumDeclaration n, final Object arg) { 110 NodeList<EnumConstantDeclaration> entries = cloneList(n.getEntries(), arg); 111 NodeList<ClassOrInterfaceType> implementedTypes = cloneList(n.getImplementedTypes(), arg); 112 NodeList<BodyDeclaration<?>> members = cloneList(n.getMembers(), arg); 113 SimpleName name = cloneNode(n.getName(), arg); 114 NodeList<AnnotationExpr> annotations = cloneList(n.getAnnotations(), arg); 115 Comment comment = cloneNode(n.getComment(), arg); 116 EnumDeclaration r = new EnumDeclaration(n.getTokenRange().orElse(null), n.getModifiers(), annotations, name, implementedTypes, entries, members); 117 r.setComment(comment); 118 return r; 119 } 120 121 @Override 122 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 123 public Visitable visit(final EnumConstantDeclaration n, final Object arg) { 124 NodeList<Expression> arguments = cloneList(n.getArguments(), arg); 125 NodeList<BodyDeclaration<?>> classBody = cloneList(n.getClassBody(), arg); 126 SimpleName name = cloneNode(n.getName(), arg); 127 NodeList<AnnotationExpr> annotations = cloneList(n.getAnnotations(), arg); 128 Comment comment = cloneNode(n.getComment(), arg); 129 EnumConstantDeclaration r = new EnumConstantDeclaration(n.getTokenRange().orElse(null), annotations, name, arguments, classBody); 130 r.setComment(comment); 131 return r; 132 } 133 134 @Override 135 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 136 public Visitable visit(final AnnotationDeclaration n, final Object arg) { 137 NodeList<BodyDeclaration<?>> members = cloneList(n.getMembers(), arg); 138 SimpleName name = cloneNode(n.getName(), arg); 139 NodeList<AnnotationExpr> annotations = cloneList(n.getAnnotations(), arg); 140 Comment comment = cloneNode(n.getComment(), arg); 141 AnnotationDeclaration r = new AnnotationDeclaration(n.getTokenRange().orElse(null), n.getModifiers(), annotations, name, members); 142 r.setComment(comment); 143 return r; 144 } 145 146 @Override 147 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 148 public Visitable visit(final AnnotationMemberDeclaration n, final Object arg) { 149 Expression defaultValue = cloneNode(n.getDefaultValue(), arg); 150 SimpleName name = cloneNode(n.getName(), arg); 151 Type type = cloneNode(n.getType(), arg); 152 NodeList<AnnotationExpr> annotations = cloneList(n.getAnnotations(), arg); 153 Comment comment = cloneNode(n.getComment(), arg); 154 AnnotationMemberDeclaration r = new AnnotationMemberDeclaration(n.getTokenRange().orElse(null), n.getModifiers(), annotations, type, name, defaultValue); 155 r.setComment(comment); 156 return r; 157 } 158 159 @Override 160 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 161 public Visitable visit(final FieldDeclaration n, final Object arg) { 162 NodeList<VariableDeclarator> variables = cloneList(n.getVariables(), arg); 163 NodeList<AnnotationExpr> annotations = cloneList(n.getAnnotations(), arg); 164 Comment comment = cloneNode(n.getComment(), arg); 165 FieldDeclaration r = new FieldDeclaration(n.getTokenRange().orElse(null), n.getModifiers(), annotations, variables); 166 r.setComment(comment); 167 return r; 168 } 169 170 @Override 171 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 172 public Visitable visit(final VariableDeclarator n, final Object arg) { 173 Expression initializer = cloneNode(n.getInitializer(), arg); 174 SimpleName name = cloneNode(n.getName(), arg); 175 Type type = cloneNode(n.getType(), arg); 176 Comment comment = cloneNode(n.getComment(), arg); 177 VariableDeclarator r = new VariableDeclarator(n.getTokenRange().orElse(null), type, name, initializer); 178 r.setComment(comment); 179 return r; 180 } 181 182 @Override 183 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 184 public Visitable visit(final ConstructorDeclaration n, final Object arg) { 185 BlockStmt body = cloneNode(n.getBody(), arg); 186 SimpleName name = cloneNode(n.getName(), arg); 187 NodeList<Parameter> parameters = cloneList(n.getParameters(), arg); 188 ReceiverParameter receiverParameter = cloneNode(n.getReceiverParameter(), arg); 189 NodeList<ReferenceType> thrownExceptions = cloneList(n.getThrownExceptions(), arg); 190 NodeList<TypeParameter> typeParameters = cloneList(n.getTypeParameters(), arg); 191 NodeList<AnnotationExpr> annotations = cloneList(n.getAnnotations(), arg); 192 Comment comment = cloneNode(n.getComment(), arg); 193 ConstructorDeclaration r = new ConstructorDeclaration(n.getTokenRange().orElse(null), n.getModifiers(), annotations, typeParameters, name, parameters, thrownExceptions, body, receiverParameter); 194 r.setComment(comment); 195 return r; 196 } 197 198 @Override 199 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 200 public Visitable visit(final MethodDeclaration n, final Object arg) { 201 BlockStmt body = cloneNode(n.getBody(), arg); 202 Type type = cloneNode(n.getType(), arg); 203 SimpleName name = cloneNode(n.getName(), arg); 204 NodeList<Parameter> parameters = cloneList(n.getParameters(), arg); 205 ReceiverParameter receiverParameter = cloneNode(n.getReceiverParameter(), arg); 206 NodeList<ReferenceType> thrownExceptions = cloneList(n.getThrownExceptions(), arg); 207 NodeList<TypeParameter> typeParameters = cloneList(n.getTypeParameters(), arg); 208 NodeList<AnnotationExpr> annotations = cloneList(n.getAnnotations(), arg); 209 Comment comment = cloneNode(n.getComment(), arg); 210 MethodDeclaration r = new MethodDeclaration(n.getTokenRange().orElse(null), n.getModifiers(), annotations, typeParameters, type, name, parameters, thrownExceptions, body, receiverParameter); 211 r.setComment(comment); 212 return r; 213 } 214 215 @Override 216 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 217 public Visitable visit(final Parameter n, final Object arg) { 218 NodeList<AnnotationExpr> annotations = cloneList(n.getAnnotations(), arg); 219 SimpleName name = cloneNode(n.getName(), arg); 220 Type type = cloneNode(n.getType(), arg); 221 NodeList<AnnotationExpr> varArgsAnnotations = cloneList(n.getVarArgsAnnotations(), arg); 222 Comment comment = cloneNode(n.getComment(), arg); 223 Parameter r = new Parameter(n.getTokenRange().orElse(null), n.getModifiers(), annotations, type, n.isVarArgs(), varArgsAnnotations, name); 224 r.setComment(comment); 225 return r; 226 } 227 228 @Override 229 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 230 public Visitable visit(final InitializerDeclaration n, final Object arg) { 231 BlockStmt body = cloneNode(n.getBody(), arg); 232 NodeList<AnnotationExpr> annotations = cloneList(n.getAnnotations(), arg); 233 Comment comment = cloneNode(n.getComment(), arg); 234 InitializerDeclaration r = new InitializerDeclaration(n.getTokenRange().orElse(null), n.isStatic(), body); 235 r.setComment(comment); 236 return r; 237 } 238 239 @Override 240 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 241 public Visitable visit(final JavadocComment n, final Object arg) { 242 Comment comment = cloneNode(n.getComment(), arg); 243 JavadocComment r = new JavadocComment(n.getTokenRange().orElse(null), n.getContent()); 244 r.setComment(comment); 245 return r; 246 } 247 248 @Override 249 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 250 public Visitable visit(final ClassOrInterfaceType n, final Object arg) { 251 SimpleName name = cloneNode(n.getName(), arg); 252 ClassOrInterfaceType scope = cloneNode(n.getScope(), arg); 253 NodeList<Type> typeArguments = cloneList(n.getTypeArguments().orElse(null), arg); 254 NodeList<AnnotationExpr> annotations = cloneList(n.getAnnotations(), arg); 255 Comment comment = cloneNode(n.getComment(), arg); 256 ClassOrInterfaceType r = new ClassOrInterfaceType(n.getTokenRange().orElse(null), scope, name, typeArguments, annotations); 257 r.setComment(comment); 258 return r; 259 } 260 261 @Override 262 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 263 public Visitable visit(final PrimitiveType n, final Object arg) { 264 NodeList<AnnotationExpr> annotations = cloneList(n.getAnnotations(), arg); 265 Comment comment = cloneNode(n.getComment(), arg); 266 PrimitiveType r = new PrimitiveType(n.getTokenRange().orElse(null), n.getType(), annotations); 267 r.setComment(comment); 268 return r; 269 } 270 271 @Override 272 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 273 public Visitable visit(final ArrayType n, final Object arg) { 274 Type componentType = cloneNode(n.getComponentType(), arg); 275 NodeList<AnnotationExpr> annotations = cloneList(n.getAnnotations(), arg); 276 Comment comment = cloneNode(n.getComment(), arg); 277 ArrayType r = new ArrayType(n.getTokenRange().orElse(null), componentType, n.getOrigin(), annotations); 278 r.setComment(comment); 279 return r; 280 } 281 282 @Override 283 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 284 public Visitable visit(final ArrayCreationLevel n, final Object arg) { 285 NodeList<AnnotationExpr> annotations = cloneList(n.getAnnotations(), arg); 286 Expression dimension = cloneNode(n.getDimension(), arg); 287 Comment comment = cloneNode(n.getComment(), arg); 288 ArrayCreationLevel r = new ArrayCreationLevel(n.getTokenRange().orElse(null), dimension, annotations); 289 r.setComment(comment); 290 return r; 291 } 292 293 @Override 294 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 295 public Visitable visit(final IntersectionType n, final Object arg) { 296 NodeList<ReferenceType> elements = cloneList(n.getElements(), arg); 297 NodeList<AnnotationExpr> annotations = cloneList(n.getAnnotations(), arg); 298 Comment comment = cloneNode(n.getComment(), arg); 299 IntersectionType r = new IntersectionType(n.getTokenRange().orElse(null), elements); 300 r.setComment(comment); 301 return r; 302 } 303 304 @Override 305 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 306 public Visitable visit(final UnionType n, final Object arg) { 307 NodeList<ReferenceType> elements = cloneList(n.getElements(), arg); 308 NodeList<AnnotationExpr> annotations = cloneList(n.getAnnotations(), arg); 309 Comment comment = cloneNode(n.getComment(), arg); 310 UnionType r = new UnionType(n.getTokenRange().orElse(null), elements); 311 r.setComment(comment); 312 return r; 313 } 314 315 @Override 316 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 317 public Visitable visit(final VoidType n, final Object arg) { 318 NodeList<AnnotationExpr> annotations = cloneList(n.getAnnotations(), arg); 319 Comment comment = cloneNode(n.getComment(), arg); 320 VoidType r = new VoidType(n.getTokenRange().orElse(null)); 321 r.setComment(comment); 322 return r; 323 } 324 325 @Override 326 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 327 public Visitable visit(final WildcardType n, final Object arg) { 328 ReferenceType extendedType = cloneNode(n.getExtendedType(), arg); 329 ReferenceType superType = cloneNode(n.getSuperType(), arg); 330 NodeList<AnnotationExpr> annotations = cloneList(n.getAnnotations(), arg); 331 Comment comment = cloneNode(n.getComment(), arg); 332 WildcardType r = new WildcardType(n.getTokenRange().orElse(null), extendedType, superType, annotations); 333 r.setComment(comment); 334 return r; 335 } 336 337 @Override 338 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 339 public Visitable visit(final UnknownType n, final Object arg) { 340 NodeList<AnnotationExpr> annotations = cloneList(n.getAnnotations(), arg); 341 Comment comment = cloneNode(n.getComment(), arg); 342 UnknownType r = new UnknownType(n.getTokenRange().orElse(null)); 343 r.setComment(comment); 344 return r; 345 } 346 347 @Override 348 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 349 public Visitable visit(final ArrayAccessExpr n, final Object arg) { 350 Expression index = cloneNode(n.getIndex(), arg); 351 Expression name = cloneNode(n.getName(), arg); 352 Comment comment = cloneNode(n.getComment(), arg); 353 ArrayAccessExpr r = new ArrayAccessExpr(n.getTokenRange().orElse(null), name, index); 354 r.setComment(comment); 355 return r; 356 } 357 358 @Override 359 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 360 public Visitable visit(final ArrayCreationExpr n, final Object arg) { 361 Type elementType = cloneNode(n.getElementType(), arg); 362 ArrayInitializerExpr initializer = cloneNode(n.getInitializer(), arg); 363 NodeList<ArrayCreationLevel> levels = cloneList(n.getLevels(), arg); 364 Comment comment = cloneNode(n.getComment(), arg); 365 ArrayCreationExpr r = new ArrayCreationExpr(n.getTokenRange().orElse(null), elementType, levels, initializer); 366 r.setComment(comment); 367 return r; 368 } 369 370 @Override 371 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 372 public Visitable visit(final ArrayInitializerExpr n, final Object arg) { 373 NodeList<Expression> values = cloneList(n.getValues(), arg); 374 Comment comment = cloneNode(n.getComment(), arg); 375 ArrayInitializerExpr r = new ArrayInitializerExpr(n.getTokenRange().orElse(null), values); 376 r.setComment(comment); 377 return r; 378 } 379 380 @Override 381 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 382 public Visitable visit(final AssignExpr n, final Object arg) { 383 Expression target = cloneNode(n.getTarget(), arg); 384 Expression value = cloneNode(n.getValue(), arg); 385 Comment comment = cloneNode(n.getComment(), arg); 386 AssignExpr r = new AssignExpr(n.getTokenRange().orElse(null), target, value, n.getOperator()); 387 r.setComment(comment); 388 return r; 389 } 390 391 @Override 392 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 393 public Visitable visit(final BinaryExpr n, final Object arg) { 394 Expression left = cloneNode(n.getLeft(), arg); 395 Expression right = cloneNode(n.getRight(), arg); 396 Comment comment = cloneNode(n.getComment(), arg); 397 BinaryExpr r = new BinaryExpr(n.getTokenRange().orElse(null), left, right, n.getOperator()); 398 r.setComment(comment); 399 return r; 400 } 401 402 @Override 403 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 404 public Visitable visit(final CastExpr n, final Object arg) { 405 Expression expression = cloneNode(n.getExpression(), arg); 406 Type type = cloneNode(n.getType(), arg); 407 Comment comment = cloneNode(n.getComment(), arg); 408 CastExpr r = new CastExpr(n.getTokenRange().orElse(null), type, expression); 409 r.setComment(comment); 410 return r; 411 } 412 413 @Override 414 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 415 public Visitable visit(final ClassExpr n, final Object arg) { 416 Type type = cloneNode(n.getType(), arg); 417 Comment comment = cloneNode(n.getComment(), arg); 418 ClassExpr r = new ClassExpr(n.getTokenRange().orElse(null), type); 419 r.setComment(comment); 420 return r; 421 } 422 423 @Override 424 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 425 public Visitable visit(final ConditionalExpr n, final Object arg) { 426 Expression condition = cloneNode(n.getCondition(), arg); 427 Expression elseExpr = cloneNode(n.getElseExpr(), arg); 428 Expression thenExpr = cloneNode(n.getThenExpr(), arg); 429 Comment comment = cloneNode(n.getComment(), arg); 430 ConditionalExpr r = new ConditionalExpr(n.getTokenRange().orElse(null), condition, thenExpr, elseExpr); 431 r.setComment(comment); 432 return r; 433 } 434 435 @Override 436 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 437 public Visitable visit(final EnclosedExpr n, final Object arg) { 438 Expression inner = cloneNode(n.getInner(), arg); 439 Comment comment = cloneNode(n.getComment(), arg); 440 EnclosedExpr r = new EnclosedExpr(n.getTokenRange().orElse(null), inner); 441 r.setComment(comment); 442 return r; 443 } 444 445 @Override 446 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 447 public Visitable visit(final FieldAccessExpr n, final Object arg) { 448 SimpleName name = cloneNode(n.getName(), arg); 449 Expression scope = cloneNode(n.getScope(), arg); 450 NodeList<Type> typeArguments = cloneList(n.getTypeArguments().orElse(null), arg); 451 Comment comment = cloneNode(n.getComment(), arg); 452 FieldAccessExpr r = new FieldAccessExpr(n.getTokenRange().orElse(null), scope, typeArguments, name); 453 r.setComment(comment); 454 return r; 455 } 456 457 @Override 458 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 459 public Visitable visit(final InstanceOfExpr n, final Object arg) { 460 Expression expression = cloneNode(n.getExpression(), arg); 461 ReferenceType type = cloneNode(n.getType(), arg); 462 Comment comment = cloneNode(n.getComment(), arg); 463 InstanceOfExpr r = new InstanceOfExpr(n.getTokenRange().orElse(null), expression, type); 464 r.setComment(comment); 465 return r; 466 } 467 468 @Override 469 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 470 public Visitable visit(final StringLiteralExpr n, final Object arg) { 471 Comment comment = cloneNode(n.getComment(), arg); 472 StringLiteralExpr r = new StringLiteralExpr(n.getTokenRange().orElse(null), n.getValue()); 473 r.setComment(comment); 474 return r; 475 } 476 477 @Override 478 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 479 public Visitable visit(final IntegerLiteralExpr n, final Object arg) { 480 Comment comment = cloneNode(n.getComment(), arg); 481 IntegerLiteralExpr r = new IntegerLiteralExpr(n.getTokenRange().orElse(null), n.getValue()); 482 r.setComment(comment); 483 return r; 484 } 485 486 @Override 487 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 488 public Visitable visit(final LongLiteralExpr n, final Object arg) { 489 Comment comment = cloneNode(n.getComment(), arg); 490 LongLiteralExpr r = new LongLiteralExpr(n.getTokenRange().orElse(null), n.getValue()); 491 r.setComment(comment); 492 return r; 493 } 494 495 @Override 496 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 497 public Visitable visit(final CharLiteralExpr n, final Object arg) { 498 Comment comment = cloneNode(n.getComment(), arg); 499 CharLiteralExpr r = new CharLiteralExpr(n.getTokenRange().orElse(null), n.getValue()); 500 r.setComment(comment); 501 return r; 502 } 503 504 @Override 505 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 506 public Visitable visit(final DoubleLiteralExpr n, final Object arg) { 507 Comment comment = cloneNode(n.getComment(), arg); 508 DoubleLiteralExpr r = new DoubleLiteralExpr(n.getTokenRange().orElse(null), n.getValue()); 509 r.setComment(comment); 510 return r; 511 } 512 513 @Override 514 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 515 public Visitable visit(final BooleanLiteralExpr n, final Object arg) { 516 Comment comment = cloneNode(n.getComment(), arg); 517 BooleanLiteralExpr r = new BooleanLiteralExpr(n.getTokenRange().orElse(null), n.getValue()); 518 r.setComment(comment); 519 return r; 520 } 521 522 @Override 523 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 524 public Visitable visit(final NullLiteralExpr n, final Object arg) { 525 Comment comment = cloneNode(n.getComment(), arg); 526 NullLiteralExpr r = new NullLiteralExpr(n.getTokenRange().orElse(null)); 527 r.setComment(comment); 528 return r; 529 } 530 531 @Override 532 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 533 public Visitable visit(final MethodCallExpr n, final Object arg) { 534 NodeList<Expression> arguments = cloneList(n.getArguments(), arg); 535 SimpleName name = cloneNode(n.getName(), arg); 536 Expression scope = cloneNode(n.getScope(), arg); 537 NodeList<Type> typeArguments = cloneList(n.getTypeArguments().orElse(null), arg); 538 Comment comment = cloneNode(n.getComment(), arg); 539 MethodCallExpr r = new MethodCallExpr(n.getTokenRange().orElse(null), scope, typeArguments, name, arguments); 540 r.setComment(comment); 541 return r; 542 } 543 544 @Override 545 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 546 public Visitable visit(final NameExpr n, final Object arg) { 547 SimpleName name = cloneNode(n.getName(), arg); 548 Comment comment = cloneNode(n.getComment(), arg); 549 NameExpr r = new NameExpr(n.getTokenRange().orElse(null), name); 550 r.setComment(comment); 551 return r; 552 } 553 554 @Override 555 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 556 public Visitable visit(final ObjectCreationExpr n, final Object arg) { 557 NodeList<BodyDeclaration<?>> anonymousClassBody = cloneList(n.getAnonymousClassBody().orElse(null), arg); 558 NodeList<Expression> arguments = cloneList(n.getArguments(), arg); 559 Expression scope = cloneNode(n.getScope(), arg); 560 ClassOrInterfaceType type = cloneNode(n.getType(), arg); 561 NodeList<Type> typeArguments = cloneList(n.getTypeArguments().orElse(null), arg); 562 Comment comment = cloneNode(n.getComment(), arg); 563 ObjectCreationExpr r = new ObjectCreationExpr(n.getTokenRange().orElse(null), scope, type, typeArguments, arguments, anonymousClassBody); 564 r.setComment(comment); 565 return r; 566 } 567 568 @Override 569 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 570 public Visitable visit(final Name n, final Object arg) { 571 NodeList<AnnotationExpr> annotations = cloneList(n.getAnnotations(), arg); 572 Name qualifier = cloneNode(n.getQualifier(), arg); 573 Comment comment = cloneNode(n.getComment(), arg); 574 Name r = new Name(n.getTokenRange().orElse(null), qualifier, n.getIdentifier(), annotations); 575 r.setComment(comment); 576 return r; 577 } 578 579 @Override 580 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 581 public Visitable visit(final SimpleName n, final Object arg) { 582 Comment comment = cloneNode(n.getComment(), arg); 583 SimpleName r = new SimpleName(n.getTokenRange().orElse(null), n.getIdentifier()); 584 r.setComment(comment); 585 return r; 586 } 587 588 @Override 589 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 590 public Visitable visit(final ThisExpr n, final Object arg) { 591 Expression classExpr = cloneNode(n.getClassExpr(), arg); 592 Comment comment = cloneNode(n.getComment(), arg); 593 ThisExpr r = new ThisExpr(n.getTokenRange().orElse(null), classExpr); 594 r.setComment(comment); 595 return r; 596 } 597 598 @Override 599 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 600 public Visitable visit(final SuperExpr n, final Object arg) { 601 Expression classExpr = cloneNode(n.getClassExpr(), arg); 602 Comment comment = cloneNode(n.getComment(), arg); 603 SuperExpr r = new SuperExpr(n.getTokenRange().orElse(null), classExpr); 604 r.setComment(comment); 605 return r; 606 } 607 608 @Override 609 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 610 public Visitable visit(final UnaryExpr n, final Object arg) { 611 Expression expression = cloneNode(n.getExpression(), arg); 612 Comment comment = cloneNode(n.getComment(), arg); 613 UnaryExpr r = new UnaryExpr(n.getTokenRange().orElse(null), expression, n.getOperator()); 614 r.setComment(comment); 615 return r; 616 } 617 618 @Override 619 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 620 public Visitable visit(final VariableDeclarationExpr n, final Object arg) { 621 NodeList<AnnotationExpr> annotations = cloneList(n.getAnnotations(), arg); 622 NodeList<VariableDeclarator> variables = cloneList(n.getVariables(), arg); 623 Comment comment = cloneNode(n.getComment(), arg); 624 VariableDeclarationExpr r = new VariableDeclarationExpr(n.getTokenRange().orElse(null), n.getModifiers(), annotations, variables); 625 r.setComment(comment); 626 return r; 627 } 628 629 @Override 630 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 631 public Visitable visit(final MarkerAnnotationExpr n, final Object arg) { 632 Name name = cloneNode(n.getName(), arg); 633 Comment comment = cloneNode(n.getComment(), arg); 634 MarkerAnnotationExpr r = new MarkerAnnotationExpr(n.getTokenRange().orElse(null), name); 635 r.setComment(comment); 636 return r; 637 } 638 639 @Override 640 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 641 public Visitable visit(final SingleMemberAnnotationExpr n, final Object arg) { 642 Expression memberValue = cloneNode(n.getMemberValue(), arg); 643 Name name = cloneNode(n.getName(), arg); 644 Comment comment = cloneNode(n.getComment(), arg); 645 SingleMemberAnnotationExpr r = new SingleMemberAnnotationExpr(n.getTokenRange().orElse(null), name, memberValue); 646 r.setComment(comment); 647 return r; 648 } 649 650 @Override 651 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 652 public Visitable visit(final NormalAnnotationExpr n, final Object arg) { 653 NodeList<MemberValuePair> pairs = cloneList(n.getPairs(), arg); 654 Name name = cloneNode(n.getName(), arg); 655 Comment comment = cloneNode(n.getComment(), arg); 656 NormalAnnotationExpr r = new NormalAnnotationExpr(n.getTokenRange().orElse(null), name, pairs); 657 r.setComment(comment); 658 return r; 659 } 660 661 @Override 662 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 663 public Visitable visit(final MemberValuePair n, final Object arg) { 664 SimpleName name = cloneNode(n.getName(), arg); 665 Expression value = cloneNode(n.getValue(), arg); 666 Comment comment = cloneNode(n.getComment(), arg); 667 MemberValuePair r = new MemberValuePair(n.getTokenRange().orElse(null), name, value); 668 r.setComment(comment); 669 return r; 670 } 671 672 @Override 673 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 674 public Visitable visit(final ExplicitConstructorInvocationStmt n, final Object arg) { 675 NodeList<Expression> arguments = cloneList(n.getArguments(), arg); 676 Expression expression = cloneNode(n.getExpression(), arg); 677 NodeList<Type> typeArguments = cloneList(n.getTypeArguments().orElse(null), arg); 678 Comment comment = cloneNode(n.getComment(), arg); 679 ExplicitConstructorInvocationStmt r = new ExplicitConstructorInvocationStmt(n.getTokenRange().orElse(null), typeArguments, n.isThis(), expression, arguments); 680 r.setComment(comment); 681 return r; 682 } 683 684 @Override 685 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 686 public Visitable visit(final LocalClassDeclarationStmt n, final Object arg) { 687 ClassOrInterfaceDeclaration classDeclaration = cloneNode(n.getClassDeclaration(), arg); 688 Comment comment = cloneNode(n.getComment(), arg); 689 LocalClassDeclarationStmt r = new LocalClassDeclarationStmt(n.getTokenRange().orElse(null), classDeclaration); 690 r.setComment(comment); 691 return r; 692 } 693 694 @Override 695 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 696 public Visitable visit(final AssertStmt n, final Object arg) { 697 Expression check = cloneNode(n.getCheck(), arg); 698 Expression message = cloneNode(n.getMessage(), arg); 699 Comment comment = cloneNode(n.getComment(), arg); 700 AssertStmt r = new AssertStmt(n.getTokenRange().orElse(null), check, message); 701 r.setComment(comment); 702 return r; 703 } 704 705 @Override 706 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 707 public Visitable visit(final BlockStmt n, final Object arg) { 708 NodeList<Statement> statements = cloneList(n.getStatements(), arg); 709 Comment comment = cloneNode(n.getComment(), arg); 710 BlockStmt r = new BlockStmt(n.getTokenRange().orElse(null), statements); 711 r.setComment(comment); 712 return r; 713 } 714 715 @Override 716 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 717 public Visitable visit(final LabeledStmt n, final Object arg) { 718 SimpleName label = cloneNode(n.getLabel(), arg); 719 Statement statement = cloneNode(n.getStatement(), arg); 720 Comment comment = cloneNode(n.getComment(), arg); 721 LabeledStmt r = new LabeledStmt(n.getTokenRange().orElse(null), label, statement); 722 r.setComment(comment); 723 return r; 724 } 725 726 @Override 727 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 728 public Visitable visit(final EmptyStmt n, final Object arg) { 729 Comment comment = cloneNode(n.getComment(), arg); 730 EmptyStmt r = new EmptyStmt(n.getTokenRange().orElse(null)); 731 r.setComment(comment); 732 return r; 733 } 734 735 @Override 736 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 737 public Visitable visit(final ExpressionStmt n, final Object arg) { 738 Expression expression = cloneNode(n.getExpression(), arg); 739 Comment comment = cloneNode(n.getComment(), arg); 740 ExpressionStmt r = new ExpressionStmt(n.getTokenRange().orElse(null), expression); 741 r.setComment(comment); 742 return r; 743 } 744 745 @Override 746 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 747 public Visitable visit(final SwitchStmt n, final Object arg) { 748 NodeList<SwitchEntryStmt> entries = cloneList(n.getEntries(), arg); 749 Expression selector = cloneNode(n.getSelector(), arg); 750 Comment comment = cloneNode(n.getComment(), arg); 751 SwitchStmt r = new SwitchStmt(n.getTokenRange().orElse(null), selector, entries); 752 r.setComment(comment); 753 return r; 754 } 755 756 @Override 757 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 758 public Visitable visit(final SwitchEntryStmt n, final Object arg) { 759 Expression label = cloneNode(n.getLabel(), arg); 760 NodeList<Statement> statements = cloneList(n.getStatements(), arg); 761 Comment comment = cloneNode(n.getComment(), arg); 762 SwitchEntryStmt r = new SwitchEntryStmt(n.getTokenRange().orElse(null), label, statements); 763 r.setComment(comment); 764 return r; 765 } 766 767 @Override 768 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 769 public Visitable visit(final BreakStmt n, final Object arg) { 770 SimpleName label = cloneNode(n.getLabel(), arg); 771 Comment comment = cloneNode(n.getComment(), arg); 772 BreakStmt r = new BreakStmt(n.getTokenRange().orElse(null), label); 773 r.setComment(comment); 774 return r; 775 } 776 777 @Override 778 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 779 public Visitable visit(final ReturnStmt n, final Object arg) { 780 Expression expression = cloneNode(n.getExpression(), arg); 781 Comment comment = cloneNode(n.getComment(), arg); 782 ReturnStmt r = new ReturnStmt(n.getTokenRange().orElse(null), expression); 783 r.setComment(comment); 784 return r; 785 } 786 787 @Override 788 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 789 public Visitable visit(final IfStmt n, final Object arg) { 790 Expression condition = cloneNode(n.getCondition(), arg); 791 Statement elseStmt = cloneNode(n.getElseStmt(), arg); 792 Statement thenStmt = cloneNode(n.getThenStmt(), arg); 793 Comment comment = cloneNode(n.getComment(), arg); 794 IfStmt r = new IfStmt(n.getTokenRange().orElse(null), condition, thenStmt, elseStmt); 795 r.setComment(comment); 796 return r; 797 } 798 799 @Override 800 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 801 public Visitable visit(final WhileStmt n, final Object arg) { 802 Statement body = cloneNode(n.getBody(), arg); 803 Expression condition = cloneNode(n.getCondition(), arg); 804 Comment comment = cloneNode(n.getComment(), arg); 805 WhileStmt r = new WhileStmt(n.getTokenRange().orElse(null), condition, body); 806 r.setComment(comment); 807 return r; 808 } 809 810 @Override 811 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 812 public Visitable visit(final ContinueStmt n, final Object arg) { 813 SimpleName label = cloneNode(n.getLabel(), arg); 814 Comment comment = cloneNode(n.getComment(), arg); 815 ContinueStmt r = new ContinueStmt(n.getTokenRange().orElse(null), label); 816 r.setComment(comment); 817 return r; 818 } 819 820 @Override 821 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 822 public Visitable visit(final DoStmt n, final Object arg) { 823 Statement body = cloneNode(n.getBody(), arg); 824 Expression condition = cloneNode(n.getCondition(), arg); 825 Comment comment = cloneNode(n.getComment(), arg); 826 DoStmt r = new DoStmt(n.getTokenRange().orElse(null), body, condition); 827 r.setComment(comment); 828 return r; 829 } 830 831 @Override 832 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 833 public Visitable visit(final ForeachStmt n, final Object arg) { 834 Statement body = cloneNode(n.getBody(), arg); 835 Expression iterable = cloneNode(n.getIterable(), arg); 836 VariableDeclarationExpr variable = cloneNode(n.getVariable(), arg); 837 Comment comment = cloneNode(n.getComment(), arg); 838 ForeachStmt r = new ForeachStmt(n.getTokenRange().orElse(null), variable, iterable, body); 839 r.setComment(comment); 840 return r; 841 } 842 843 @Override 844 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 845 public Visitable visit(final ForStmt n, final Object arg) { 846 Statement body = cloneNode(n.getBody(), arg); 847 Expression compare = cloneNode(n.getCompare(), arg); 848 NodeList<Expression> initialization = cloneList(n.getInitialization(), arg); 849 NodeList<Expression> update = cloneList(n.getUpdate(), arg); 850 Comment comment = cloneNode(n.getComment(), arg); 851 ForStmt r = new ForStmt(n.getTokenRange().orElse(null), initialization, compare, update, body); 852 r.setComment(comment); 853 return r; 854 } 855 856 @Override 857 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 858 public Visitable visit(final ThrowStmt n, final Object arg) { 859 Expression expression = cloneNode(n.getExpression(), arg); 860 Comment comment = cloneNode(n.getComment(), arg); 861 ThrowStmt r = new ThrowStmt(n.getTokenRange().orElse(null), expression); 862 r.setComment(comment); 863 return r; 864 } 865 866 @Override 867 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 868 public Visitable visit(final SynchronizedStmt n, final Object arg) { 869 BlockStmt body = cloneNode(n.getBody(), arg); 870 Expression expression = cloneNode(n.getExpression(), arg); 871 Comment comment = cloneNode(n.getComment(), arg); 872 SynchronizedStmt r = new SynchronizedStmt(n.getTokenRange().orElse(null), expression, body); 873 r.setComment(comment); 874 return r; 875 } 876 877 @Override 878 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 879 public Visitable visit(final TryStmt n, final Object arg) { 880 NodeList<CatchClause> catchClauses = cloneList(n.getCatchClauses(), arg); 881 BlockStmt finallyBlock = cloneNode(n.getFinallyBlock(), arg); 882 NodeList<Expression> resources = cloneList(n.getResources(), arg); 883 BlockStmt tryBlock = cloneNode(n.getTryBlock(), arg); 884 Comment comment = cloneNode(n.getComment(), arg); 885 TryStmt r = new TryStmt(n.getTokenRange().orElse(null), resources, tryBlock, catchClauses, finallyBlock); 886 r.setComment(comment); 887 return r; 888 } 889 890 @Override 891 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 892 public Visitable visit(final CatchClause n, final Object arg) { 893 BlockStmt body = cloneNode(n.getBody(), arg); 894 Parameter parameter = cloneNode(n.getParameter(), arg); 895 Comment comment = cloneNode(n.getComment(), arg); 896 CatchClause r = new CatchClause(n.getTokenRange().orElse(null), parameter, body); 897 r.setComment(comment); 898 return r; 899 } 900 901 @Override 902 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 903 public Visitable visit(final LambdaExpr n, final Object arg) { 904 Statement body = cloneNode(n.getBody(), arg); 905 NodeList<Parameter> parameters = cloneList(n.getParameters(), arg); 906 Comment comment = cloneNode(n.getComment(), arg); 907 LambdaExpr r = new LambdaExpr(n.getTokenRange().orElse(null), parameters, body, n.isEnclosingParameters()); 908 r.setComment(comment); 909 return r; 910 } 911 912 @Override 913 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 914 public Visitable visit(final MethodReferenceExpr n, final Object arg) { 915 Expression scope = cloneNode(n.getScope(), arg); 916 NodeList<Type> typeArguments = cloneList(n.getTypeArguments().orElse(null), arg); 917 Comment comment = cloneNode(n.getComment(), arg); 918 MethodReferenceExpr r = new MethodReferenceExpr(n.getTokenRange().orElse(null), scope, typeArguments, n.getIdentifier()); 919 r.setComment(comment); 920 return r; 921 } 922 923 @Override 924 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 925 public Visitable visit(final TypeExpr n, final Object arg) { 926 Type type = cloneNode(n.getType(), arg); 927 Comment comment = cloneNode(n.getComment(), arg); 928 TypeExpr r = new TypeExpr(n.getTokenRange().orElse(null), type); 929 r.setComment(comment); 930 return r; 931 } 932 933 @Override 934 public Visitable visit(NodeList n, Object arg) { 935 NodeList<Node> newNodes = new NodeList<>(); 936 for (Object node : n) { 937 Node resultNode = (Node) ((Node) node).accept(this, arg); 938 if (resultNode != null) { 939 newNodes.add(resultNode); 940 } 941 } 942 return newNodes; 943 } 944 945 @Override 946 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 947 public Node visit(final ImportDeclaration n, final Object arg) { 948 Name name = cloneNode(n.getName(), arg); 949 Comment comment = cloneNode(n.getComment(), arg); 950 ImportDeclaration r = new ImportDeclaration(n.getTokenRange().orElse(null), name, n.isStatic(), n.isAsterisk()); 951 r.setComment(comment); 952 return r; 953 } 954 955 @Override 956 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 957 public Visitable visit(final ModuleDeclaration n, final Object arg) { 958 NodeList<AnnotationExpr> annotations = cloneList(n.getAnnotations(), arg); 959 NodeList<ModuleStmt> moduleStmts = cloneList(n.getModuleStmts(), arg); 960 Name name = cloneNode(n.getName(), arg); 961 Comment comment = cloneNode(n.getComment(), arg); 962 ModuleDeclaration r = new ModuleDeclaration(n.getTokenRange().orElse(null), annotations, name, n.isOpen(), moduleStmts); 963 r.setComment(comment); 964 return r; 965 } 966 967 @Override 968 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 969 public Visitable visit(final ModuleRequiresStmt n, final Object arg) { 970 Name name = cloneNode(n.getName(), arg); 971 Comment comment = cloneNode(n.getComment(), arg); 972 ModuleRequiresStmt r = new ModuleRequiresStmt(n.getTokenRange().orElse(null), n.getModifiers(), name); 973 r.setComment(comment); 974 return r; 975 } 976 977 @SuppressWarnings("unchecked") 978 protected <T extends Node> T cloneNode(Optional<T> node, Object arg) { 979 if (!node.isPresent()) { 980 return null; 981 } 982 Node r = (Node) node.get().accept(this, arg); 983 if (r == null) { 984 return null; 985 } 986 return (T) r; 987 } 988 989 @SuppressWarnings("unchecked") 990 protected <T extends Node> T cloneNode(T node, Object arg) { 991 if (node == null) { 992 return null; 993 } 994 Node r = (Node) node.accept(this, arg); 995 if (r == null) { 996 return null; 997 } 998 return (T) r; 999 } 1000 1001 private <N extends Node> NodeList<N> cloneList(NodeList<N> list, Object arg) { 1002 if (list == null) { 1003 return null; 1004 } 1005 return (NodeList<N>) list.accept(this, arg); 1006 } 1007 1008 @Override 1009 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 1010 public Visitable visit(final ModuleExportsStmt n, final Object arg) { 1011 NodeList<Name> moduleNames = cloneList(n.getModuleNames(), arg); 1012 Name name = cloneNode(n.getName(), arg); 1013 Comment comment = cloneNode(n.getComment(), arg); 1014 ModuleExportsStmt r = new ModuleExportsStmt(n.getTokenRange().orElse(null), name, moduleNames); 1015 r.setComment(comment); 1016 return r; 1017 } 1018 1019 @Override 1020 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 1021 public Visitable visit(final ModuleProvidesStmt n, final Object arg) { 1022 Type type = cloneNode(n.getType(), arg); 1023 NodeList<Type> withTypes = cloneList(n.getWithTypes(), arg); 1024 Comment comment = cloneNode(n.getComment(), arg); 1025 ModuleProvidesStmt r = new ModuleProvidesStmt(n.getTokenRange().orElse(null), type, withTypes); 1026 r.setComment(comment); 1027 return r; 1028 } 1029 1030 @Override 1031 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 1032 public Visitable visit(final ModuleUsesStmt n, final Object arg) { 1033 Type type = cloneNode(n.getType(), arg); 1034 Comment comment = cloneNode(n.getComment(), arg); 1035 ModuleUsesStmt r = new ModuleUsesStmt(n.getTokenRange().orElse(null), type); 1036 r.setComment(comment); 1037 return r; 1038 } 1039 1040 @Override 1041 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 1042 public Visitable visit(final ModuleOpensStmt n, final Object arg) { 1043 NodeList<Name> moduleNames = cloneList(n.getModuleNames(), arg); 1044 Name name = cloneNode(n.getName(), arg); 1045 Comment comment = cloneNode(n.getComment(), arg); 1046 ModuleOpensStmt r = new ModuleOpensStmt(n.getTokenRange().orElse(null), name, moduleNames); 1047 r.setComment(comment); 1048 return r; 1049 } 1050 1051 @Override 1052 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 1053 public Visitable visit(final UnparsableStmt n, final Object arg) { 1054 Comment comment = cloneNode(n.getComment(), arg); 1055 UnparsableStmt r = new UnparsableStmt(n.getTokenRange().orElse(null)); 1056 r.setComment(comment); 1057 return r; 1058 } 1059 1060 @Override 1061 @Generated("com.github.javaparser.generator.core.visitor.CloneVisitorGenerator") 1062 public Visitable visit(final ReceiverParameter n, final Object arg) { 1063 NodeList<AnnotationExpr> annotations = cloneList(n.getAnnotations(), arg); 1064 Name name = cloneNode(n.getName(), arg); 1065 Type type = cloneNode(n.getType(), arg); 1066 Comment comment = cloneNode(n.getComment(), arg); 1067 ReceiverParameter r = new ReceiverParameter(n.getTokenRange().orElse(null), annotations, type, name); 1068 r.setComment(comment); 1069 return r; 1070 } 1071 1072 @Override 1073 public Visitable visit(final VarType n, final Object arg) { 1074 NodeList<AnnotationExpr> annotations = cloneList(n.getAnnotations(), arg); 1075 Comment comment = cloneNode(n.getComment(), arg); 1076 VarType r = new VarType(n.getTokenRange().orElse(null)); 1077 r.setComment(comment); 1078 return r; 1079 } 1080 } 1081