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     * @production ConstructorAccess : {@link Access} ::= <span class="component">&lt;ID:String&gt;</span> <span class="component">Arg:{@link Expr}*</span>;
015     * @ast node
016     * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/java.ast:21
017     */
018    public class ConstructorAccess extends Access implements Cloneable {
019      /**
020       * @apilevel low-level
021       */
022      public void flushCache() {
023      }
024      /**
025       * @apilevel internal
026       */
027      public void flushCollectionCache() {
028      }
029      /**
030       * @apilevel internal
031       */
032      @SuppressWarnings({"unchecked", "cast"})
033      public ConstructorAccess clone() throws CloneNotSupportedException {
034        ConstructorAccess node = (ConstructorAccess)super.clone();
035        node.decls_computed = false;
036        node.decls_value = null;
037        node.decl_computed = false;
038        node.decl_value = null;
039        node.type_computed = false;
040        node.type_value = null;
041        node.in$Circle(false);
042        node.is$Final(false);
043        return node;
044      }
045    /**
046     * @apilevel internal
047     */
048      @SuppressWarnings({"unchecked", "cast"})
049    public ConstructorAccess copy() {
050      
051      try {
052        ConstructorAccess node = (ConstructorAccess) clone();
053        node.parent = null;
054        if(children != null)
055          node.children = (ASTNode[]) children.clone();
056        
057        return node;
058      } catch (CloneNotSupportedException e) {
059        throw new Error("Error: clone not supported for " + getClass().getName());
060      }
061      
062    }/**
063     * Create a deep copy of the AST subtree at this node.
064     * The copy is dangling, i.e. has no parent.
065     * @return dangling copy of the subtree at this node
066     * @apilevel low-level
067     */
068      @SuppressWarnings({"unchecked", "cast"})
069    public ConstructorAccess fullCopy() {
070      
071      ConstructorAccess tree = (ConstructorAccess) copy();
072      if (children != null) {
073        for (int i = 0; i < children.length; ++i) {
074          
075          ASTNode child = (ASTNode) children[i];
076          if(child != null) {
077            child = child.fullCopy();
078            tree.setChild(child, i);
079          }
080        }
081      }
082      return tree;
083      
084    }  /**
085       * @ast method 
086       * @aspect ExceptionHandling
087       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ExceptionHandling.jrag:111
088       */
089      public void exceptionHandling() {
090        for(int i = 0; i < decl().getNumException(); i++) {
091          TypeDecl exceptionType = decl().getException(i).type();
092          if(!handlesException(exceptionType))
093            error("" + this + " may throw uncaught exception " + exceptionType.fullName());
094        }
095      }
096      /**
097       * @ast method 
098       * @aspect ExceptionHandling
099       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ExceptionHandling.jrag:272
100       */
101      protected boolean reachedException(TypeDecl catchType) {
102        for(int i = 0; i < decl().getNumException(); i++) {
103          TypeDecl exceptionType = decl().getException(i).type();
104          if(catchType.mayCatch(exceptionType))
105            return true;
106        }
107        return super.reachedException(catchType);
108      }
109      /**
110       * @ast method 
111       * @aspect NameCheck
112       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/NameCheck.jrag:117
113       */
114      public void nameCheck() {
115        super.nameCheck();
116        if(decls().isEmpty())
117          error("no constructor named " + this);
118        if(decls().size() > 1 && validArgs()) {
119          error("several most specific constructors for " + this);
120          for(Iterator iter = decls().iterator(); iter.hasNext(); ) {
121            error("         " + ((ConstructorDecl)iter.next()).signature());
122          }
123        }
124      }
125      /**
126       * @ast method 
127       * @aspect PrettyPrint
128       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/PrettyPrint.jadd:470
129       */
130      public void toString(StringBuffer s) {
131        s.append(name());
132        s.append("(");
133        if(getNumArg() > 0) {
134          getArg(0).toString(s);
135          for(int i = 1; i < getNumArg(); i++) {
136            s.append(", ");
137            getArg(i).toString(s);
138          }
139        }
140        s.append(")");
141      }
142      /**
143       * @ast method 
144       * @aspect CreateBCode
145       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CreateBCode.jrag:602
146       */
147      public void createBCode(CodeGeneration gen) {
148        ConstructorDecl c = decl();
149        int index = 0;
150        // this
151        gen.emitLoadReference(index++);
152        // this$0
153        if(c.needsEnclosing())
154          gen.emitLoadReference(index++);
155        if(c.needsSuperEnclosing())
156          gen.emitLoadReference(index++);
157    
158        // args
159        for (int i = 0; i < getNumArg(); ++i) {
160          getArg(i).createBCode(gen);
161          getArg(i).type().emitCastTo(gen, decl().getParameter(i).type()); // MethodInvocationConversion
162        }
163        if(decl().isPrivate() && decl().hostType() != hostType()) {
164          gen.emit(Bytecode.ACONST_NULL);
165          decl().createAccessor().emitInvokeConstructor(gen);
166        }
167        else {
168          decl().emitInvokeConstructor(gen);
169        }
170      }
171      /**
172       * @ast method 
173       * @aspect InnerClasses
174       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/InnerClasses.jrag:469
175       */
176      
177    
178      // add val$name as arguments to the constructor
179      protected boolean addEnclosingVariables = true;
180      /**
181       * @ast method 
182       * @aspect InnerClasses
183       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/InnerClasses.jrag:470
184       */
185      public void addEnclosingVariables() {
186        if(!addEnclosingVariables) return;
187        addEnclosingVariables = false;
188        decl().addEnclosingVariables();
189        for(Iterator iter = decl().hostType().enclosingVariables().iterator(); iter.hasNext(); ) {
190          Variable v = (Variable)iter.next();
191          getArgList().add(new VarAccess("val$" + v.name()));
192        }
193      }
194      /**
195       * @ast method 
196       * @aspect Transformations
197       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/Transformations.jrag:138
198       */
199      public void refined_Transformations_ConstructorAccess_transformation() {
200        // this$val
201        addEnclosingVariables();
202        // touch accessorIndex go force creation of private constructorAccessor
203        if(decl().isPrivate() && decl().hostType() != hostType()) {
204          decl().createAccessor();
205        }
206        super.transformation();
207      }
208      /**
209       * @ast method 
210       * @aspect Annotations
211       * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Annotations.jrag:355
212       */
213      public void checkModifiers() {
214        if(decl().isDeprecated() &&
215          !withinDeprecatedAnnotation() &&
216          hostType().topLevelType() != decl().hostType().topLevelType() &&
217          !withinSuppressWarnings("deprecation"))
218            warning(decl().signature() + " in " + decl().hostType().typeName() + " has been deprecated");
219      }
220      /**
221       * @ast method 
222       * @aspect Enums
223       * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Enums.jrag:171
224       */
225      protected void transformEnumConstructors() {
226        super.transformEnumConstructors();
227        getArgList().insertChild(new VarAccess("@p0"),0);
228        getArgList().insertChild(new VarAccess("@p1"),1);
229      }
230      /**
231       * @ast method 
232       * 
233       */
234      public ConstructorAccess() {
235        super();
236    
237    
238      }
239      /**
240       * Initializes the child array to the correct size.
241       * Initializes List and Opt nta children.
242       * @apilevel internal
243       * @ast method
244       * @ast method 
245       * 
246       */
247      public void init$Children() {
248        children = new ASTNode[1];
249        setChild(new List(), 0);
250      }
251      /**
252       * @ast method 
253       * 
254       */
255      public ConstructorAccess(String p0, List<Expr> p1) {
256        setID(p0);
257        setChild(p1, 0);
258      }
259      /**
260       * @ast method 
261       * 
262       */
263      public ConstructorAccess(beaver.Symbol p0, List<Expr> p1) {
264        setID(p0);
265        setChild(p1, 0);
266      }
267      /**
268       * @apilevel low-level
269       * @ast method 
270       * 
271       */
272      protected int numChildren() {
273        return 1;
274      }
275      /**
276       * @apilevel internal
277       * @ast method 
278       * 
279       */
280      public boolean mayHaveRewrite() {
281        return false;
282      }
283      /**
284       * Replaces the lexeme ID.
285       * @param value The new value for the lexeme ID.
286       * @apilevel high-level
287       * @ast method 
288       * 
289       */
290      public void setID(String value) {
291        tokenString_ID = value;
292      }
293      /**
294       * @apilevel internal
295       * @ast method 
296       * 
297       */
298      
299      /**
300       * @apilevel internal
301       */
302      protected String tokenString_ID;
303      /**
304       * @ast method 
305       * 
306       */
307      
308      public int IDstart;
309      /**
310       * @ast method 
311       * 
312       */
313      
314      public int IDend;
315      /**
316       * JastAdd-internal setter for lexeme ID using the Beaver parser.
317       * @apilevel internal
318       * @ast method 
319       * 
320       */
321      public void setID(beaver.Symbol symbol) {
322        if(symbol.value != null && !(symbol.value instanceof String))
323          throw new UnsupportedOperationException("setID is only valid for String lexemes");
324        tokenString_ID = (String)symbol.value;
325        IDstart = symbol.getStart();
326        IDend = symbol.getEnd();
327      }
328      /**
329       * Retrieves the value for the lexeme ID.
330       * @return The value for the lexeme ID.
331       * @apilevel high-level
332       * @ast method 
333       * 
334       */
335      public String getID() {
336        return tokenString_ID != null ? tokenString_ID : "";
337      }
338      /**
339       * Replaces the Arg list.
340       * @param list The new list node to be used as the Arg list.
341       * @apilevel high-level
342       * @ast method 
343       * 
344       */
345      public void setArgList(List<Expr> list) {
346        setChild(list, 0);
347      }
348      /**
349       * Retrieves the number of children in the Arg list.
350       * @return Number of children in the Arg list.
351       * @apilevel high-level
352       * @ast method 
353       * 
354       */
355      public int getNumArg() {
356        return getArgList().getNumChild();
357      }
358      /**
359       * Retrieves the number of children in the Arg list.
360       * Calling this method will not trigger rewrites..
361       * @return Number of children in the Arg list.
362       * @apilevel low-level
363       * @ast method 
364       * 
365       */
366      public int getNumArgNoTransform() {
367        return getArgListNoTransform().getNumChildNoTransform();
368      }
369      /**
370       * Retrieves the element at index {@code i} in the Arg list..
371       * @param i Index of the element to return.
372       * @return The element at position {@code i} in the Arg list.
373       * @apilevel high-level
374       * @ast method 
375       * 
376       */
377      @SuppressWarnings({"unchecked", "cast"})
378      public Expr getArg(int i) {
379        return (Expr)getArgList().getChild(i);
380      }
381      /**
382       * Append an element to the Arg list.
383       * @param node The element to append to the Arg list.
384       * @apilevel high-level
385       * @ast method 
386       * 
387       */
388      public void addArg(Expr node) {
389        List<Expr> list = (parent == null || state == null) ? getArgListNoTransform() : getArgList();
390        list.addChild(node);
391      }
392      /**
393       * @apilevel low-level
394       * @ast method 
395       * 
396       */
397      public void addArgNoTransform(Expr node) {
398        List<Expr> list = getArgListNoTransform();
399        list.addChild(node);
400      }
401      /**
402       * Replaces the Arg list element at index {@code i} with the new node {@code node}.
403       * @param node The new node to replace the old list element.
404       * @param i The list index of the node to be replaced.
405       * @apilevel high-level
406       * @ast method 
407       * 
408       */
409      public void setArg(Expr node, int i) {
410        List<Expr> list = getArgList();
411        list.setChild(node, i);
412      }
413      /**
414       * Retrieves the Arg list.
415       * @return The node representing the Arg list.
416       * @apilevel high-level
417       * @ast method 
418       * 
419       */
420      public List<Expr> getArgs() {
421        return getArgList();
422      }
423      /**
424       * Retrieves the Arg list.
425       * <p><em>This method does not invoke AST transformations.</em></p>
426       * @return The node representing the Arg list.
427       * @apilevel low-level
428       * @ast method 
429       * 
430       */
431      public List<Expr> getArgsNoTransform() {
432        return getArgListNoTransform();
433      }
434      /**
435       * Retrieves the Arg list.
436       * @return The node representing the Arg list.
437       * @apilevel high-level
438       * @ast method 
439       * 
440       */
441      @SuppressWarnings({"unchecked", "cast"})
442      public List<Expr> getArgList() {
443        List<Expr> list = (List<Expr>)getChild(0);
444        list.getNumChild();
445        return list;
446      }
447      /**
448       * Retrieves the Arg list.
449       * <p><em>This method does not invoke AST transformations.</em></p>
450       * @return The node representing the Arg list.
451       * @apilevel low-level
452       * @ast method 
453       * 
454       */
455      @SuppressWarnings({"unchecked", "cast"})
456      public List<Expr> getArgListNoTransform() {
457        return (List<Expr>)getChildNoTransform(0);
458      }
459      /**
460       * @ast method 
461       * @aspect VariableArityParametersCodegen
462       * @declaredat /home/jesper/svn/JastAddJ/Java1.5Backend/VariableArityParametersCodegen.jrag:58
463       */
464        public void transformation() {
465        if(decl().isVariableArity() && !invokesVariableArityAsArray()) {
466          // arguments to normal parameters
467          List list = new List();
468          for(int i = 0; i < decl().getNumParameter() - 1; i++)
469            list.add(getArg(i).fullCopy());
470          // arguments to variable arity parameters
471          List last = new List();
472          for(int i = decl().getNumParameter() - 1; i < getNumArg(); i++)
473            last.add(getArg(i).fullCopy());
474          // build an array holding arguments
475          Access typeAccess = decl().lastParameter().type().elementType().createQualifiedAccess();
476          for(int i = 0; i < decl().lastParameter().type().dimension(); i++)
477            typeAccess = new ArrayTypeAccess(typeAccess);
478          list.add(new ArrayCreationExpr(typeAccess, new Opt(new ArrayInit(last))));
479          // replace argument list with augemented argument list
480          setArgList(list);
481        }
482        refined_Transformations_ConstructorAccess_transformation();
483      }
484      /**
485       * @attribute syn
486       * @aspect DA
487       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:235
488       */
489      public boolean isDAafter(Variable v) {
490        ASTNode$State state = state();
491        try {  return decl().isDAafter(v);  }
492        finally {
493        }
494      }
495      /**
496       * @attribute syn
497       * @aspect DU
498       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:694
499       */
500      public boolean isDUafter(Variable v) {
501        ASTNode$State state = state();
502        try {  return decl().isDUafter(v);  }
503        finally {
504        }
505      }
506      /**
507       * @attribute syn
508       * @aspect ConstructScope
509       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupConstructor.jrag:50
510       */
511      public boolean applicableAndAccessible(ConstructorDecl decl) {
512        ASTNode$State state = state();
513        try {  return decl.applicable(getArgList()) && decl.accessibleFrom(hostType());  }
514        finally {
515        }
516      }
517      /**
518       * @apilevel internal
519       */
520      protected boolean decls_computed = false;
521      /**
522       * @apilevel internal
523       */
524      protected SimpleSet decls_value;
525      /**
526       * @attribute syn
527       * @aspect MethodSignature15
528       * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/MethodSignature.jrag:74
529       */
530      @SuppressWarnings({"unchecked", "cast"})
531      public SimpleSet decls() {
532        if(decls_computed) {
533          return decls_value;
534        }
535          ASTNode$State state = state();
536      int num = state.boundariesCrossed;
537      boolean isFinal = this.is$Final();
538        decls_value = decls_compute();
539      if(isFinal && num == state().boundariesCrossed){ decls_computed = true; }
540            return decls_value;
541      }
542      /**
543       * @apilevel internal
544       */
545      private SimpleSet decls_compute() {
546        return chooseConstructor(lookupConstructor(), getArgList());
547      }
548      /**
549       * @apilevel internal
550       */
551      protected boolean decl_computed = false;
552      /**
553       * @apilevel internal
554       */
555      protected ConstructorDecl decl_value;
556      /**
557       * @attribute syn
558       * @aspect ConstructScope
559       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupConstructor.jrag:65
560       */
561      @SuppressWarnings({"unchecked", "cast"})
562      public ConstructorDecl decl() {
563        if(decl_computed) {
564          return decl_value;
565        }
566          ASTNode$State state = state();
567      int num = state.boundariesCrossed;
568      boolean isFinal = this.is$Final();
569        decl_value = decl_compute();
570      if(isFinal && num == state().boundariesCrossed){ decl_computed = true; }
571            return decl_value;
572      }
573      /**
574       * @apilevel internal
575       */
576      private ConstructorDecl decl_compute() {
577        SimpleSet decls = decls();
578        if(decls.size() == 1)
579          return (ConstructorDecl)decls.iterator().next();
580        return unknownConstructor();
581      }
582      /**
583       * @attribute syn
584       * @aspect NameCheck
585       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/NameCheck.jrag:129
586       */
587      public boolean validArgs() {
588        ASTNode$State state = state();
589        try {
590        for(int i = 0; i < getNumArg(); i++)
591          if(getArg(i).type().isUnknown())
592            return false;
593        return true;
594      }
595        finally {
596        }
597      }
598      /**
599       * @attribute syn
600       * @aspect Names
601       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/QualifiedNames.jrag:19
602       */
603      public String name() {
604        ASTNode$State state = state();
605        try {  return "this";  }
606        finally {
607        }
608      }
609      /**
610       * @attribute syn
611       * @aspect SyntacticClassification
612       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/SyntacticClassification.jrag:56
613       */
614      public NameType predNameType() {
615        ASTNode$State state = state();
616        try {  return NameType.AMBIGUOUS_NAME;  }
617        finally {
618        }
619      }
620      /**
621       * @apilevel internal
622       */
623      protected boolean type_computed = false;
624      /**
625       * @apilevel internal
626       */
627      protected TypeDecl type_value;
628      /**
629       * @attribute syn
630       * @aspect TypeAnalysis
631       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:285
632       */
633      @SuppressWarnings({"unchecked", "cast"})
634      public TypeDecl type() {
635        if(type_computed) {
636          return type_value;
637        }
638          ASTNode$State state = state();
639      int num = state.boundariesCrossed;
640      boolean isFinal = this.is$Final();
641        type_value = type_compute();
642      if(isFinal && num == state().boundariesCrossed){ type_computed = true; }
643            return type_value;
644      }
645      /**
646       * @apilevel internal
647       */
648      private TypeDecl type_compute() {  return decl().type();  }
649      /**
650       * @attribute syn
651       * @aspect CreateBCode
652       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CreateBCode.jrag:219
653       */
654      public boolean needsPop() {
655        ASTNode$State state = state();
656        try {  return false;  }
657        finally {
658        }
659      }
660      /**
661       * @attribute syn
662       * @aspect MethodSignature15
663       * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/MethodSignature.jrag:326
664       */
665      public int arity() {
666        ASTNode$State state = state();
667        try {  return getNumArg();  }
668        finally {
669        }
670      }
671      /**
672       * @attribute syn
673       * @aspect VariableArityParameters
674       * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/VariableArityParameters.jrag:47
675       */
676      public boolean invokesVariableArityAsArray() {
677        ASTNode$State state = state();
678        try {
679        if(!decl().isVariableArity())
680          return false;
681        if(arity() != decl().arity())
682          return false;
683        return getArg(getNumArg()-1).type().methodInvocationConversionTo(decl().lastParameter().type());
684      }
685        finally {
686        }
687      }
688      /**
689       * @attribute inh
690       * @aspect ExceptionHandling
691       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ExceptionHandling.jrag:44
692       */
693      @SuppressWarnings({"unchecked", "cast"})
694      public boolean handlesException(TypeDecl exceptionType) {
695          ASTNode$State state = state();
696        boolean handlesException_TypeDecl_value = getParent().Define_boolean_handlesException(this, null, exceptionType);
697            return handlesException_TypeDecl_value;
698      }
699      /**
700       * @attribute inh
701       * @aspect ConstructScope
702       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupConstructor.jrag:14
703       */
704      @SuppressWarnings({"unchecked", "cast"})
705      public Collection lookupConstructor() {
706          ASTNode$State state = state();
707        Collection lookupConstructor_value = getParent().Define_Collection_lookupConstructor(this, null);
708            return lookupConstructor_value;
709      }
710      /**
711       * @attribute inh
712       * @aspect ConstructScope
713       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupConstructor.jrag:71
714       */
715      @SuppressWarnings({"unchecked", "cast"})
716      public ConstructorDecl unknownConstructor() {
717          ASTNode$State state = state();
718        ConstructorDecl unknownConstructor_value = getParent().Define_ConstructorDecl_unknownConstructor(this, null);
719            return unknownConstructor_value;
720      }
721      /**
722       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupMethod.jrag:29
723       * @apilevel internal
724       */
725      public Collection Define_Collection_lookupMethod(ASTNode caller, ASTNode child, String name) {
726        if(caller == getArgListNoTransform())  {
727        int childIndex = caller.getIndexOfChild(child);
728        return unqualifiedScope().lookupMethod(name);
729      }
730        else {      return getParent().Define_Collection_lookupMethod(this, caller, name);
731        }
732      }
733      /**
734       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:88
735       * @apilevel internal
736       */
737      public boolean Define_boolean_hasPackage(ASTNode caller, ASTNode child, String packageName) {
738        if(caller == getArgListNoTransform())  {
739        int childIndex = caller.getIndexOfChild(child);
740        return unqualifiedScope().hasPackage(packageName);
741      }
742        else {      return getParent().Define_boolean_hasPackage(this, caller, packageName);
743        }
744      }
745      /**
746       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:254
747       * @apilevel internal
748       */
749      public SimpleSet Define_SimpleSet_lookupType(ASTNode caller, ASTNode child, String name) {
750        if(caller == getArgListNoTransform())  {
751        int childIndex = caller.getIndexOfChild(child);
752        return unqualifiedScope().lookupType(name);
753      }
754        else {      return getParent().Define_SimpleSet_lookupType(this, caller, name);
755        }
756      }
757      /**
758       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupVariable.jrag:133
759       * @apilevel internal
760       */
761      public SimpleSet Define_SimpleSet_lookupVariable(ASTNode caller, ASTNode child, String name) {
762        if(caller == getArgListNoTransform())  {
763        int childIndex = caller.getIndexOfChild(child);
764        return unqualifiedScope().lookupVariable(name);
765      }
766        else {      return getParent().Define_SimpleSet_lookupVariable(this, caller, name);
767        }
768      }
769      /**
770       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/SyntacticClassification.jrag:121
771       * @apilevel internal
772       */
773      public NameType Define_NameType_nameType(ASTNode caller, ASTNode child) {
774        if(caller == getArgListNoTransform())  {
775        int childIndex = caller.getIndexOfChild(child);
776        return NameType.EXPRESSION_NAME;
777      }
778        else {      return getParent().Define_NameType_nameType(this, caller);
779        }
780      }
781      /**
782       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeHierarchyCheck.jrag:18
783       * @apilevel internal
784       */
785      public String Define_String_methodHost(ASTNode caller, ASTNode child) {
786         {
787          int childIndex = this.getIndexOfChild(caller);
788          return unqualifiedScope().methodHost();
789        }
790      }
791      /**
792       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeHierarchyCheck.jrag:130
793       * @apilevel internal
794       */
795      public boolean Define_boolean_inExplicitConstructorInvocation(ASTNode caller, ASTNode child) {
796        if(caller == getArgListNoTransform())  {
797        int childIndex = caller.getIndexOfChild(child);
798        return true;
799      }
800        else {      return getParent().Define_boolean_inExplicitConstructorInvocation(this, caller);
801        }
802      }
803      /**
804       * @apilevel internal
805       */
806      public ASTNode rewriteTo() {
807        return super.rewriteTo();
808      }
809    }