001 /* This file was generated with JastAdd2 (http://jastadd.org) version R20130213 */ 002 package AST; 003 004 import java.util.HashSet; 005 import java.io.File; 006 import java.util.*; 007 import beaver.*; 008 import java.util.ArrayList; 009 import java.util.zip.*; 010 import java.io.*; 011 import java.io.FileNotFoundException; 012 import java.util.Collection; 013 014 /** 015 * @production GenericConstructorDecl : {@link ConstructorDecl} ::= <span class="component">TypeParameter:{@link TypeVariable}*</span>; 016 * @ast node 017 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericMethods.ast:4 018 */ 019 public class GenericConstructorDecl extends ConstructorDecl implements Cloneable { 020 /** 021 * @apilevel low-level 022 */ 023 public void flushCache() { 024 } 025 /** 026 * @apilevel internal 027 */ 028 public void flushCollectionCache() { 029 } 030 /** 031 * @apilevel internal 032 */ 033 @SuppressWarnings({"unchecked", "cast"}) 034 public GenericConstructorDecl clone() throws CloneNotSupportedException { 035 GenericConstructorDecl node = (GenericConstructorDecl)super.clone(); 036 node.in$Circle(false); 037 node.is$Final(false); 038 return node; 039 } 040 /** 041 * @apilevel internal 042 */ 043 @SuppressWarnings({"unchecked", "cast"}) 044 public GenericConstructorDecl copy() { 045 046 try { 047 GenericConstructorDecl node = (GenericConstructorDecl) clone(); 048 node.parent = null; 049 if(children != null) 050 node.children = (ASTNode[]) children.clone(); 051 052 return node; 053 } catch (CloneNotSupportedException e) { 054 throw new Error("Error: clone not supported for " + getClass().getName()); 055 } 056 057 }/** 058 * Create a deep copy of the AST subtree at this node. 059 * The copy is dangling, i.e. has no parent. 060 * @return dangling copy of the subtree at this node 061 * @apilevel low-level 062 */ 063 @SuppressWarnings({"unchecked", "cast"}) 064 public GenericConstructorDecl fullCopy() { 065 066 GenericConstructorDecl tree = (GenericConstructorDecl) copy(); 067 if (children != null) { 068 for (int i = 0; i < children.length; ++i) { 069 070 ASTNode child = (ASTNode) children[i]; 071 if(child != null) { 072 child = child.fullCopy(); 073 tree.setChild(child, i); 074 } 075 } 076 } 077 return tree; 078 079 } /** 080 * @ast method 081 * @aspect GenericMethodsPrettyPrint 082 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericMethods.jrag:258 083 */ 084 public void toString(StringBuffer s) { 085 s.append(indent()); 086 getModifiers().toString(s); 087 088 s.append(" <"); 089 for(int i = 0; i < getNumTypeParameter(); i++) { 090 if(i != 0) s.append(", "); 091 original().getTypeParameter(i).toString(s); 092 } 093 s.append("> "); 094 095 s.append(getID() + "("); 096 if(getNumParameter() > 0) { 097 getParameter(0).toString(s); 098 for(int i = 1; i < getNumParameter(); i++) { 099 s.append(", "); 100 getParameter(i).toString(s); 101 } 102 } 103 s.append(")"); 104 if(getNumException() > 0) { 105 s.append(" throws "); 106 getException(0).toString(s); 107 for(int i = 1; i < getNumException(); i++) { 108 s.append(", "); 109 getException(i).toString(s); 110 } 111 } 112 113 s.append(" {"); 114 if(hasConstructorInvocation()) { 115 s.append(indent()); 116 getConstructorInvocation().toString(s); 117 } 118 for(int i = 0; i < getBlock().getNumStmt(); i++) { 119 s.append(indent()); 120 getBlock().getStmt(i).toString(s); 121 } 122 s.append(indent()); 123 s.append("}"); 124 } 125 /** 126 * @ast method 127 * @aspect LookupParTypeDecl 128 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Generics.jrag:1280 129 */ 130 131 public GenericConstructorDecl original; 132 /** 133 * @ast method 134 * 135 */ 136 public GenericConstructorDecl() { 137 super(); 138 139 140 } 141 /** 142 * Initializes the child array to the correct size. 143 * Initializes List and Opt nta children. 144 * @apilevel internal 145 * @ast method 146 * @ast method 147 * 148 */ 149 public void init$Children() { 150 children = new ASTNode[6]; 151 setChild(new List(), 1); 152 setChild(new List(), 2); 153 setChild(new Opt(), 3); 154 setChild(new List(), 5); 155 } 156 /** 157 * @ast method 158 * 159 */ 160 public GenericConstructorDecl(Modifiers p0, String p1, List<ParameterDeclaration> p2, List<Access> p3, Opt<Stmt> p4, Block p5, List<TypeVariable> p6) { 161 setChild(p0, 0); 162 setID(p1); 163 setChild(p2, 1); 164 setChild(p3, 2); 165 setChild(p4, 3); 166 setChild(p5, 4); 167 setChild(p6, 5); 168 } 169 /** 170 * @ast method 171 * 172 */ 173 public GenericConstructorDecl(Modifiers p0, beaver.Symbol p1, List<ParameterDeclaration> p2, List<Access> p3, Opt<Stmt> p4, Block p5, List<TypeVariable> p6) { 174 setChild(p0, 0); 175 setID(p1); 176 setChild(p2, 1); 177 setChild(p3, 2); 178 setChild(p4, 3); 179 setChild(p5, 4); 180 setChild(p6, 5); 181 } 182 /** 183 * @apilevel low-level 184 * @ast method 185 * 186 */ 187 protected int numChildren() { 188 return 6; 189 } 190 /** 191 * @apilevel internal 192 * @ast method 193 * 194 */ 195 public boolean mayHaveRewrite() { 196 return true; 197 } 198 /** 199 * Replaces the Modifiers child. 200 * @param node The new node to replace the Modifiers child. 201 * @apilevel high-level 202 * @ast method 203 * 204 */ 205 public void setModifiers(Modifiers node) { 206 setChild(node, 0); 207 } 208 /** 209 * Retrieves the Modifiers child. 210 * @return The current node used as the Modifiers child. 211 * @apilevel high-level 212 * @ast method 213 * 214 */ 215 public Modifiers getModifiers() { 216 return (Modifiers)getChild(0); 217 } 218 /** 219 * Retrieves the Modifiers child. 220 * <p><em>This method does not invoke AST transformations.</em></p> 221 * @return The current node used as the Modifiers child. 222 * @apilevel low-level 223 * @ast method 224 * 225 */ 226 public Modifiers getModifiersNoTransform() { 227 return (Modifiers)getChildNoTransform(0); 228 } 229 /** 230 * Replaces the lexeme ID. 231 * @param value The new value for the lexeme ID. 232 * @apilevel high-level 233 * @ast method 234 * 235 */ 236 public void setID(String value) { 237 tokenString_ID = value; 238 } 239 /** 240 * JastAdd-internal setter for lexeme ID using the Beaver parser. 241 * @apilevel internal 242 * @ast method 243 * 244 */ 245 public void setID(beaver.Symbol symbol) { 246 if(symbol.value != null && !(symbol.value instanceof String)) 247 throw new UnsupportedOperationException("setID is only valid for String lexemes"); 248 tokenString_ID = (String)symbol.value; 249 IDstart = symbol.getStart(); 250 IDend = symbol.getEnd(); 251 } 252 /** 253 * Retrieves the value for the lexeme ID. 254 * @return The value for the lexeme ID. 255 * @apilevel high-level 256 * @ast method 257 * 258 */ 259 public String getID() { 260 return tokenString_ID != null ? tokenString_ID : ""; 261 } 262 /** 263 * Replaces the Parameter list. 264 * @param list The new list node to be used as the Parameter list. 265 * @apilevel high-level 266 * @ast method 267 * 268 */ 269 public void setParameterList(List<ParameterDeclaration> list) { 270 setChild(list, 1); 271 } 272 /** 273 * Retrieves the number of children in the Parameter list. 274 * @return Number of children in the Parameter list. 275 * @apilevel high-level 276 * @ast method 277 * 278 */ 279 public int getNumParameter() { 280 return getParameterList().getNumChild(); 281 } 282 /** 283 * Retrieves the number of children in the Parameter list. 284 * Calling this method will not trigger rewrites.. 285 * @return Number of children in the Parameter list. 286 * @apilevel low-level 287 * @ast method 288 * 289 */ 290 public int getNumParameterNoTransform() { 291 return getParameterListNoTransform().getNumChildNoTransform(); 292 } 293 /** 294 * Retrieves the element at index {@code i} in the Parameter list.. 295 * @param i Index of the element to return. 296 * @return The element at position {@code i} in the Parameter list. 297 * @apilevel high-level 298 * @ast method 299 * 300 */ 301 @SuppressWarnings({"unchecked", "cast"}) 302 public ParameterDeclaration getParameter(int i) { 303 return (ParameterDeclaration)getParameterList().getChild(i); 304 } 305 /** 306 * Append an element to the Parameter list. 307 * @param node The element to append to the Parameter list. 308 * @apilevel high-level 309 * @ast method 310 * 311 */ 312 public void addParameter(ParameterDeclaration node) { 313 List<ParameterDeclaration> list = (parent == null || state == null) ? getParameterListNoTransform() : getParameterList(); 314 list.addChild(node); 315 } 316 /** 317 * @apilevel low-level 318 * @ast method 319 * 320 */ 321 public void addParameterNoTransform(ParameterDeclaration node) { 322 List<ParameterDeclaration> list = getParameterListNoTransform(); 323 list.addChild(node); 324 } 325 /** 326 * Replaces the Parameter list element at index {@code i} with the new node {@code node}. 327 * @param node The new node to replace the old list element. 328 * @param i The list index of the node to be replaced. 329 * @apilevel high-level 330 * @ast method 331 * 332 */ 333 public void setParameter(ParameterDeclaration node, int i) { 334 List<ParameterDeclaration> list = getParameterList(); 335 list.setChild(node, i); 336 } 337 /** 338 * Retrieves the Parameter list. 339 * @return The node representing the Parameter list. 340 * @apilevel high-level 341 * @ast method 342 * 343 */ 344 public List<ParameterDeclaration> getParameters() { 345 return getParameterList(); 346 } 347 /** 348 * Retrieves the Parameter list. 349 * <p><em>This method does not invoke AST transformations.</em></p> 350 * @return The node representing the Parameter list. 351 * @apilevel low-level 352 * @ast method 353 * 354 */ 355 public List<ParameterDeclaration> getParametersNoTransform() { 356 return getParameterListNoTransform(); 357 } 358 /** 359 * Retrieves the Parameter list. 360 * @return The node representing the Parameter list. 361 * @apilevel high-level 362 * @ast method 363 * 364 */ 365 @SuppressWarnings({"unchecked", "cast"}) 366 public List<ParameterDeclaration> getParameterList() { 367 List<ParameterDeclaration> list = (List<ParameterDeclaration>)getChild(1); 368 list.getNumChild(); 369 return list; 370 } 371 /** 372 * Retrieves the Parameter list. 373 * <p><em>This method does not invoke AST transformations.</em></p> 374 * @return The node representing the Parameter list. 375 * @apilevel low-level 376 * @ast method 377 * 378 */ 379 @SuppressWarnings({"unchecked", "cast"}) 380 public List<ParameterDeclaration> getParameterListNoTransform() { 381 return (List<ParameterDeclaration>)getChildNoTransform(1); 382 } 383 /** 384 * Replaces the Exception list. 385 * @param list The new list node to be used as the Exception list. 386 * @apilevel high-level 387 * @ast method 388 * 389 */ 390 public void setExceptionList(List<Access> list) { 391 setChild(list, 2); 392 } 393 /** 394 * Retrieves the number of children in the Exception list. 395 * @return Number of children in the Exception list. 396 * @apilevel high-level 397 * @ast method 398 * 399 */ 400 public int getNumException() { 401 return getExceptionList().getNumChild(); 402 } 403 /** 404 * Retrieves the number of children in the Exception list. 405 * Calling this method will not trigger rewrites.. 406 * @return Number of children in the Exception list. 407 * @apilevel low-level 408 * @ast method 409 * 410 */ 411 public int getNumExceptionNoTransform() { 412 return getExceptionListNoTransform().getNumChildNoTransform(); 413 } 414 /** 415 * Retrieves the element at index {@code i} in the Exception list.. 416 * @param i Index of the element to return. 417 * @return The element at position {@code i} in the Exception list. 418 * @apilevel high-level 419 * @ast method 420 * 421 */ 422 @SuppressWarnings({"unchecked", "cast"}) 423 public Access getException(int i) { 424 return (Access)getExceptionList().getChild(i); 425 } 426 /** 427 * Append an element to the Exception list. 428 * @param node The element to append to the Exception list. 429 * @apilevel high-level 430 * @ast method 431 * 432 */ 433 public void addException(Access node) { 434 List<Access> list = (parent == null || state == null) ? getExceptionListNoTransform() : getExceptionList(); 435 list.addChild(node); 436 } 437 /** 438 * @apilevel low-level 439 * @ast method 440 * 441 */ 442 public void addExceptionNoTransform(Access node) { 443 List<Access> list = getExceptionListNoTransform(); 444 list.addChild(node); 445 } 446 /** 447 * Replaces the Exception list element at index {@code i} with the new node {@code node}. 448 * @param node The new node to replace the old list element. 449 * @param i The list index of the node to be replaced. 450 * @apilevel high-level 451 * @ast method 452 * 453 */ 454 public void setException(Access node, int i) { 455 List<Access> list = getExceptionList(); 456 list.setChild(node, i); 457 } 458 /** 459 * Retrieves the Exception list. 460 * @return The node representing the Exception list. 461 * @apilevel high-level 462 * @ast method 463 * 464 */ 465 public List<Access> getExceptions() { 466 return getExceptionList(); 467 } 468 /** 469 * Retrieves the Exception list. 470 * <p><em>This method does not invoke AST transformations.</em></p> 471 * @return The node representing the Exception list. 472 * @apilevel low-level 473 * @ast method 474 * 475 */ 476 public List<Access> getExceptionsNoTransform() { 477 return getExceptionListNoTransform(); 478 } 479 /** 480 * Retrieves the Exception list. 481 * @return The node representing the Exception list. 482 * @apilevel high-level 483 * @ast method 484 * 485 */ 486 @SuppressWarnings({"unchecked", "cast"}) 487 public List<Access> getExceptionList() { 488 List<Access> list = (List<Access>)getChild(2); 489 list.getNumChild(); 490 return list; 491 } 492 /** 493 * Retrieves the Exception list. 494 * <p><em>This method does not invoke AST transformations.</em></p> 495 * @return The node representing the Exception list. 496 * @apilevel low-level 497 * @ast method 498 * 499 */ 500 @SuppressWarnings({"unchecked", "cast"}) 501 public List<Access> getExceptionListNoTransform() { 502 return (List<Access>)getChildNoTransform(2); 503 } 504 /** 505 * Replaces the optional node for the ConstructorInvocation child. This is the {@code Opt} node containing the child ConstructorInvocation, not the actual child! 506 * @param opt The new node to be used as the optional node for the ConstructorInvocation child. 507 * @apilevel low-level 508 * @ast method 509 * 510 */ 511 public void setConstructorInvocationOpt(Opt<Stmt> opt) { 512 setChild(opt, 3); 513 } 514 /** 515 * Check whether the optional ConstructorInvocation child exists. 516 * @return {@code true} if the optional ConstructorInvocation child exists, {@code false} if it does not. 517 * @apilevel high-level 518 * @ast method 519 * 520 */ 521 public boolean hasConstructorInvocation() { 522 return getConstructorInvocationOpt().getNumChild() != 0; 523 } 524 /** 525 * Retrieves the (optional) ConstructorInvocation child. 526 * @return The ConstructorInvocation child, if it exists. Returns {@code null} otherwise. 527 * @apilevel low-level 528 * @ast method 529 * 530 */ 531 @SuppressWarnings({"unchecked", "cast"}) 532 public Stmt getConstructorInvocation() { 533 return (Stmt)getConstructorInvocationOpt().getChild(0); 534 } 535 /** 536 * Replaces the (optional) ConstructorInvocation child. 537 * @param node The new node to be used as the ConstructorInvocation child. 538 * @apilevel high-level 539 * @ast method 540 * 541 */ 542 public void setConstructorInvocation(Stmt node) { 543 getConstructorInvocationOpt().setChild(node, 0); 544 } 545 /** 546 * @apilevel low-level 547 * @ast method 548 * 549 */ 550 @SuppressWarnings({"unchecked", "cast"}) 551 public Opt<Stmt> getConstructorInvocationOpt() { 552 return (Opt<Stmt>)getChild(3); 553 } 554 /** 555 * Retrieves the optional node for child ConstructorInvocation. This is the {@code Opt} node containing the child ConstructorInvocation, not the actual child! 556 * <p><em>This method does not invoke AST transformations.</em></p> 557 * @return The optional node for child ConstructorInvocation. 558 * @apilevel low-level 559 * @ast method 560 * 561 */ 562 @SuppressWarnings({"unchecked", "cast"}) 563 public Opt<Stmt> getConstructorInvocationOptNoTransform() { 564 return (Opt<Stmt>)getChildNoTransform(3); 565 } 566 /** 567 * Replaces the Block child. 568 * @param node The new node to replace the Block child. 569 * @apilevel high-level 570 * @ast method 571 * 572 */ 573 public void setBlock(Block node) { 574 setChild(node, 4); 575 } 576 /** 577 * Retrieves the Block child. 578 * @return The current node used as the Block child. 579 * @apilevel high-level 580 * @ast method 581 * 582 */ 583 public Block getBlock() { 584 return (Block)getChild(4); 585 } 586 /** 587 * Retrieves the Block child. 588 * <p><em>This method does not invoke AST transformations.</em></p> 589 * @return The current node used as the Block child. 590 * @apilevel low-level 591 * @ast method 592 * 593 */ 594 public Block getBlockNoTransform() { 595 return (Block)getChildNoTransform(4); 596 } 597 /** 598 * Replaces the TypeParameter list. 599 * @param list The new list node to be used as the TypeParameter list. 600 * @apilevel high-level 601 * @ast method 602 * 603 */ 604 public void setTypeParameterList(List<TypeVariable> list) { 605 setChild(list, 5); 606 } 607 /** 608 * Retrieves the number of children in the TypeParameter list. 609 * @return Number of children in the TypeParameter list. 610 * @apilevel high-level 611 * @ast method 612 * 613 */ 614 public int getNumTypeParameter() { 615 return getTypeParameterList().getNumChild(); 616 } 617 /** 618 * Retrieves the number of children in the TypeParameter list. 619 * Calling this method will not trigger rewrites.. 620 * @return Number of children in the TypeParameter list. 621 * @apilevel low-level 622 * @ast method 623 * 624 */ 625 public int getNumTypeParameterNoTransform() { 626 return getTypeParameterListNoTransform().getNumChildNoTransform(); 627 } 628 /** 629 * Retrieves the element at index {@code i} in the TypeParameter list.. 630 * @param i Index of the element to return. 631 * @return The element at position {@code i} in the TypeParameter list. 632 * @apilevel high-level 633 * @ast method 634 * 635 */ 636 @SuppressWarnings({"unchecked", "cast"}) 637 public TypeVariable getTypeParameter(int i) { 638 return (TypeVariable)getTypeParameterList().getChild(i); 639 } 640 /** 641 * Append an element to the TypeParameter list. 642 * @param node The element to append to the TypeParameter list. 643 * @apilevel high-level 644 * @ast method 645 * 646 */ 647 public void addTypeParameter(TypeVariable node) { 648 List<TypeVariable> list = (parent == null || state == null) ? getTypeParameterListNoTransform() : getTypeParameterList(); 649 list.addChild(node); 650 } 651 /** 652 * @apilevel low-level 653 * @ast method 654 * 655 */ 656 public void addTypeParameterNoTransform(TypeVariable node) { 657 List<TypeVariable> list = getTypeParameterListNoTransform(); 658 list.addChild(node); 659 } 660 /** 661 * Replaces the TypeParameter list element at index {@code i} with the new node {@code node}. 662 * @param node The new node to replace the old list element. 663 * @param i The list index of the node to be replaced. 664 * @apilevel high-level 665 * @ast method 666 * 667 */ 668 public void setTypeParameter(TypeVariable node, int i) { 669 List<TypeVariable> list = getTypeParameterList(); 670 list.setChild(node, i); 671 } 672 /** 673 * Retrieves the TypeParameter list. 674 * @return The node representing the TypeParameter list. 675 * @apilevel high-level 676 * @ast method 677 * 678 */ 679 public List<TypeVariable> getTypeParameters() { 680 return getTypeParameterList(); 681 } 682 /** 683 * Retrieves the TypeParameter list. 684 * <p><em>This method does not invoke AST transformations.</em></p> 685 * @return The node representing the TypeParameter list. 686 * @apilevel low-level 687 * @ast method 688 * 689 */ 690 public List<TypeVariable> getTypeParametersNoTransform() { 691 return getTypeParameterListNoTransform(); 692 } 693 /** 694 * Retrieves the TypeParameter list. 695 * @return The node representing the TypeParameter list. 696 * @apilevel high-level 697 * @ast method 698 * 699 */ 700 @SuppressWarnings({"unchecked", "cast"}) 701 public List<TypeVariable> getTypeParameterList() { 702 List<TypeVariable> list = (List<TypeVariable>)getChild(5); 703 list.getNumChild(); 704 return list; 705 } 706 /** 707 * Retrieves the TypeParameter list. 708 * <p><em>This method does not invoke AST transformations.</em></p> 709 * @return The node representing the TypeParameter list. 710 * @apilevel low-level 711 * @ast method 712 * 713 */ 714 @SuppressWarnings({"unchecked", "cast"}) 715 public List<TypeVariable> getTypeParameterListNoTransform() { 716 return (List<TypeVariable>)getChildNoTransform(5); 717 } 718 /** 719 * @attribute syn 720 * @aspect GenericMethodsNameAnalysis 721 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericMethods.jrag:163 722 */ 723 public SimpleSet localLookupType(String name) { 724 ASTNode$State state = state(); 725 try { 726 for(int i = 0; i < getNumTypeParameter(); i++) { 727 if(original().getTypeParameter(i).name().equals(name)) 728 return SimpleSet.emptySet.add(original().getTypeParameter(i)); 729 } 730 return SimpleSet.emptySet; 731 } 732 finally { 733 } 734 } 735 /** 736 * @attribute syn 737 * @aspect LookupParTypeDecl 738 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Generics.jrag:1279 739 */ 740 public GenericConstructorDecl original() { 741 ASTNode$State state = state(); 742 try { return original != null ? original : this; } 743 finally { 744 } 745 } 746 /** 747 * @attribute syn 748 * @aspect GenericsCodegen 749 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Backend/GenericsCodegen.jrag:373 750 */ 751 public boolean needsSignatureAttribute() { 752 ASTNode$State state = state(); 753 try { return true; } 754 finally { 755 } 756 } 757 /** 758 * @attribute inh 759 * @aspect GenericMethodsNameAnalysis 760 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericMethods.jrag:162 761 */ 762 @SuppressWarnings({"unchecked", "cast"}) 763 public SimpleSet lookupType(String name) { 764 ASTNode$State state = state(); 765 SimpleSet lookupType_String_value = getParent().Define_SimpleSet_lookupType(this, null, name); 766 return lookupType_String_value; 767 } 768 /** 769 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericMethods.jrag:160 770 * @apilevel internal 771 */ 772 public NameType Define_NameType_nameType(ASTNode caller, ASTNode child) { 773 if(caller == getTypeParameterListNoTransform()) { 774 int childIndex = caller.getIndexOfChild(child); 775 return NameType.TYPE_NAME; 776 } 777 else { return super.Define_NameType_nameType(caller, child); 778 } 779 } 780 /** 781 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericMethods.jrag:170 782 * @apilevel internal 783 */ 784 public SimpleSet Define_SimpleSet_lookupType(ASTNode caller, ASTNode child, String name) { 785 { 786 int childIndex = this.getIndexOfChild(caller); 787 return localLookupType(name).isEmpty() ? lookupType(name) : localLookupType(name); 788 } 789 } 790 /** 791 * @apilevel internal 792 */ 793 public ASTNode rewriteTo() { 794 return super.rewriteTo(); 795 } 796 }