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 Program : {@link ASTNode} ::= <span class="component">{@link CompilationUnit}*</span>;
015     * @ast node
016     * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/java.ast:1
017     */
018    public class Program extends ASTNode<ASTNode> 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 Program clone() throws CloneNotSupportedException {
034        Program node = (Program)super.clone();
035        node.typeObject_computed = false;
036        node.typeObject_value = null;
037        node.typeCloneable_computed = false;
038        node.typeCloneable_value = null;
039        node.typeSerializable_computed = false;
040        node.typeSerializable_value = null;
041        node.typeBoolean_computed = false;
042        node.typeBoolean_value = null;
043        node.typeByte_computed = false;
044        node.typeByte_value = null;
045        node.typeShort_computed = false;
046        node.typeShort_value = null;
047        node.typeChar_computed = false;
048        node.typeChar_value = null;
049        node.typeInt_computed = false;
050        node.typeInt_value = null;
051        node.typeLong_computed = false;
052        node.typeLong_value = null;
053        node.typeFloat_computed = false;
054        node.typeFloat_value = null;
055        node.typeDouble_computed = false;
056        node.typeDouble_value = null;
057        node.typeString_computed = false;
058        node.typeString_value = null;
059        node.typeVoid_computed = false;
060        node.typeVoid_value = null;
061        node.typeNull_computed = false;
062        node.typeNull_value = null;
063        node.unknownType_computed = false;
064        node.unknownType_value = null;
065        node.hasPackage_String_values = null;
066        node.lookupType_String_String_values = null;
067        node.lookupLibType_String_String_values = null;
068        node.getLibCompilationUnit_String_values = null;
069        node.getLibCompilationUnit_String_list = null;    node.getPrimitiveCompilationUnit_computed = false;
070        node.getPrimitiveCompilationUnit_value = null;
071        node.unknownConstructor_computed = false;
072        node.unknownConstructor_value = null;
073        node.wildcards_computed = false;
074        node.wildcards_value = null;
075        node.in$Circle(false);
076        node.is$Final(false);
077        return node;
078      }
079    /**
080     * @apilevel internal
081     */
082      @SuppressWarnings({"unchecked", "cast"})
083    public Program copy() {
084      
085      try {
086        Program node = (Program) clone();
087        node.parent = null;
088        if(children != null)
089          node.children = (ASTNode[]) children.clone();
090        
091        return node;
092      } catch (CloneNotSupportedException e) {
093        throw new Error("Error: clone not supported for " + getClass().getName());
094      }
095      
096    }/**
097     * Create a deep copy of the AST subtree at this node.
098     * The copy is dangling, i.e. has no parent.
099     * @return dangling copy of the subtree at this node
100     * @apilevel low-level
101     */
102      @SuppressWarnings({"unchecked", "cast"})
103    public Program fullCopy() {
104      
105      Program tree = (Program) copy();
106      if (children != null) {
107        for (int i = 0; i < children.length; ++i) {
108          
109          ASTNode child = (ASTNode) children[i];
110          if(child != null) {
111            child = child.fullCopy();
112            tree.setChild(child, i);
113          }
114        }
115      }
116      return tree;
117      
118    }  /**
119       * @ast method 
120       * @aspect ClassPath
121       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ClassPath.jrag:22
122       */
123      
124    
125      protected BytecodeReader bytecodeReader;
126      /**
127       * @ast method 
128       * @aspect ClassPath
129       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ClassPath.jrag:23
130       */
131      public void initBytecodeReader(BytecodeReader r) { bytecodeReader = r; }
132      /**
133       * @ast method 
134       * @aspect ClassPath
135       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ClassPath.jrag:24
136       */
137      
138      protected JavaParser javaParser;
139      /**
140       * @ast method 
141       * @aspect ClassPath
142       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ClassPath.jrag:25
143       */
144      public void initJavaParser(JavaParser p) { javaParser = p; }
145      /**
146       * Add a filename to the list of source files to process.
147       * @return The CompilationUnit representing the source file,
148       * or <code>null</code> if no such file exists
149       * @ast method 
150       * @aspect ClassPath
151       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ClassPath.jrag:39
152       */
153      public CompilationUnit addSourceFile(String name) {
154        return sourceFiles.addSourceFile(name);
155      }
156      /**
157       * @ast method 
158       * @aspect ClassPath
159       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ClassPath.jrag:44
160       */
161      public Iterator compilationUnitIterator() {
162        initPaths();
163        return new Iterator() {
164          int index = 0;
165          public boolean hasNext() {
166            return index < getNumCompilationUnit() || !sourceFiles.isEmpty();
167          }
168          public Object next() {
169            if(getNumCompilationUnit() == index) {
170              String typename = (String)sourceFiles.keySet().iterator().next();
171              CompilationUnit u = getCompilationUnit(typename);
172              if(u != null) {
173                addCompilationUnit(u);
174                getCompilationUnit(getNumCompilationUnit()-1);
175              }
176              else
177                throw new Error("File " + typename + " not found");
178            }
179            return getCompilationUnit(index++);
180          }
181          public void remove() {
182            throw new UnsupportedOperationException();
183          }
184        };
185      }
186      /**
187       * @ast method 
188       * @aspect ClassPath
189       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ClassPath.jrag:73
190       */
191      public InputStream getInputStream(String name) {
192        initPaths();
193        try {
194          for(Iterator iter = classPath.iterator(); iter.hasNext(); ) {
195            PathPart part = (PathPart)iter.next();
196            if(part.selectCompilationUnit(name))
197              return part.is;
198          }
199        }
200        catch(IOException e) {
201        }
202        throw new Error("Could not find nested type " + name);
203      }
204      /**
205       * @ast method 
206       * @aspect ClassPath
207       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ClassPath.jrag:96
208       */
209      public CompilationUnit getCompilationUnit(String name) {
210        initPaths();
211        try {
212          if(sourceFiles.selectCompilationUnit(name))
213            return sourceFiles.getCompilationUnit();
214          PathPart sourcePart = null;
215          PathPart classPart = null;
216          for(Iterator iter = sourcePath.iterator(); iter.hasNext() && sourcePart == null; ) {
217            PathPart part = (PathPart)iter.next();
218            if(part.selectCompilationUnit(name))
219              sourcePart = part;
220          }
221          for(Iterator iter = classPath.iterator(); iter.hasNext() && classPart == null; ) {
222            PathPart part = (PathPart)iter.next();
223            if(part.selectCompilationUnit(name))
224              classPart = part;
225          }
226          
227          if(sourcePart != null && (classPart == null || classPart.age < sourcePart.age)) {
228            CompilationUnit unit = sourcePart.getCompilationUnit();
229            int index = name.lastIndexOf('.');
230            if(index == -1)
231              return unit;
232            String pkgName = name.substring(0, index);
233            if(pkgName.equals(unit.getPackageDecl()))
234              return unit;
235          }
236          if(classPart != null) {
237            CompilationUnit unit = classPart.getCompilationUnit();
238            int index = name.lastIndexOf('.');
239            if(index == -1)
240              return unit;
241            String pkgName = name.substring(0, index);
242            if(pkgName.equals(unit.getPackageDecl()))
243              return unit;
244          }
245          return null;
246        }
247        catch(IOException e) {
248        }
249        return null;
250      }
251      /**
252       * @return <code>true</code> if there is a package with the given name on
253       * the path
254       * @ast method 
255       * @aspect ClassPath
256       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ClassPath.jrag:143
257       */
258      public boolean isPackage(String name) {
259        if(sourceFiles.hasPackage(name))
260          return true;
261        for(Iterator iter = classPath.iterator(); iter.hasNext(); ) {
262          PathPart part = (PathPart)iter.next();
263          if(part.hasPackage(name))
264            return true;
265        }
266        for(Iterator iter = sourcePath.iterator(); iter.hasNext(); ) {
267          PathPart part = (PathPart)iter.next();
268          if(part.hasPackage(name))
269            return true;
270        }
271        return false;
272      }
273      /**
274       * @ast method 
275       * @aspect ClassPath
276       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ClassPath.jrag:173
277       */
278      
279    
280      private boolean pathsInitialized = false;
281      /**
282       * @ast method 
283       * @aspect ClassPath
284       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ClassPath.jrag:174
285       */
286      
287      private java.util.ArrayList classPath;
288      /**
289       * @ast method 
290       * @aspect ClassPath
291       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ClassPath.jrag:175
292       */
293      
294      private java.util.ArrayList sourcePath;
295      /**
296       * @ast method 
297       * @aspect ClassPath
298       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ClassPath.jrag:176
299       */
300      
301      private FileNamesPart sourceFiles = new FileNamesPart(this);
302      /**
303       * @ast method 
304       * @aspect ClassPath
305       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ClassPath.jrag:178
306       */
307      public void pushClassPath(String name) {
308        PathPart part = PathPart.createSourcePath(name, this);
309        if(part != null) {
310          sourcePath.add(part);
311          System.out.println("Pushing source path " + name);
312        }
313        else
314          throw new Error("Could not push source path " + name);
315        part = PathPart.createClassPath(name, this);
316        if(part != null) {
317          classPath.add(part);
318          System.out.println("Pushing class path " + name);
319        }
320      }
321      /**
322       * @ast method 
323       * @aspect ClassPath
324       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ClassPath.jrag:192
325       */
326      public void popClassPath() {
327        if(sourcePath.size() > 0)
328          sourcePath.remove(sourcePath.size()-1);
329        if(classPath.size() > 0)
330          classPath.remove(classPath.size()-1);
331      }
332      /**
333       * @ast method 
334       * @aspect ClassPath
335       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ClassPath.jrag:199
336       */
337      public void initPaths() {
338        if(!pathsInitialized) {
339          pathsInitialized = true;
340    
341          //System.err.println("Initializing class paths");
342          
343          ArrayList classPaths = new ArrayList();
344          ArrayList sourcePaths = new ArrayList();
345          
346          String[] bootclasspaths;
347          if(options().hasValueForOption("-bootclasspath"))
348            bootclasspaths = options().getValueForOption("-bootclasspath").split(File.pathSeparator);
349          else
350            bootclasspaths = System.getProperty("sun.boot.class.path").split(File.pathSeparator);
351          for(int i = 0; i < bootclasspaths.length; i++) {
352            classPaths.add(bootclasspaths[i]);
353            //System.err.println("Adding classpath " + bootclasspaths[i]);
354          }
355          
356          String[] extdirs;
357          if(options().hasValueForOption("-extdirs"))
358            extdirs = options().getValueForOption("-extdirs").split(File.pathSeparator);
359          else
360            extdirs = System.getProperty("java.ext.dirs").split(File.pathSeparator);
361          for(int i = 0; i < extdirs.length; i++) {
362            classPaths.add(extdirs[i]);
363            //System.err.println("Adding classpath " + extdirs[i]);
364          }
365    
366          String[] userClasses = null;
367          if(options().hasValueForOption("-classpath"))
368            userClasses = options().getValueForOption("-classpath").split(File.pathSeparator);
369          else if(options().hasValueForOption("-cp"))
370            userClasses = options().getValueForOption("-cp").split(File.pathSeparator);
371          else {
372            userClasses = ".".split(File.pathSeparator);
373          }
374          if(!options().hasValueForOption("-sourcepath")) {
375            for(int i = 0; i < userClasses.length; i++) {
376              classPaths.add(userClasses[i]);
377              sourcePaths.add(userClasses[i]);
378              //System.err.println("Adding classpath/sourcepath " + userClasses[i]);
379            }
380          }
381          else {
382            for(int i = 0; i < userClasses.length; i++) {
383              classPaths.add(userClasses[i]);
384              //System.err.println("Adding classpath " + userClasses[i]);
385            }
386            userClasses = options().getValueForOption("-sourcepath").split(File.pathSeparator);
387            for(int i = 0; i < userClasses.length; i++) {
388              sourcePaths.add(userClasses[i]);
389              //System.err.println("Adding sourcepath " + userClasses[i]);
390            }
391          }
392            
393          classPath = new ArrayList();
394          sourcePath = new ArrayList();
395          
396          for(Iterator iter = classPaths.iterator(); iter.hasNext(); ) {
397            String s = (String)iter.next();
398            PathPart part = PathPart.createClassPath(s, this);
399            if(part != null) {
400              classPath.add(part);
401              //System.out.println("Adding classpath " + s);
402            }
403            else if(options().verbose())
404              System.out.println("Warning: Could not use " + s + " as class path");
405          }
406          for(Iterator iter = sourcePaths.iterator(); iter.hasNext(); ) {
407            String s = (String)iter.next();
408            PathPart part = PathPart.createSourcePath(s, this);
409            if(part != null) {
410              sourcePath.add(part);
411              //System.out.println("Adding sourcepath " + s);
412            }
413            else if(options().verbose())
414              System.out.println("Warning: Could not use " + s + " as source path");
415          }
416        }
417      }
418      /**
419       * Add a path part to the library class path.
420       * @ast method 
421       * @aspect ClassPath
422       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ClassPath.jrag:284
423       */
424      public void addClassPath(PathPart pathPart) {
425        classPath.add(pathPart);
426        pathPart.program = this;
427      }
428      /**
429       * Add a path part to the user class path.
430       * @ast method 
431       * @aspect ClassPath
432       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ClassPath.jrag:292
433       */
434      public void addSourcePath(PathPart pathPart) {
435        sourcePath.add(pathPart);
436        pathPart.program = this;
437      }
438      /**
439       * @ast method 
440       * @aspect ClassPath
441       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ClassPath.jrag:298
442       */
443      public void simpleReset() {
444        lookupType_String_String_values = new HashMap();
445        hasPackage_String_values = new HashMap();
446        List list = new List();
447        for(int i = 0; i < getNumCompilationUnit(); i++) {
448          CompilationUnit unit = getCompilationUnit(i);
449          if(!unit.fromSource()) {
450            list.add(unit);
451          }
452        }
453        setCompilationUnitList(list);
454      }
455      /**
456       * @ast method 
457       * @aspect ErrorCheck
458       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ErrorCheck.jrag:208
459       */
460      public void errorCheck(Collection collection) {
461        for(Iterator iter = compilationUnitIterator(); iter.hasNext(); ) {
462          CompilationUnit cu = (CompilationUnit)iter.next();
463          if(cu.fromSource()) {
464            cu.collectErrors();
465            collection.addAll(cu.errors);
466          }
467        }
468      }
469      /**
470       * @ast method 
471       * @aspect ErrorCheck
472       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ErrorCheck.jrag:217
473       */
474      public void errorCheck(Collection collection, Collection warn) {
475        for(Iterator iter = compilationUnitIterator(); iter.hasNext(); ) {
476          CompilationUnit cu = (CompilationUnit)iter.next();
477          if(cu.fromSource()) {
478            cu.collectErrors();
479            collection.addAll(cu.errors);
480            warn.addAll(cu.warnings);
481          }
482        }
483      }
484      /**
485       * @ast method 
486       * @aspect ErrorCheck
487       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ErrorCheck.jrag:238
488       */
489      public boolean errorCheck() {
490        Collection collection = new LinkedList();
491        errorCheck(collection);
492        if(collection.isEmpty())
493          return false;
494        System.out.println("Errors:");
495        for(Iterator iter = collection.iterator(); iter.hasNext(); ) {
496          String s = (String)iter.next();
497          System.out.println(s);
498        }
499        return true;
500      }
501      /**
502       * @ast method 
503       * @aspect LookupFullyQualifiedTypes
504       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:101
505       */
506      
507    
508      public int classFileReadTime;
509      /**
510       * @ast method 
511       * @aspect PrettyPrint
512       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/PrettyPrint.jadd:23
513       */
514      public void toString(StringBuffer s) {
515        for(Iterator iter = compilationUnitIterator(); iter.hasNext(); ) {
516          CompilationUnit cu = (CompilationUnit)iter.next();
517          if(cu.fromSource()) { 
518            cu.toString(s);
519          }
520        }
521      }
522      /**
523       * @ast method 
524       * @aspect PrettyPrint
525       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/PrettyPrint.jadd:821
526       */
527      public String dumpTree() {
528        StringBuffer s = new StringBuffer();
529        for(Iterator iter = compilationUnitIterator(); iter.hasNext(); ) {
530          CompilationUnit cu = (CompilationUnit)iter.next();
531          if(cu.fromSource()) { 
532            s.append(cu.dumpTree());
533          }
534        }
535        return s.toString();
536      }
537      /**
538       * @ast method 
539       * @aspect GenerateClassfile
540       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/GenerateClassfile.jrag:11
541       */
542      public void generateClassfile() {
543        for(Iterator iter = compilationUnitIterator(); iter.hasNext(); ) {
544          CompilationUnit cu = (CompilationUnit)iter.next();
545          cu.generateClassfile();
546        }
547      }
548      /**
549       * @ast method 
550       * 
551       */
552      public Program() {
553        super();
554    
555        is$Final(true);
556    
557      }
558      /**
559       * Initializes the child array to the correct size.
560       * Initializes List and Opt nta children.
561       * @apilevel internal
562       * @ast method
563       * @ast method 
564       * 
565       */
566      public void init$Children() {
567        children = new ASTNode[1];
568        setChild(new List(), 0);
569      }
570      /**
571       * @ast method 
572       * 
573       */
574      public Program(List<CompilationUnit> p0) {
575        setChild(p0, 0);
576        is$Final(true);
577      }
578      /**
579       * @apilevel low-level
580       * @ast method 
581       * 
582       */
583      protected int numChildren() {
584        return 1;
585      }
586      /**
587       * @apilevel internal
588       * @ast method 
589       * 
590       */
591      public boolean mayHaveRewrite() {
592        return false;
593      }
594      /**
595       * Replaces the CompilationUnit list.
596       * @param list The new list node to be used as the CompilationUnit list.
597       * @apilevel high-level
598       * @ast method 
599       * 
600       */
601      public void setCompilationUnitList(List<CompilationUnit> list) {
602        setChild(list, 0);
603      }
604      /**
605       * Retrieves the number of children in the CompilationUnit list.
606       * @return Number of children in the CompilationUnit list.
607       * @apilevel high-level
608       * @ast method 
609       * 
610       */
611      public int getNumCompilationUnit() {
612        return getCompilationUnitList().getNumChild();
613      }
614      /**
615       * Retrieves the number of children in the CompilationUnit list.
616       * Calling this method will not trigger rewrites..
617       * @return Number of children in the CompilationUnit list.
618       * @apilevel low-level
619       * @ast method 
620       * 
621       */
622      public int getNumCompilationUnitNoTransform() {
623        return getCompilationUnitListNoTransform().getNumChildNoTransform();
624      }
625      /**
626       * Retrieves the element at index {@code i} in the CompilationUnit list..
627       * @param i Index of the element to return.
628       * @return The element at position {@code i} in the CompilationUnit list.
629       * @apilevel high-level
630       * @ast method 
631       * 
632       */
633      @SuppressWarnings({"unchecked", "cast"})
634      public CompilationUnit getCompilationUnit(int i) {
635        return (CompilationUnit)getCompilationUnitList().getChild(i);
636      }
637      /**
638       * Append an element to the CompilationUnit list.
639       * @param node The element to append to the CompilationUnit list.
640       * @apilevel high-level
641       * @ast method 
642       * 
643       */
644      public void addCompilationUnit(CompilationUnit node) {
645        List<CompilationUnit> list = (parent == null || state == null) ? getCompilationUnitListNoTransform() : getCompilationUnitList();
646        list.addChild(node);
647      }
648      /**
649       * @apilevel low-level
650       * @ast method 
651       * 
652       */
653      public void addCompilationUnitNoTransform(CompilationUnit node) {
654        List<CompilationUnit> list = getCompilationUnitListNoTransform();
655        list.addChild(node);
656      }
657      /**
658       * Replaces the CompilationUnit list element at index {@code i} with the new node {@code node}.
659       * @param node The new node to replace the old list element.
660       * @param i The list index of the node to be replaced.
661       * @apilevel high-level
662       * @ast method 
663       * 
664       */
665      public void setCompilationUnit(CompilationUnit node, int i) {
666        List<CompilationUnit> list = getCompilationUnitList();
667        list.setChild(node, i);
668      }
669      /**
670       * Retrieves the CompilationUnit list.
671       * @return The node representing the CompilationUnit list.
672       * @apilevel high-level
673       * @ast method 
674       * 
675       */
676      public List<CompilationUnit> getCompilationUnits() {
677        return getCompilationUnitList();
678      }
679      /**
680       * Retrieves the CompilationUnit list.
681       * <p><em>This method does not invoke AST transformations.</em></p>
682       * @return The node representing the CompilationUnit list.
683       * @apilevel low-level
684       * @ast method 
685       * 
686       */
687      public List<CompilationUnit> getCompilationUnitsNoTransform() {
688        return getCompilationUnitListNoTransform();
689      }
690      /**
691       * Retrieves the CompilationUnit list.
692       * @return The node representing the CompilationUnit list.
693       * @apilevel high-level
694       * @ast method 
695       * 
696       */
697      @SuppressWarnings({"unchecked", "cast"})
698      public List<CompilationUnit> refined__Program_getCompilationUnitList() {
699        List<CompilationUnit> list = (List<CompilationUnit>)getChild(0);
700        list.getNumChild();
701        return list;
702      }
703      /**
704       * Retrieves the CompilationUnit list.
705       * <p><em>This method does not invoke AST transformations.</em></p>
706       * @return The node representing the CompilationUnit list.
707       * @apilevel low-level
708       * @ast method 
709       * 
710       */
711      @SuppressWarnings({"unchecked", "cast"})
712      public List<CompilationUnit> getCompilationUnitListNoTransform() {
713        return (List<CompilationUnit>)getChildNoTransform(0);
714      }
715      /**
716       * @ast method 
717       * @aspect ClassPath
718       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ClassPath.jrag:87
719       */
720       public List getCompilationUnitList() {
721        initPaths();
722        return refined__Program_getCompilationUnitList();
723      }
724      /**
725       * @apilevel internal
726       */
727      protected boolean typeObject_computed = false;
728      /**
729       * @apilevel internal
730       */
731      protected TypeDecl typeObject_value;
732      /**
733       * @attribute syn
734       * @aspect SpecialClasses
735       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:15
736       */
737      @SuppressWarnings({"unchecked", "cast"})
738      public TypeDecl typeObject() {
739        if(typeObject_computed) {
740          return typeObject_value;
741        }
742          ASTNode$State state = state();
743      int num = state.boundariesCrossed;
744      boolean isFinal = this.is$Final();
745        typeObject_value = typeObject_compute();
746      if(isFinal && num == state().boundariesCrossed){ typeObject_computed = true; }
747            return typeObject_value;
748      }
749      /**
750       * @apilevel internal
751       */
752      private TypeDecl typeObject_compute() {  return lookupType("java.lang", "Object");  }
753      /**
754       * @apilevel internal
755       */
756      protected boolean typeCloneable_computed = false;
757      /**
758       * @apilevel internal
759       */
760      protected TypeDecl typeCloneable_value;
761      /**
762       * @attribute syn
763       * @aspect SpecialClasses
764       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:16
765       */
766      @SuppressWarnings({"unchecked", "cast"})
767      public TypeDecl typeCloneable() {
768        if(typeCloneable_computed) {
769          return typeCloneable_value;
770        }
771          ASTNode$State state = state();
772      int num = state.boundariesCrossed;
773      boolean isFinal = this.is$Final();
774        typeCloneable_value = typeCloneable_compute();
775      if(isFinal && num == state().boundariesCrossed){ typeCloneable_computed = true; }
776            return typeCloneable_value;
777      }
778      /**
779       * @apilevel internal
780       */
781      private TypeDecl typeCloneable_compute() {  return lookupType("java.lang", "Cloneable");  }
782      /**
783       * @apilevel internal
784       */
785      protected boolean typeSerializable_computed = false;
786      /**
787       * @apilevel internal
788       */
789      protected TypeDecl typeSerializable_value;
790      /**
791       * @attribute syn
792       * @aspect SpecialClasses
793       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:17
794       */
795      @SuppressWarnings({"unchecked", "cast"})
796      public TypeDecl typeSerializable() {
797        if(typeSerializable_computed) {
798          return typeSerializable_value;
799        }
800          ASTNode$State state = state();
801      int num = state.boundariesCrossed;
802      boolean isFinal = this.is$Final();
803        typeSerializable_value = typeSerializable_compute();
804      if(isFinal && num == state().boundariesCrossed){ typeSerializable_computed = true; }
805            return typeSerializable_value;
806      }
807      /**
808       * @apilevel internal
809       */
810      private TypeDecl typeSerializable_compute() {  return lookupType("java.io", "Serializable");  }
811      /**
812       * @apilevel internal
813       */
814      protected boolean typeBoolean_computed = false;
815      /**
816       * @apilevel internal
817       */
818      protected TypeDecl typeBoolean_value;
819      /**
820       * @attribute syn
821       * @aspect SpecialClasses
822       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:22
823       */
824      @SuppressWarnings({"unchecked", "cast"})
825      public TypeDecl typeBoolean() {
826        if(typeBoolean_computed) {
827          return typeBoolean_value;
828        }
829          ASTNode$State state = state();
830      int num = state.boundariesCrossed;
831      boolean isFinal = this.is$Final();
832        typeBoolean_value = typeBoolean_compute();
833      if(isFinal && num == state().boundariesCrossed){ typeBoolean_computed = true; }
834            return typeBoolean_value;
835      }
836      /**
837       * @apilevel internal
838       */
839      private TypeDecl typeBoolean_compute() {  return lookupType(PRIMITIVE_PACKAGE_NAME, "boolean");  }
840      /**
841       * @apilevel internal
842       */
843      protected boolean typeByte_computed = false;
844      /**
845       * @apilevel internal
846       */
847      protected TypeDecl typeByte_value;
848      /**
849       * @attribute syn
850       * @aspect SpecialClasses
851       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:23
852       */
853      @SuppressWarnings({"unchecked", "cast"})
854      public TypeDecl typeByte() {
855        if(typeByte_computed) {
856          return typeByte_value;
857        }
858          ASTNode$State state = state();
859      int num = state.boundariesCrossed;
860      boolean isFinal = this.is$Final();
861        typeByte_value = typeByte_compute();
862      if(isFinal && num == state().boundariesCrossed){ typeByte_computed = true; }
863            return typeByte_value;
864      }
865      /**
866       * @apilevel internal
867       */
868      private TypeDecl typeByte_compute() {  return lookupType(PRIMITIVE_PACKAGE_NAME , "byte");  }
869      /**
870       * @apilevel internal
871       */
872      protected boolean typeShort_computed = false;
873      /**
874       * @apilevel internal
875       */
876      protected TypeDecl typeShort_value;
877      /**
878       * @attribute syn
879       * @aspect SpecialClasses
880       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:24
881       */
882      @SuppressWarnings({"unchecked", "cast"})
883      public TypeDecl typeShort() {
884        if(typeShort_computed) {
885          return typeShort_value;
886        }
887          ASTNode$State state = state();
888      int num = state.boundariesCrossed;
889      boolean isFinal = this.is$Final();
890        typeShort_value = typeShort_compute();
891      if(isFinal && num == state().boundariesCrossed){ typeShort_computed = true; }
892            return typeShort_value;
893      }
894      /**
895       * @apilevel internal
896       */
897      private TypeDecl typeShort_compute() {  return lookupType(PRIMITIVE_PACKAGE_NAME , "short");  }
898      /**
899       * @apilevel internal
900       */
901      protected boolean typeChar_computed = false;
902      /**
903       * @apilevel internal
904       */
905      protected TypeDecl typeChar_value;
906      /**
907       * @attribute syn
908       * @aspect SpecialClasses
909       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:25
910       */
911      @SuppressWarnings({"unchecked", "cast"})
912      public TypeDecl typeChar() {
913        if(typeChar_computed) {
914          return typeChar_value;
915        }
916          ASTNode$State state = state();
917      int num = state.boundariesCrossed;
918      boolean isFinal = this.is$Final();
919        typeChar_value = typeChar_compute();
920      if(isFinal && num == state().boundariesCrossed){ typeChar_computed = true; }
921            return typeChar_value;
922      }
923      /**
924       * @apilevel internal
925       */
926      private TypeDecl typeChar_compute() {  return lookupType(PRIMITIVE_PACKAGE_NAME , "char");  }
927      /**
928       * @apilevel internal
929       */
930      protected boolean typeInt_computed = false;
931      /**
932       * @apilevel internal
933       */
934      protected TypeDecl typeInt_value;
935      /**
936       * @attribute syn
937       * @aspect SpecialClasses
938       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:26
939       */
940      @SuppressWarnings({"unchecked", "cast"})
941      public TypeDecl typeInt() {
942        if(typeInt_computed) {
943          return typeInt_value;
944        }
945          ASTNode$State state = state();
946      int num = state.boundariesCrossed;
947      boolean isFinal = this.is$Final();
948        typeInt_value = typeInt_compute();
949      if(isFinal && num == state().boundariesCrossed){ typeInt_computed = true; }
950            return typeInt_value;
951      }
952      /**
953       * @apilevel internal
954       */
955      private TypeDecl typeInt_compute() {  return lookupType(PRIMITIVE_PACKAGE_NAME , "int");  }
956      /**
957       * @apilevel internal
958       */
959      protected boolean typeLong_computed = false;
960      /**
961       * @apilevel internal
962       */
963      protected TypeDecl typeLong_value;
964      /**
965       * @attribute syn
966       * @aspect SpecialClasses
967       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:27
968       */
969      @SuppressWarnings({"unchecked", "cast"})
970      public TypeDecl typeLong() {
971        if(typeLong_computed) {
972          return typeLong_value;
973        }
974          ASTNode$State state = state();
975      int num = state.boundariesCrossed;
976      boolean isFinal = this.is$Final();
977        typeLong_value = typeLong_compute();
978      if(isFinal && num == state().boundariesCrossed){ typeLong_computed = true; }
979            return typeLong_value;
980      }
981      /**
982       * @apilevel internal
983       */
984      private TypeDecl typeLong_compute() {  return lookupType(PRIMITIVE_PACKAGE_NAME , "long");  }
985      /**
986       * @apilevel internal
987       */
988      protected boolean typeFloat_computed = false;
989      /**
990       * @apilevel internal
991       */
992      protected TypeDecl typeFloat_value;
993      /**
994       * @attribute syn
995       * @aspect SpecialClasses
996       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:28
997       */
998      @SuppressWarnings({"unchecked", "cast"})
999      public TypeDecl typeFloat() {
1000        if(typeFloat_computed) {
1001          return typeFloat_value;
1002        }
1003          ASTNode$State state = state();
1004      int num = state.boundariesCrossed;
1005      boolean isFinal = this.is$Final();
1006        typeFloat_value = typeFloat_compute();
1007      if(isFinal && num == state().boundariesCrossed){ typeFloat_computed = true; }
1008            return typeFloat_value;
1009      }
1010      /**
1011       * @apilevel internal
1012       */
1013      private TypeDecl typeFloat_compute() {  return lookupType(PRIMITIVE_PACKAGE_NAME , "float");  }
1014      /**
1015       * @apilevel internal
1016       */
1017      protected boolean typeDouble_computed = false;
1018      /**
1019       * @apilevel internal
1020       */
1021      protected TypeDecl typeDouble_value;
1022      /**
1023       * @attribute syn
1024       * @aspect SpecialClasses
1025       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:29
1026       */
1027      @SuppressWarnings({"unchecked", "cast"})
1028      public TypeDecl typeDouble() {
1029        if(typeDouble_computed) {
1030          return typeDouble_value;
1031        }
1032          ASTNode$State state = state();
1033      int num = state.boundariesCrossed;
1034      boolean isFinal = this.is$Final();
1035        typeDouble_value = typeDouble_compute();
1036      if(isFinal && num == state().boundariesCrossed){ typeDouble_computed = true; }
1037            return typeDouble_value;
1038      }
1039      /**
1040       * @apilevel internal
1041       */
1042      private TypeDecl typeDouble_compute() {  return lookupType(PRIMITIVE_PACKAGE_NAME , "double");  }
1043      /**
1044       * @apilevel internal
1045       */
1046      protected boolean typeString_computed = false;
1047      /**
1048       * @apilevel internal
1049       */
1050      protected TypeDecl typeString_value;
1051      /**
1052       * @attribute syn
1053       * @aspect SpecialClasses
1054       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:30
1055       */
1056      @SuppressWarnings({"unchecked", "cast"})
1057      public TypeDecl typeString() {
1058        if(typeString_computed) {
1059          return typeString_value;
1060        }
1061          ASTNode$State state = state();
1062      int num = state.boundariesCrossed;
1063      boolean isFinal = this.is$Final();
1064        typeString_value = typeString_compute();
1065      if(isFinal && num == state().boundariesCrossed){ typeString_computed = true; }
1066            return typeString_value;
1067      }
1068      /**
1069       * @apilevel internal
1070       */
1071      private TypeDecl typeString_compute() {  return lookupType("java.lang", "String");  }
1072      /**
1073       * @apilevel internal
1074       */
1075      protected boolean typeVoid_computed = false;
1076      /**
1077       * @apilevel internal
1078       */
1079      protected TypeDecl typeVoid_value;
1080      /**
1081       * @attribute syn
1082       * @aspect SpecialClasses
1083       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:41
1084       */
1085      @SuppressWarnings({"unchecked", "cast"})
1086      public TypeDecl typeVoid() {
1087        if(typeVoid_computed) {
1088          return typeVoid_value;
1089        }
1090          ASTNode$State state = state();
1091      int num = state.boundariesCrossed;
1092      boolean isFinal = this.is$Final();
1093        typeVoid_value = typeVoid_compute();
1094      if(isFinal && num == state().boundariesCrossed){ typeVoid_computed = true; }
1095            return typeVoid_value;
1096      }
1097      /**
1098       * @apilevel internal
1099       */
1100      private TypeDecl typeVoid_compute() {  return lookupType(PRIMITIVE_PACKAGE_NAME, "void");  }
1101      /**
1102       * @apilevel internal
1103       */
1104      protected boolean typeNull_computed = false;
1105      /**
1106       * @apilevel internal
1107       */
1108      protected TypeDecl typeNull_value;
1109      /**
1110       * @attribute syn
1111       * @aspect SpecialClasses
1112       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:43
1113       */
1114      @SuppressWarnings({"unchecked", "cast"})
1115      public TypeDecl typeNull() {
1116        if(typeNull_computed) {
1117          return typeNull_value;
1118        }
1119          ASTNode$State state = state();
1120      int num = state.boundariesCrossed;
1121      boolean isFinal = this.is$Final();
1122        typeNull_value = typeNull_compute();
1123      if(isFinal && num == state().boundariesCrossed){ typeNull_computed = true; }
1124            return typeNull_value;
1125      }
1126      /**
1127       * @apilevel internal
1128       */
1129      private TypeDecl typeNull_compute() {  return lookupType(PRIMITIVE_PACKAGE_NAME, "null");  }
1130      /**
1131       * @apilevel internal
1132       */
1133      protected boolean unknownType_computed = false;
1134      /**
1135       * @apilevel internal
1136       */
1137      protected TypeDecl unknownType_value;
1138      /**
1139       * @attribute syn
1140       * @aspect SpecialClasses
1141       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:46
1142       */
1143      @SuppressWarnings({"unchecked", "cast"})
1144      public TypeDecl unknownType() {
1145        if(unknownType_computed) {
1146          return unknownType_value;
1147        }
1148          ASTNode$State state = state();
1149      int num = state.boundariesCrossed;
1150      boolean isFinal = this.is$Final();
1151        unknownType_value = unknownType_compute();
1152      if(isFinal && num == state().boundariesCrossed){ unknownType_computed = true; }
1153            return unknownType_value;
1154      }
1155      /**
1156       * @apilevel internal
1157       */
1158      private TypeDecl unknownType_compute() {  return lookupType(PRIMITIVE_PACKAGE_NAME, "Unknown");  }
1159      protected java.util.Map hasPackage_String_values;
1160      /**
1161       * @attribute syn
1162       * @aspect LookupFullyQualifiedTypes
1163       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:77
1164       */
1165      @SuppressWarnings({"unchecked", "cast"})
1166      public boolean hasPackage(String packageName) {
1167        Object _parameters = packageName;
1168        if(hasPackage_String_values == null) hasPackage_String_values = new java.util.HashMap(4);
1169        if(hasPackage_String_values.containsKey(_parameters)) {
1170          return ((Boolean)hasPackage_String_values.get(_parameters)).booleanValue();
1171        }
1172          ASTNode$State state = state();
1173      int num = state.boundariesCrossed;
1174      boolean isFinal = this.is$Final();
1175        boolean hasPackage_String_value = hasPackage_compute(packageName);
1176      if(isFinal && num == state().boundariesCrossed){ hasPackage_String_values.put(_parameters, Boolean.valueOf(hasPackage_String_value)); }
1177            return hasPackage_String_value;
1178      }
1179      /**
1180       * @apilevel internal
1181       */
1182      private boolean hasPackage_compute(String packageName) {
1183        return isPackage(packageName);
1184      }
1185      protected java.util.Map lookupType_String_String_values;
1186      /**
1187       * Checks from-source compilation units for the given type.
1188       * If no matching compilation unit is found the library compliation units
1189       * will be searched.
1190       * @attribute syn
1191       * @aspect LookupFullyQualifiedTypes
1192       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:158
1193       */
1194      @SuppressWarnings({"unchecked", "cast"})
1195      public TypeDecl lookupType(String packageName, String typeName) {
1196        java.util.List _parameters = new java.util.ArrayList(2);
1197        _parameters.add(packageName);
1198        _parameters.add(typeName);
1199        if(lookupType_String_String_values == null) lookupType_String_String_values = new java.util.HashMap(4);
1200        if(lookupType_String_String_values.containsKey(_parameters)) {
1201          return (TypeDecl)lookupType_String_String_values.get(_parameters);
1202        }
1203          ASTNode$State state = state();
1204      int num = state.boundariesCrossed;
1205      boolean isFinal = this.is$Final();
1206        TypeDecl lookupType_String_String_value = lookupType_compute(packageName, typeName);
1207      if(isFinal && num == state().boundariesCrossed){ lookupType_String_String_values.put(_parameters, lookupType_String_String_value); }
1208            return lookupType_String_String_value;
1209      }
1210      /**
1211       * @apilevel internal
1212       */
1213      private TypeDecl lookupType_compute(String packageName, String typeName) {
1214        String fullName = packageName.equals("") ? typeName : packageName + "." + typeName;
1215        // Check for type in source
1216        for(int i = 0; i < getNumCompilationUnit(); i++) {
1217          for(int j = 0; j < getCompilationUnit(i).getNumTypeDecl(); j++) {
1218            TypeDecl type = getCompilationUnit(i).getTypeDecl(j);
1219            if(type.fullName().equals(fullName)) {
1220              return type;
1221            }
1222          }
1223        }
1224        // Check for type in library
1225        return lookupLibType(packageName, typeName);
1226      }
1227      protected java.util.Map lookupLibType_String_String_values;
1228      /**
1229       * Lookup types in the library
1230       * @attribute syn
1231       * @aspect LookupFullyQualifiedTypes
1232       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:175
1233       */
1234      @SuppressWarnings({"unchecked", "cast"})
1235      public TypeDecl lookupLibType(String packageName, String typeName) {
1236        java.util.List _parameters = new java.util.ArrayList(2);
1237        _parameters.add(packageName);
1238        _parameters.add(typeName);
1239        if(lookupLibType_String_String_values == null) lookupLibType_String_String_values = new java.util.HashMap(4);
1240        if(lookupLibType_String_String_values.containsKey(_parameters)) {
1241          return (TypeDecl)lookupLibType_String_String_values.get(_parameters);
1242        }
1243          ASTNode$State state = state();
1244      int num = state.boundariesCrossed;
1245      boolean isFinal = this.is$Final();
1246        TypeDecl lookupLibType_String_String_value = lookupLibType_compute(packageName, typeName);
1247      if(isFinal && num == state().boundariesCrossed){ lookupLibType_String_String_values.put(_parameters, lookupLibType_String_String_value); }
1248            return lookupLibType_String_String_value;
1249      }
1250      /**
1251       * @apilevel internal
1252       */
1253      private TypeDecl lookupLibType_compute(String packageName, String typeName) {
1254        String fullName = packageName.equals("") ? typeName : packageName + "." + typeName;
1255        // Check the primitive types
1256        if (packageName.equals(PRIMITIVE_PACKAGE_NAME)) {
1257          PrimitiveCompilationUnit unit = getPrimitiveCompilationUnit();
1258          if (typeName.equals("boolean")) return unit.typeBoolean();
1259          if (typeName.equals("byte")) return unit.typeByte();
1260          if (typeName.equals("short")) return unit.typeShort();
1261          if (typeName.equals("char")) return unit.typeChar();
1262          if (typeName.equals("int")) return unit.typeInt();
1263          if (typeName.equals("long")) return unit.typeLong();
1264          if (typeName.equals("float")) return unit.typeFloat();
1265          if (typeName.equals("double")) return unit.typeDouble();
1266          if (typeName.equals("null")) return unit.typeNull();
1267          if (typeName.equals("void")) return unit.typeVoid();
1268          if (typeName.equals("Unknown")) return unit.unknownType(); // Is this needed?
1269        } 
1270        // Check the library:
1271        //  A type may not be in the library but an NTA cannot map to null.
1272        //  We need to do some double work to step around this.
1273        //  We check the classpath directly (the same thing the library NTA does)
1274        //  to prevent that we call the nta for a name that gives null back
1275        //else if (getCompilationUnit(fullName) != null) { 
1276        
1277        // Found a library unit, check it for type
1278        CompilationUnit libUnit = getLibCompilationUnit(fullName);
1279        if (libUnit != null) {
1280          for(int j = 0; j < libUnit.getNumTypeDecl(); j++) {
1281            TypeDecl type = libUnit.getTypeDecl(j);
1282            if(type.fullName().equals(fullName)) {
1283              return type;
1284            }
1285          }
1286        }
1287        // No type found in the library
1288        return null;
1289      }
1290      /**
1291       * @apilevel internal
1292       */
1293      protected java.util.Map getLibCompilationUnit_String_values;
1294      /**
1295       * @apilevel internal
1296       */
1297      protected List getLibCompilationUnit_String_list;
1298      /**
1299       * @attribute syn
1300       * @aspect LookupFullyQualifiedTypes
1301       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:213
1302       */
1303      @SuppressWarnings({"unchecked", "cast"})
1304      public CompilationUnit getLibCompilationUnit(String fullName) {
1305        Object _parameters = fullName;
1306        if(getLibCompilationUnit_String_values == null) getLibCompilationUnit_String_values = new java.util.HashMap(4);
1307        if(getLibCompilationUnit_String_values.containsKey(_parameters)) {
1308          return (CompilationUnit)getLibCompilationUnit_String_values.get(_parameters);
1309        }
1310          ASTNode$State state = state();
1311      int num = state.boundariesCrossed;
1312      boolean isFinal = this.is$Final();
1313        CompilationUnit getLibCompilationUnit_String_value = getLibCompilationUnit_compute(fullName);
1314        if(getLibCompilationUnit_String_list == null) {
1315          getLibCompilationUnit_String_list = new List();
1316          getLibCompilationUnit_String_list.is$Final = true;
1317          getLibCompilationUnit_String_list.setParent(this);
1318        }
1319        getLibCompilationUnit_String_list.add(getLibCompilationUnit_String_value);
1320        if(getLibCompilationUnit_String_value != null) {
1321          getLibCompilationUnit_String_value = (CompilationUnit)getLibCompilationUnit_String_list.getChild(getLibCompilationUnit_String_list.numChildren-1);
1322          getLibCompilationUnit_String_value.is$Final = true;
1323        }
1324      if(true){ getLibCompilationUnit_String_values.put(_parameters, getLibCompilationUnit_String_value); }
1325            return getLibCompilationUnit_String_value;
1326      }
1327      /**
1328       * @apilevel internal
1329       */
1330      private CompilationUnit getLibCompilationUnit_compute(String fullName) {
1331        return getCompilationUnit(fullName);
1332      }
1333      /**
1334       * @apilevel internal
1335       */
1336      protected boolean getPrimitiveCompilationUnit_computed = false;
1337      /**
1338       * @apilevel internal
1339       */
1340      protected PrimitiveCompilationUnit getPrimitiveCompilationUnit_value;
1341      /**
1342       * @attribute syn
1343       * @aspect PrimitiveTypes
1344       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/PrimitiveTypes.jrag:219
1345       */
1346      @SuppressWarnings({"unchecked", "cast"})
1347      public PrimitiveCompilationUnit getPrimitiveCompilationUnit() {
1348        if(getPrimitiveCompilationUnit_computed) {
1349          return getPrimitiveCompilationUnit_value;
1350        }
1351          ASTNode$State state = state();
1352      int num = state.boundariesCrossed;
1353      boolean isFinal = this.is$Final();
1354        getPrimitiveCompilationUnit_value = getPrimitiveCompilationUnit_compute();
1355        getPrimitiveCompilationUnit_value.setParent(this);
1356        getPrimitiveCompilationUnit_value.is$Final = true;
1357      if(true){ getPrimitiveCompilationUnit_computed = true; }
1358            return getPrimitiveCompilationUnit_value;
1359      }
1360      /**
1361       * @apilevel internal
1362       */
1363      private PrimitiveCompilationUnit getPrimitiveCompilationUnit_compute() {    
1364        PrimitiveCompilationUnit u = new PrimitiveCompilationUnit();
1365        u.setPackageDecl(PRIMITIVE_PACKAGE_NAME);
1366        return u;
1367      }
1368      /**
1369       * @apilevel internal
1370       */
1371      protected boolean unknownConstructor_computed = false;
1372      /**
1373       * @apilevel internal
1374       */
1375      protected ConstructorDecl unknownConstructor_value;
1376      /**
1377       * @attribute syn
1378       * @aspect TypeAnalysis
1379       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:245
1380       */
1381      @SuppressWarnings({"unchecked", "cast"})
1382      public ConstructorDecl unknownConstructor() {
1383        if(unknownConstructor_computed) {
1384          return unknownConstructor_value;
1385        }
1386          ASTNode$State state = state();
1387      int num = state.boundariesCrossed;
1388      boolean isFinal = this.is$Final();
1389        unknownConstructor_value = unknownConstructor_compute();
1390      if(isFinal && num == state().boundariesCrossed){ unknownConstructor_computed = true; }
1391            return unknownConstructor_value;
1392      }
1393      /**
1394       * @apilevel internal
1395       */
1396      private ConstructorDecl unknownConstructor_compute() {
1397        return (ConstructorDecl)unknownType().constructors().iterator().next();
1398      }
1399      /**
1400       * @apilevel internal
1401       */
1402      protected boolean wildcards_computed = false;
1403      /**
1404       * @apilevel internal
1405       */
1406      protected WildcardsCompilationUnit wildcards_value;
1407      /**
1408       * @attribute syn
1409       * @aspect LookupParTypeDecl
1410       * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Generics.jrag:1358
1411       */
1412      @SuppressWarnings({"unchecked", "cast"})
1413      public WildcardsCompilationUnit wildcards() {
1414        if(wildcards_computed) {
1415          return wildcards_value;
1416        }
1417          ASTNode$State state = state();
1418      int num = state.boundariesCrossed;
1419      boolean isFinal = this.is$Final();
1420        wildcards_value = wildcards_compute();
1421        wildcards_value.setParent(this);
1422        wildcards_value.is$Final = true;
1423      if(true){ wildcards_computed = true; }
1424            return wildcards_value;
1425      }
1426      /**
1427       * @apilevel internal
1428       */
1429      private WildcardsCompilationUnit wildcards_compute() {
1430        return new WildcardsCompilationUnit(
1431          "wildcards",
1432          new List(),
1433          new List()
1434        );
1435      }
1436      /**
1437       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/AnonymousClasses.jrag:16
1438       * @apilevel internal
1439       */
1440      public TypeDecl Define_TypeDecl_superType(ASTNode caller, ASTNode child) {
1441         {
1442          int childIndex = this.getIndexOfChild(caller);
1443          return null;
1444        }
1445      }
1446      /**
1447       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/AnonymousClasses.jrag:26
1448       * @apilevel internal
1449       */
1450      public ConstructorDecl Define_ConstructorDecl_constructorDecl(ASTNode caller, ASTNode child) {
1451         {
1452          int childIndex = this.getIndexOfChild(caller);
1453          return null;
1454        }
1455      }
1456      /**
1457       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Arrays.jrag:19
1458       * @apilevel internal
1459       */
1460      public TypeDecl Define_TypeDecl_componentType(ASTNode caller, ASTNode child) {
1461         {
1462          int childIndex = this.getIndexOfChild(caller);
1463          return unknownType();
1464        }
1465      }
1466      /**
1467       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/BranchTarget.jrag:172
1468       * @apilevel internal
1469       */
1470      public LabeledStmt Define_LabeledStmt_lookupLabel(ASTNode caller, ASTNode child, String name) {
1471         {
1472          int childIndex = this.getIndexOfChild(caller);
1473          return null;
1474        }
1475      }
1476      /**
1477       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:16
1478       * @apilevel internal
1479       */
1480      public boolean Define_boolean_isDest(ASTNode caller, ASTNode child) {
1481         {
1482          int childIndex = this.getIndexOfChild(caller);
1483          return false;
1484        }
1485      }
1486      /**
1487       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:26
1488       * @apilevel internal
1489       */
1490      public boolean Define_boolean_isSource(ASTNode caller, ASTNode child) {
1491         {
1492          int childIndex = this.getIndexOfChild(caller);
1493          return true;
1494        }
1495      }
1496      /**
1497       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:50
1498       * @apilevel internal
1499       */
1500      public boolean Define_boolean_isIncOrDec(ASTNode caller, ASTNode child) {
1501         {
1502          int childIndex = this.getIndexOfChild(caller);
1503          return false;
1504        }
1505      }
1506      /**
1507       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:324
1508       * @apilevel internal
1509       */
1510      public boolean Define_boolean_isDAbefore(ASTNode caller, ASTNode child, Variable v) {
1511         {
1512          int childIndex = this.getIndexOfChild(caller);
1513          return true;
1514        }
1515      }
1516      /**
1517       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:710
1518       * @apilevel internal
1519       */
1520      public boolean Define_boolean_isDUbefore(ASTNode caller, ASTNode child, Variable v) {
1521         {
1522          int childIndex = this.getIndexOfChild(caller);
1523          return true;
1524        }
1525      }
1526      /**
1527       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ExceptionHandling.jrag:13
1528       * @apilevel internal
1529       */
1530      public TypeDecl Define_TypeDecl_typeException(ASTNode caller, ASTNode child) {
1531         {
1532          int childIndex = this.getIndexOfChild(caller);
1533          return lookupType("java.lang", "Exception");
1534        }
1535      }
1536      /**
1537       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ExceptionHandling.jrag:15
1538       * @apilevel internal
1539       */
1540      public TypeDecl Define_TypeDecl_typeRuntimeException(ASTNode caller, ASTNode child) {
1541         {
1542          int childIndex = this.getIndexOfChild(caller);
1543          return lookupType("java.lang", "RuntimeException");
1544        }
1545      }
1546      /**
1547       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ExceptionHandling.jrag:17
1548       * @apilevel internal
1549       */
1550      public TypeDecl Define_TypeDecl_typeError(ASTNode caller, ASTNode child) {
1551         {
1552          int childIndex = this.getIndexOfChild(caller);
1553          return lookupType("java.lang", "Error");
1554        }
1555      }
1556      /**
1557       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ExceptionHandling.jrag:19
1558       * @apilevel internal
1559       */
1560      public TypeDecl Define_TypeDecl_typeNullPointerException(ASTNode caller, ASTNode child) {
1561         {
1562          int childIndex = this.getIndexOfChild(caller);
1563          return lookupType("java.lang", "NullPointerException");
1564        }
1565      }
1566      /**
1567       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ExceptionHandling.jrag:21
1568       * @apilevel internal
1569       */
1570      public TypeDecl Define_TypeDecl_typeThrowable(ASTNode caller, ASTNode child) {
1571         {
1572          int childIndex = this.getIndexOfChild(caller);
1573          return lookupType("java.lang", "Throwable");
1574        }
1575      }
1576      /**
1577       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ExceptionHandling.jrag:137
1578       * @apilevel internal
1579       */
1580      public boolean Define_boolean_handlesException(ASTNode caller, ASTNode child, TypeDecl exceptionType) {
1581         { 
1582       int childIndex = this.getIndexOfChild(caller);
1583    {
1584        throw new Error("Operation handlesException not supported");
1585      }
1586        }
1587      }
1588      /**
1589       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupConstructor.jrag:15
1590       * @apilevel internal
1591       */
1592      public Collection Define_Collection_lookupConstructor(ASTNode caller, ASTNode child) {
1593         {
1594          int childIndex = this.getIndexOfChild(caller);
1595          return Collections.EMPTY_LIST;
1596        }
1597      }
1598      /**
1599       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupConstructor.jrag:24
1600       * @apilevel internal
1601       */
1602      public Collection Define_Collection_lookupSuperConstructor(ASTNode caller, ASTNode child) {
1603         {
1604          int childIndex = this.getIndexOfChild(caller);
1605          return Collections.EMPTY_LIST;
1606        }
1607      }
1608      /**
1609       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupMethod.jrag:21
1610       * @apilevel internal
1611       */
1612      public Expr Define_Expr_nestedScope(ASTNode caller, ASTNode child) {
1613         { 
1614       int childIndex = this.getIndexOfChild(caller);
1615    { throw new UnsupportedOperationException(); }
1616        }
1617      }
1618      /**
1619       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupMethod.jrag:33
1620       * @apilevel internal
1621       */
1622      public Collection Define_Collection_lookupMethod(ASTNode caller, ASTNode child, String name) {
1623         {
1624          int childIndex = this.getIndexOfChild(caller);
1625          return Collections.EMPTY_LIST;
1626        }
1627      }
1628      /**
1629       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:18
1630       * @apilevel internal
1631       */
1632      public TypeDecl Define_TypeDecl_typeObject(ASTNode caller, ASTNode child) {
1633         {
1634          int childIndex = this.getIndexOfChild(caller);
1635          return typeObject();
1636        }
1637      }
1638      /**
1639       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:19
1640       * @apilevel internal
1641       */
1642      public TypeDecl Define_TypeDecl_typeCloneable(ASTNode caller, ASTNode child) {
1643         {
1644          int childIndex = this.getIndexOfChild(caller);
1645          return typeCloneable();
1646        }
1647      }
1648      /**
1649       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:20
1650       * @apilevel internal
1651       */
1652      public TypeDecl Define_TypeDecl_typeSerializable(ASTNode caller, ASTNode child) {
1653         {
1654          int childIndex = this.getIndexOfChild(caller);
1655          return typeSerializable();
1656        }
1657      }
1658      /**
1659       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:31
1660       * @apilevel internal
1661       */
1662      public TypeDecl Define_TypeDecl_typeBoolean(ASTNode caller, ASTNode child) {
1663         {
1664          int childIndex = this.getIndexOfChild(caller);
1665          return typeBoolean();
1666        }
1667      }
1668      /**
1669       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:32
1670       * @apilevel internal
1671       */
1672      public TypeDecl Define_TypeDecl_typeByte(ASTNode caller, ASTNode child) {
1673         {
1674          int childIndex = this.getIndexOfChild(caller);
1675          return typeByte();
1676        }
1677      }
1678      /**
1679       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:33
1680       * @apilevel internal
1681       */
1682      public TypeDecl Define_TypeDecl_typeShort(ASTNode caller, ASTNode child) {
1683         {
1684          int childIndex = this.getIndexOfChild(caller);
1685          return typeShort();
1686        }
1687      }
1688      /**
1689       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:34
1690       * @apilevel internal
1691       */
1692      public TypeDecl Define_TypeDecl_typeChar(ASTNode caller, ASTNode child) {
1693         {
1694          int childIndex = this.getIndexOfChild(caller);
1695          return typeChar();
1696        }
1697      }
1698      /**
1699       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:35
1700       * @apilevel internal
1701       */
1702      public TypeDecl Define_TypeDecl_typeInt(ASTNode caller, ASTNode child) {
1703         {
1704          int childIndex = this.getIndexOfChild(caller);
1705          return typeInt();
1706        }
1707      }
1708      /**
1709       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:36
1710       * @apilevel internal
1711       */
1712      public TypeDecl Define_TypeDecl_typeLong(ASTNode caller, ASTNode child) {
1713         {
1714          int childIndex = this.getIndexOfChild(caller);
1715          return typeLong();
1716        }
1717      }
1718      /**
1719       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:37
1720       * @apilevel internal
1721       */
1722      public TypeDecl Define_TypeDecl_typeFloat(ASTNode caller, ASTNode child) {
1723         {
1724          int childIndex = this.getIndexOfChild(caller);
1725          return typeFloat();
1726        }
1727      }
1728      /**
1729       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:38
1730       * @apilevel internal
1731       */
1732      public TypeDecl Define_TypeDecl_typeDouble(ASTNode caller, ASTNode child) {
1733         {
1734          int childIndex = this.getIndexOfChild(caller);
1735          return typeDouble();
1736        }
1737      }
1738      /**
1739       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:39
1740       * @apilevel internal
1741       */
1742      public TypeDecl Define_TypeDecl_typeString(ASTNode caller, ASTNode child) {
1743         {
1744          int childIndex = this.getIndexOfChild(caller);
1745          return typeString();
1746        }
1747      }
1748      /**
1749       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:42
1750       * @apilevel internal
1751       */
1752      public TypeDecl Define_TypeDecl_typeVoid(ASTNode caller, ASTNode child) {
1753         {
1754          int childIndex = this.getIndexOfChild(caller);
1755          return typeVoid();
1756        }
1757      }
1758      /**
1759       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:44
1760       * @apilevel internal
1761       */
1762      public TypeDecl Define_TypeDecl_typeNull(ASTNode caller, ASTNode child) {
1763         {
1764          int childIndex = this.getIndexOfChild(caller);
1765          return typeNull();
1766        }
1767      }
1768      /**
1769       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:47
1770       * @apilevel internal
1771       */
1772      public TypeDecl Define_TypeDecl_unknownType(ASTNode caller, ASTNode child) {
1773         {
1774          int childIndex = this.getIndexOfChild(caller);
1775          return unknownType();
1776        }
1777      }
1778      /**
1779       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:81
1780       * @apilevel internal
1781       */
1782      public boolean Define_boolean_hasPackage(ASTNode caller, ASTNode child, String packageName) {
1783         {
1784          int childIndex = this.getIndexOfChild(caller);
1785          return hasPackage(packageName);
1786        }
1787      }
1788      /**
1789       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:151
1790       * @apilevel internal
1791       */
1792      public TypeDecl Define_TypeDecl_lookupType(ASTNode caller, ASTNode child, String packageName, String typeName) {
1793         {
1794          int childIndex = this.getIndexOfChild(caller);
1795          return lookupType(packageName, typeName);
1796        }
1797      }
1798      /**
1799       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:266
1800       * @apilevel internal
1801       */
1802      public SimpleSet Define_SimpleSet_lookupType(ASTNode caller, ASTNode child, String name) {
1803         {
1804          int childIndex = this.getIndexOfChild(caller);
1805          return SimpleSet.emptySet;
1806        }
1807      }
1808      /**
1809       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupVariable.jrag:24
1810       * @apilevel internal
1811       */
1812      public SimpleSet Define_SimpleSet_lookupVariable(ASTNode caller, ASTNode child, String name) {
1813         {
1814          int childIndex = this.getIndexOfChild(caller);
1815          return SimpleSet.emptySet;
1816        }
1817      }
1818      /**
1819       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:290
1820       * @apilevel internal
1821       */
1822      public boolean Define_boolean_mayBePublic(ASTNode caller, ASTNode child) {
1823         {
1824          int childIndex = this.getIndexOfChild(caller);
1825          return false;
1826        }
1827      }
1828      /**
1829       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:291
1830       * @apilevel internal
1831       */
1832      public boolean Define_boolean_mayBeProtected(ASTNode caller, ASTNode child) {
1833         {
1834          int childIndex = this.getIndexOfChild(caller);
1835          return false;
1836        }
1837      }
1838      /**
1839       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:292
1840       * @apilevel internal
1841       */
1842      public boolean Define_boolean_mayBePrivate(ASTNode caller, ASTNode child) {
1843         {
1844          int childIndex = this.getIndexOfChild(caller);
1845          return false;
1846        }
1847      }
1848      /**
1849       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:293
1850       * @apilevel internal
1851       */
1852      public boolean Define_boolean_mayBeStatic(ASTNode caller, ASTNode child) {
1853         {
1854          int childIndex = this.getIndexOfChild(caller);
1855          return false;
1856        }
1857      }
1858      /**
1859       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:294
1860       * @apilevel internal
1861       */
1862      public boolean Define_boolean_mayBeFinal(ASTNode caller, ASTNode child) {
1863         {
1864          int childIndex = this.getIndexOfChild(caller);
1865          return false;
1866        }
1867      }
1868      /**
1869       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:295
1870       * @apilevel internal
1871       */
1872      public boolean Define_boolean_mayBeAbstract(ASTNode caller, ASTNode child) {
1873         {
1874          int childIndex = this.getIndexOfChild(caller);
1875          return false;
1876        }
1877      }
1878      /**
1879       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:296
1880       * @apilevel internal
1881       */
1882      public boolean Define_boolean_mayBeVolatile(ASTNode caller, ASTNode child) {
1883         {
1884          int childIndex = this.getIndexOfChild(caller);
1885          return false;
1886        }
1887      }
1888      /**
1889       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:297
1890       * @apilevel internal
1891       */
1892      public boolean Define_boolean_mayBeTransient(ASTNode caller, ASTNode child) {
1893         {
1894          int childIndex = this.getIndexOfChild(caller);
1895          return false;
1896        }
1897      }
1898      /**
1899       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:298
1900       * @apilevel internal
1901       */
1902      public boolean Define_boolean_mayBeStrictfp(ASTNode caller, ASTNode child) {
1903         {
1904          int childIndex = this.getIndexOfChild(caller);
1905          return false;
1906        }
1907      }
1908      /**
1909       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:299
1910       * @apilevel internal
1911       */
1912      public boolean Define_boolean_mayBeSynchronized(ASTNode caller, ASTNode child) {
1913         {
1914          int childIndex = this.getIndexOfChild(caller);
1915          return false;
1916        }
1917      }
1918      /**
1919       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:300
1920       * @apilevel internal
1921       */
1922      public boolean Define_boolean_mayBeNative(ASTNode caller, ASTNode child) {
1923         {
1924          int childIndex = this.getIndexOfChild(caller);
1925          return false;
1926        }
1927      }
1928      /**
1929       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/NameCheck.jrag:249
1930       * @apilevel internal
1931       */
1932      public ASTNode Define_ASTNode_enclosingBlock(ASTNode caller, ASTNode child) {
1933         {
1934          int childIndex = this.getIndexOfChild(caller);
1935          return null;
1936        }
1937      }
1938      /**
1939       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/NameCheck.jrag:300
1940       * @apilevel internal
1941       */
1942      public VariableScope Define_VariableScope_outerScope(ASTNode caller, ASTNode child) {
1943         { 
1944       int childIndex = this.getIndexOfChild(caller);
1945    {
1946        throw new UnsupportedOperationException("outerScope() not defined");
1947      }
1948        }
1949      }
1950      /**
1951       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/NameCheck.jrag:368
1952       * @apilevel internal
1953       */
1954      public boolean Define_boolean_insideLoop(ASTNode caller, ASTNode child) {
1955         {
1956          int childIndex = this.getIndexOfChild(caller);
1957          return false;
1958        }
1959      }
1960      /**
1961       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/NameCheck.jrag:375
1962       * @apilevel internal
1963       */
1964      public boolean Define_boolean_insideSwitch(ASTNode caller, ASTNode child) {
1965         {
1966          int childIndex = this.getIndexOfChild(caller);
1967          return false;
1968        }
1969      }
1970      /**
1971       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/NameCheck.jrag:425
1972       * @apilevel internal
1973       */
1974      public Case Define_Case_bind(ASTNode caller, ASTNode child, Case c) {
1975         {
1976          int childIndex = this.getIndexOfChild(caller);
1977          return null;
1978        }
1979      }
1980      /**
1981       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/PrettyPrint.jadd:354
1982       * @apilevel internal
1983       */
1984      public String Define_String_typeDeclIndent(ASTNode caller, ASTNode child) {
1985         {
1986          int childIndex = this.getIndexOfChild(caller);
1987          return "";
1988        }
1989      }
1990      /**
1991       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/SyntacticClassification.jrag:64
1992       * @apilevel internal
1993       */
1994      public NameType Define_NameType_nameType(ASTNode caller, ASTNode child) {
1995         {
1996          int childIndex = this.getIndexOfChild(caller);
1997          return NameType.NO_NAME;
1998        }
1999      }
2000      /**
2001       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:219
2002       * @apilevel internal
2003       */
2004      public boolean Define_boolean_isAnonymous(ASTNode caller, ASTNode child) {
2005         {
2006          int childIndex = this.getIndexOfChild(caller);
2007          return false;
2008        }
2009      }
2010      /**
2011       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:233
2012       * @apilevel internal
2013       */
2014      public Variable Define_Variable_unknownField(ASTNode caller, ASTNode child) {
2015         {
2016          int childIndex = this.getIndexOfChild(caller);
2017          return unknownType().findSingleVariable("unknown");
2018        }
2019      }
2020      /**
2021       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:237
2022       * @apilevel internal
2023       */
2024      public MethodDecl Define_MethodDecl_unknownMethod(ASTNode caller, ASTNode child) {
2025         { 
2026       int childIndex = this.getIndexOfChild(caller);
2027    {
2028        for(Iterator iter = unknownType().memberMethods("unknown").iterator(); iter.hasNext(); ) {
2029          MethodDecl m = (MethodDecl)iter.next();
2030          return m;
2031        }
2032        throw new Error("Could not find method unknown in type Unknown");
2033      }
2034        }
2035      }
2036      /**
2037       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:244
2038       * @apilevel internal
2039       */
2040      public ConstructorDecl Define_ConstructorDecl_unknownConstructor(ASTNode caller, ASTNode child) {
2041         {
2042          int childIndex = this.getIndexOfChild(caller);
2043          return unknownConstructor();
2044        }
2045      }
2046      /**
2047       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:256
2048       * @apilevel internal
2049       */
2050      public TypeDecl Define_TypeDecl_declType(ASTNode caller, ASTNode child) {
2051         {
2052          int i = this.getIndexOfChild(caller);
2053          return null;
2054        }
2055      }
2056      /**
2057       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:513
2058       * @apilevel internal
2059       */
2060      public BodyDecl Define_BodyDecl_enclosingBodyDecl(ASTNode caller, ASTNode child) {
2061         {
2062          int childIndex = this.getIndexOfChild(caller);
2063          return null;
2064        }
2065      }
2066      /**
2067       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:531
2068       * @apilevel internal
2069       */
2070      public boolean Define_boolean_isMemberType(ASTNode caller, ASTNode child) {
2071         {
2072          int childIndex = this.getIndexOfChild(caller);
2073          return false;
2074        }
2075      }
2076      /**
2077       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:582
2078       * @apilevel internal
2079       */
2080      public TypeDecl Define_TypeDecl_hostType(ASTNode caller, ASTNode child) {
2081         {
2082          int childIndex = this.getIndexOfChild(caller);
2083          return null;
2084        }
2085      }
2086      /**
2087       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeCheck.jrag:360
2088       * @apilevel internal
2089       */
2090      public TypeDecl Define_TypeDecl_switchType(ASTNode caller, ASTNode child) {
2091         {
2092          int childIndex = this.getIndexOfChild(caller);
2093          return unknownType();
2094        }
2095      }
2096      /**
2097       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeCheck.jrag:406
2098       * @apilevel internal
2099       */
2100      public TypeDecl Define_TypeDecl_returnType(ASTNode caller, ASTNode child) {
2101         {
2102          int childIndex = this.getIndexOfChild(caller);
2103          return typeVoid();
2104        }
2105      }
2106      /**
2107       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeCheck.jrag:506
2108       * @apilevel internal
2109       */
2110      public TypeDecl Define_TypeDecl_enclosingInstance(ASTNode caller, ASTNode child) {
2111         {
2112          int childIndex = this.getIndexOfChild(caller);
2113          return null;
2114        }
2115      }
2116      /**
2117       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeHierarchyCheck.jrag:14
2118       * @apilevel internal
2119       */
2120      public String Define_String_methodHost(ASTNode caller, ASTNode child) {
2121         { 
2122       int childIndex = this.getIndexOfChild(caller);
2123    {
2124        throw new Error("Needs extra equation for methodHost()");
2125      }
2126        }
2127      }
2128      /**
2129       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeHierarchyCheck.jrag:128
2130       * @apilevel internal
2131       */
2132      public boolean Define_boolean_inExplicitConstructorInvocation(ASTNode caller, ASTNode child) {
2133         {
2134          int childIndex = this.getIndexOfChild(caller);
2135          return false;
2136        }
2137      }
2138      /**
2139       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeHierarchyCheck.jrag:137
2140       * @apilevel internal
2141       */
2142      public boolean Define_boolean_inStaticContext(ASTNode caller, ASTNode child) {
2143         {
2144          int childIndex = this.getIndexOfChild(caller);
2145          return false;
2146        }
2147      }
2148      /**
2149       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/UnreachableStatements.jrag:162
2150       * @apilevel internal
2151       */
2152      public boolean Define_boolean_reportUnreachable(ASTNode caller, ASTNode child) {
2153         {
2154          int childIndex = this.getIndexOfChild(caller);
2155          return true;
2156        }
2157      }
2158      /**
2159       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/VariableDeclaration.jrag:68
2160       * @apilevel internal
2161       */
2162      public boolean Define_boolean_isMethodParameter(ASTNode caller, ASTNode child) {
2163         {
2164          int childIndex = this.getIndexOfChild(caller);
2165          return false;
2166        }
2167      }
2168      /**
2169       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/VariableDeclaration.jrag:69
2170       * @apilevel internal
2171       */
2172      public boolean Define_boolean_isConstructorParameter(ASTNode caller, ASTNode child) {
2173         {
2174          int childIndex = this.getIndexOfChild(caller);
2175          return false;
2176        }
2177      }
2178      /**
2179       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/VariableDeclaration.jrag:70
2180       * @apilevel internal
2181       */
2182      public boolean Define_boolean_isExceptionHandlerParameter(ASTNode caller, ASTNode child) {
2183         {
2184          int childIndex = this.getIndexOfChild(caller);
2185          return false;
2186        }
2187      }
2188      /**
2189       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:47
2190       * @apilevel internal
2191       */
2192      public int Define_int_variableScopeEndLabel(ASTNode caller, ASTNode child, CodeGeneration gen) {
2193         { 
2194       int i = this.getIndexOfChild(caller);
2195    {
2196        throw new Error("variableScopeEndLabel not valid from here");
2197      }
2198        }
2199      }
2200      /**
2201       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CreateBCode.jrag:974
2202       * @apilevel internal
2203       */
2204      public int Define_int_condition_false_label(ASTNode caller, ASTNode child) {
2205         { 
2206       int i = this.getIndexOfChild(caller);
2207    {
2208        throw new Error("condition_false_label not implemented");
2209      }
2210        }
2211      }
2212      /**
2213       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CreateBCode.jrag:978
2214       * @apilevel internal
2215       */
2216      public int Define_int_condition_true_label(ASTNode caller, ASTNode child) {
2217         { 
2218       int i = this.getIndexOfChild(caller);
2219    {
2220        throw new Error("condition_true_label not implemented");
2221      }
2222        }
2223      }
2224      /**
2225       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/InnerClasses.jrag:64
2226       * @apilevel internal
2227       */
2228      public TypeDecl Define_TypeDecl_expectedType(ASTNode caller, ASTNode child) {
2229         {
2230          int i = this.getIndexOfChild(caller);
2231          return null;
2232        }
2233      }
2234      /**
2235       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/LocalNum.jrag:15
2236       * @apilevel internal
2237       */
2238      public int Define_int_localNum(ASTNode caller, ASTNode child) {
2239         {
2240          int index = this.getIndexOfChild(caller);
2241          return 0;
2242        }
2243      }
2244      /**
2245       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/LocalNum.jrag:46
2246       * @apilevel internal
2247       */
2248      public int Define_int_resultSaveLocalNum(ASTNode caller, ASTNode child) {
2249         { 
2250       int childIndex = this.getIndexOfChild(caller);
2251    {
2252        throw new Error("Unsupported operation resultSaveLocalNum");
2253      }
2254        }
2255      }
2256      /**
2257       * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Annotations.jrag:94
2258       * @apilevel internal
2259       */
2260      public boolean Define_boolean_mayUseAnnotationTarget(ASTNode caller, ASTNode child, String name) {
2261         {
2262          int childIndex = this.getIndexOfChild(caller);
2263          return false;
2264        }
2265      }
2266      /**
2267       * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Annotations.jrag:180
2268       * @apilevel internal
2269       */
2270      public ElementValue Define_ElementValue_lookupElementTypeValue(ASTNode caller, ASTNode child, String name) {
2271         {
2272          int childIndex = this.getIndexOfChild(caller);
2273          return null;
2274        }
2275      }
2276      /**
2277       * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Annotations.jrag:269
2278       * @apilevel internal
2279       */
2280      public boolean Define_boolean_withinSuppressWarnings(ASTNode caller, ASTNode child, String s) {
2281         {
2282          int childIndex = this.getIndexOfChild(caller);
2283          return false;
2284        }
2285      }
2286      /**
2287       * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Annotations.jrag:371
2288       * @apilevel internal
2289       */
2290      public boolean Define_boolean_withinDeprecatedAnnotation(ASTNode caller, ASTNode child) {
2291         {
2292          int childIndex = this.getIndexOfChild(caller);
2293          return false;
2294        }
2295      }
2296      /**
2297       * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Annotations.jrag:430
2298       * @apilevel internal
2299       */
2300      public Annotation Define_Annotation_lookupAnnotation(ASTNode caller, ASTNode child, TypeDecl typeDecl) {
2301         {
2302          int i = this.getIndexOfChild(caller);
2303          return null;
2304        }
2305      }
2306      /**
2307       * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Annotations.jrag:463
2308       * @apilevel internal
2309       */
2310      public TypeDecl Define_TypeDecl_enclosingAnnotationDecl(ASTNode caller, ASTNode child) {
2311         {
2312          int childIndex = this.getIndexOfChild(caller);
2313          return unknownType();
2314        }
2315      }
2316      /**
2317       * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericMethodsInference.jrag:39
2318       * @apilevel internal
2319       */
2320      public TypeDecl Define_TypeDecl_assignConvertedType(ASTNode caller, ASTNode child) {
2321         {
2322          int childIndex = this.getIndexOfChild(caller);
2323          return typeNull();
2324        }
2325      }
2326      /**
2327       * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Generics.jrag:267
2328       * @apilevel internal
2329       */
2330      public boolean Define_boolean_inExtendsOrImplements(ASTNode caller, ASTNode child) {
2331         {
2332          int childIndex = this.getIndexOfChild(caller);
2333          return false;
2334        }
2335      }
2336      /**
2337       * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Generics.jrag:1385
2338       * @apilevel internal
2339       */
2340      public TypeDecl Define_TypeDecl_typeWildcard(ASTNode caller, ASTNode child) {
2341         {
2342          int childIndex = this.getIndexOfChild(caller);
2343          return wildcards().typeWildcard();
2344        }
2345      }
2346      /**
2347       * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Generics.jrag:1396
2348       * @apilevel internal
2349       */
2350      public TypeDecl Define_TypeDecl_lookupWildcardExtends(ASTNode caller, ASTNode child, TypeDecl typeDecl) {
2351         {
2352          int childIndex = this.getIndexOfChild(caller);
2353          return wildcards().lookupWildcardExtends(typeDecl);
2354        }
2355      }
2356      /**
2357       * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Generics.jrag:1409
2358       * @apilevel internal
2359       */
2360      public TypeDecl Define_TypeDecl_lookupWildcardSuper(ASTNode caller, ASTNode child, TypeDecl typeDecl) {
2361         {
2362          int childIndex = this.getIndexOfChild(caller);
2363          return wildcards().lookupWildcardSuper(typeDecl);
2364        }
2365      }
2366      /**
2367       * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Generics.jrag:1431
2368       * @apilevel internal
2369       */
2370      public LUBType Define_LUBType_lookupLUBType(ASTNode caller, ASTNode child, Collection bounds) {
2371         {
2372          int childIndex = this.getIndexOfChild(caller);
2373          return wildcards().lookupLUBType(bounds);
2374        }
2375      }
2376      /**
2377       * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Generics.jrag:1469
2378       * @apilevel internal
2379       */
2380      public GLBType Define_GLBType_lookupGLBType(ASTNode caller, ASTNode child, ArrayList bounds) {
2381         {
2382          int childIndex = this.getIndexOfChild(caller);
2383          return wildcards().lookupGLBType(bounds);
2384        }
2385      }
2386      /**
2387       * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericsParTypeDecl.jrag:46
2388       * @apilevel internal
2389       */
2390      public TypeDecl Define_TypeDecl_genericDecl(ASTNode caller, ASTNode child) {
2391         {
2392          int childIndex = this.getIndexOfChild(caller);
2393          return null;
2394        }
2395      }
2396      /**
2397       * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/VariableArityParameters.jrag:24
2398       * @apilevel internal
2399       */
2400      public boolean Define_boolean_variableArityValid(ASTNode caller, ASTNode child) {
2401         {
2402          int childIndex = this.getIndexOfChild(caller);
2403          return false;
2404        }
2405      }
2406      /**
2407       * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/PreciseRethrow.jrag:122
2408       * @apilevel internal
2409       */
2410      public boolean Define_boolean_isCatchParam(ASTNode caller, ASTNode child) {
2411         {
2412          int i = this.getIndexOfChild(caller);
2413          return false;
2414        }
2415      }
2416      /**
2417       * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/PreciseRethrow.jrag:130
2418       * @apilevel internal
2419       */
2420      public CatchClause Define_CatchClause_catchClause(ASTNode caller, ASTNode child) {
2421         { 
2422       int i = this.getIndexOfChild(caller);
2423    {
2424             throw new IllegalStateException("Could not find parent " +
2425                             "catch clause");
2426     }
2427        }
2428      }
2429      /**
2430       * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/TryWithResources.jrag:154
2431       * @apilevel internal
2432       */
2433      public boolean Define_boolean_resourcePreviouslyDeclared(ASTNode caller, ASTNode child, String name) {
2434         {
2435          int i = this.getIndexOfChild(caller);
2436          return false;
2437        }
2438      }
2439      /**
2440       * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/TypeInference.jrag:70
2441       * @apilevel internal
2442       */
2443      public ClassInstanceExpr Define_ClassInstanceExpr_getClassInstanceExpr(ASTNode caller, ASTNode child) {
2444         {
2445          int i = this.getIndexOfChild(caller);
2446          return null;
2447        }
2448      }
2449      /**
2450       * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/TypeInference.jrag:462
2451       * @apilevel internal
2452       */
2453      public boolean Define_boolean_isAnonymousDecl(ASTNode caller, ASTNode child) {
2454         {
2455          int childIndex = this.getIndexOfChild(caller);
2456          return false;
2457        }
2458      }
2459      /**
2460       * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/TypeInference.jrag:479
2461       * @apilevel internal
2462       */
2463      public boolean Define_boolean_isExplicitGenericConstructorAccess(ASTNode caller, ASTNode child) {
2464         {
2465          int i = this.getIndexOfChild(caller);
2466          return false;
2467        }
2468      }
2469      /**
2470       * @apilevel internal
2471       */
2472      public ASTNode rewriteTo() {
2473        return super.rewriteTo();
2474      }
2475    }