]> source.dussan.org Git - aspectj.git/commitdiff
removed unused code and chewed on by formatter
authoraclement <aclement>
Thu, 28 Aug 2008 16:26:41 +0000 (16:26 +0000)
committeraclement <aclement>
Thu, 28 Aug 2008 16:26:41 +0000 (16:26 +0000)
asm/src/org/aspectj/asm/AsmManager.java
asm/src/org/aspectj/asm/internal/OptimizedFullPathHandleProvider.java [deleted file]
asm/src/org/aspectj/asm/internal/ProgramElement.java

index f32e9c1bbb57936f85f472119514c1e6ed7aa8ac..5f47f958bb7654117ce1322386c5b3ec64124104 100644 (file)
@@ -11,7 +11,6 @@
  *    Andy Clement     incremental support and switch on/off state
  * ******************************************************************/
 
-
 package org.aspectj.asm;
 
 import java.io.BufferedWriter;
@@ -43,61 +42,64 @@ import org.aspectj.asm.internal.RelationshipMap;
 import org.aspectj.bridge.ISourceLocation;
 
 /**
- * The Abstract Structure Model (ASM) represents the containment hierarchy and crossccutting
- * structure map for AspectJ programs.  It is used by IDE views such as the document outline,
- * and by other tools such as ajdoc to show both AspectJ declarations and crosscutting links,
- * such as which advice affects which join point shadows.
+ * The Abstract Structure Model (ASM) represents the containment hierarchy and crossccutting structure map for AspectJ programs. It
+ * is used by IDE views such as the document outline, and by other tools such as ajdoc to show both AspectJ declarations and
+ * crosscutting links, such as which advice affects which join point shadows.
  * 
  * @author Mik Kersten
  */
 public class AsmManager {
-       
+
        /**
-        * @deprecated  use getDefault() method instead
-        */  
+        * @deprecated use getDefault() method instead
+        */
        private static AsmManager INSTANCE = new AsmManager();
-       
 
-    private IElementHandleProvider handleProvider;
-    private List structureListeners = new ArrayList();
-//     private boolean shouldSaveModel = true;
+       private IElementHandleProvider handleProvider;
+       private List structureListeners = new ArrayList();
+
+       // private boolean shouldSaveModel = true;
+
+       public void setRelationshipMap(IRelationshipMap irm) {
+               mapper = irm;
+       }
+
+       public void setHierarchy(IHierarchy ih) {
+               hierarchy = ih;
+       }
 
-       
-       public void setRelationshipMap(IRelationshipMap irm) { mapper = irm;}
-       public void setHierarchy(IHierarchy ih) { hierarchy=ih;}
-       
        // The model is 'manipulated' by the AjBuildManager.setupModel() code which trashes all the
        // fields when setting up a new model for a batch build.
        // Due to the requirements of incremental compilation we need to tie some of the info
        // below to the AjState for a compilation and recover it if switching between projects.
        protected IHierarchy hierarchy;
        private IRelationshipMap mapper;
-       
+
        private static boolean creatingModel = false;
-       public static  boolean dumpModelPostBuild = false; // Dumping the model is expensive
+       public static boolean dumpModelPostBuild = false; // Dumping the model is expensive
        // SECRETAPI asc pull the secret options together into a system API you lazy fool
-       public static  boolean attemptIncrementalModelRepairs = false;
+       public static boolean attemptIncrementalModelRepairs = false;
 
-    // For offline debugging, you can now ask for the AsmManager to
-    // dump the model - see the method setReporting()
+       // For offline debugging, you can now ask for the AsmManager to
+       // dump the model - see the method setReporting()
        private static boolean dumpModel = false;
        private static boolean dumpRelationships = false;
        private static boolean dumpDeltaProcessing = false;
        private static IModelFilter modelFilter = null;
-       private static String  dumpFilename = "";
+       private static String dumpFilename = "";
        private static boolean reporting = false;
 
        private static boolean completingTypeBindings = false;
-       
-//     static {
-//             setReporting("c:/model.nfo",true,true,true,true);
-//     }
-       
-    protected AsmManager() {
-               handleProvider = new JDTLikeHandleProvider();
-       createNewASM();
-    }
-       
+
+       // static {
+       // setReporting("c:/model.nfo",true,true,true,true);
+       // }
+
+       protected AsmManager() {
+               handleProvider = new JDTLikeHandleProvider();
+               createNewASM();
+       }
+
        public void createNewASM() {
                hierarchy = new AspectJElementHierarchy();
                mapper = new RelationshipMap(hierarchy);
@@ -106,281 +108,278 @@ public class AsmManager {
                handleProvider.initialize();
        }
 
-    public IHierarchy getHierarchy() {
-        return hierarchy;      
+       public IHierarchy getHierarchy() {
+               return hierarchy;
        }
 
        public static AsmManager getDefault() {
                return INSTANCE;
        }
-       
+
        public IRelationshipMap getRelationshipMap() {
                return mapper;
        }
 
        public void fireModelUpdated() {
-               notifyListeners();      
+               notifyListeners();
                if (dumpModelPostBuild && hierarchy.getConfigFile() != null) {
                        writeStructureModel(hierarchy.getConfigFile());
                }
        }
 
-    /**
-     * Constructs map each time it's called.
-     */
-    public HashMap getInlineAnnotations(
-       String sourceFile, 
-       boolean showSubMember, 
-       boolean showMemberAndType) { 
-
-        if (!hierarchy.isValid()) return null;
-               
-        HashMap annotations = new HashMap();
-        IProgramElement node = hierarchy.findElementForSourceFile(sourceFile);
-        if (node == IHierarchy.NO_STRUCTURE) {
-            return null;
-        } else {
-            IProgramElement fileNode = node;
-            ArrayList peNodes = new ArrayList();
-            getAllStructureChildren(fileNode, peNodes, showSubMember, showMemberAndType);
-            for (Iterator it = peNodes.iterator(); it.hasNext(); ) {
-                IProgramElement peNode = (IProgramElement)it.next();
-                List entries = new ArrayList();
-                entries.add(peNode);
-                ISourceLocation sourceLoc = peNode.getSourceLocation();
-                if (null != sourceLoc) {
-                    Integer hash = new Integer(sourceLoc.getLine());
-                    List existingEntry = (List)annotations.get(hash);
-                    if (existingEntry != null) {
-                        entries.addAll(existingEntry);
-                    }
-                    annotations.put(hash, entries);
-                }
-            }
-            return annotations;
-        }
-    }
-
-    private void getAllStructureChildren(IProgramElement node, List result, boolean showSubMember, boolean showMemberAndType) {
-        List children = node.getChildren();
-        if (node.getChildren() == null) return;
-        for (Iterator it = children.iterator(); it.hasNext(); ) {
-                       IProgramElement next = (IProgramElement)it.next();
-            List rels = AsmManager.getDefault().getRelationshipMap().get(next);
-            if (next != null
-               && ((next.getKind() == IProgramElement.Kind.CODE && showSubMember) 
-               || (next.getKind() != IProgramElement.Kind.CODE && showMemberAndType))
-               && rels != null 
-               && rels.size() > 0) {
-                result.add(next);
-            }
-            getAllStructureChildren(next, result, showSubMember, showMemberAndType);
-        }
-    }
-
-    public void addListener(IHierarchyListener listener) {
-        structureListeners.add(listener);
-    }
-
-    public void removeStructureListener(IHierarchyListener listener) {
-        structureListeners.remove(listener);
-    }
+       /**
+        * Constructs map each time it's called.
+        */
+       public HashMap getInlineAnnotations(String sourceFile, boolean showSubMember, boolean showMemberAndType) {
+
+               if (!hierarchy.isValid())
+                       return null;
+
+               HashMap annotations = new HashMap();
+               IProgramElement node = hierarchy.findElementForSourceFile(sourceFile);
+               if (node == IHierarchy.NO_STRUCTURE) {
+                       return null;
+               } else {
+                       IProgramElement fileNode = node;
+                       ArrayList peNodes = new ArrayList();
+                       getAllStructureChildren(fileNode, peNodes, showSubMember, showMemberAndType);
+                       for (Iterator it = peNodes.iterator(); it.hasNext();) {
+                               IProgramElement peNode = (IProgramElement) it.next();
+                               List entries = new ArrayList();
+                               entries.add(peNode);
+                               ISourceLocation sourceLoc = peNode.getSourceLocation();
+                               if (null != sourceLoc) {
+                                       Integer hash = new Integer(sourceLoc.getLine());
+                                       List existingEntry = (List) annotations.get(hash);
+                                       if (existingEntry != null) {
+                                               entries.addAll(existingEntry);
+                                       }
+                                       annotations.put(hash, entries);
+                               }
+                       }
+                       return annotations;
+               }
+       }
+
+       private void getAllStructureChildren(IProgramElement node, List result, boolean showSubMember, boolean showMemberAndType) {
+               List children = node.getChildren();
+               if (node.getChildren() == null)
+                       return;
+               for (Iterator it = children.iterator(); it.hasNext();) {
+                       IProgramElement next = (IProgramElement) it.next();
+                       List rels = AsmManager.getDefault().getRelationshipMap().get(next);
+                       if (next != null
+                                       && ((next.getKind() == IProgramElement.Kind.CODE && showSubMember) || (next.getKind() != IProgramElement.Kind.CODE && showMemberAndType))
+                                       && rels != null && rels.size() > 0) {
+                               result.add(next);
+                       }
+                       getAllStructureChildren(next, result, showSubMember, showMemberAndType);
+               }
+       }
+
+       public void addListener(IHierarchyListener listener) {
+               structureListeners.add(listener);
+       }
+
+       public void removeStructureListener(IHierarchyListener listener) {
+               structureListeners.remove(listener);
+       }
 
        // this shouldn't be needed - but none of the people that add listeners
        // in the test suite ever remove them. AMC added this to be called in
-       // setup() so that the test cases would cease leaking listeners and go 
+       // setup() so that the test cases would cease leaking listeners and go
        // back to executing at a reasonable speed.
        public void removeAllListeners() {
                structureListeners.clear();
        }
 
-    private void notifyListeners() {
-        for (Iterator it = structureListeners.iterator(); it.hasNext(); ) {
-            ((IHierarchyListener)it.next()).elementsUpdated(hierarchy);
-        }
-    }
-
-    public IElementHandleProvider getHandleProvider() {
-        return handleProvider;
-    }
-    
-    public void setHandleProvider(IElementHandleProvider handleProvider) {
-        this.handleProvider = handleProvider;
-    }
-    
+       private void notifyListeners() {
+               for (Iterator it = structureListeners.iterator(); it.hasNext();) {
+                       ((IHierarchyListener) it.next()).elementsUpdated(hierarchy);
+               }
+       }
+
+       public IElementHandleProvider getHandleProvider() {
+               return handleProvider;
+       }
+
+       public void setHandleProvider(IElementHandleProvider handleProvider) {
+               this.handleProvider = handleProvider;
+       }
+
        /**
         * Fails silently.
         */
-    public void writeStructureModel(String configFilePath) {
-        try {
-            String filePath = genExternFilePath(configFilePath);
-            FileOutputStream fos = new FileOutputStream(filePath);
-            ObjectOutputStream s = new ObjectOutputStream(fos);
-            s.writeObject(hierarchy); // Store the program element tree
-            s.writeObject(mapper); // Store the relationships
-            s.flush();
-            fos.flush();
-            fos.close();
-            s.close();
-        } catch (Exception e) {
-            // System.err.println("AsmManager: Unable to write structure model: "+configFilePath+" because of:");
-            // e.printStackTrace();
-        }
-    }
-  
-       /**
-        * @todo        add proper handling of bad paths/suffixes/etc
-        * @param       configFilePath          path to an ".lst" file
-        */
-    public void readStructureModel(String configFilePath) {
-       boolean hierarchyReadOK = false;
-        try {
-            if (configFilePath == null) {
-               hierarchy.setRoot(IHierarchy.NO_STRUCTURE);
-            } else {
-                   String filePath = genExternFilePath(configFilePath);
-                   FileInputStream in = new FileInputStream(filePath);
-                   ObjectInputStream s = new ObjectInputStream(in);
-                   hierarchy = (AspectJElementHierarchy)s.readObject();
-                   hierarchyReadOK = true;
-                   mapper = (RelationshipMap)s.readObject();
-                   ((RelationshipMap)mapper).setHierarchy(hierarchy);
-            }
-        } catch (FileNotFoundException fnfe) {
-               // That is OK
+       public void writeStructureModel(String configFilePath) {
+               try {
+                       String filePath = genExternFilePath(configFilePath);
+                       FileOutputStream fos = new FileOutputStream(filePath);
+                       ObjectOutputStream s = new ObjectOutputStream(fos);
+                       s.writeObject(hierarchy); // Store the program element tree
+                       s.writeObject(mapper); // Store the relationships
+                       s.flush();
+                       fos.flush();
+                       fos.close();
+                       s.close();
+               } catch (Exception e) {
+                       // System.err.println("AsmManager: Unable to write structure model: "+configFilePath+" because of:");
+                       // e.printStackTrace();
+               }
+       }
+
+       /**
+        * @todo add proper handling of bad paths/suffixes/etc
+        * @param configFilePath path to an ".lst" file
+        */
+       public void readStructureModel(String configFilePath) {
+               boolean hierarchyReadOK = false;
+               try {
+                       if (configFilePath == null) {
+                               hierarchy.setRoot(IHierarchy.NO_STRUCTURE);
+                       } else {
+                               String filePath = genExternFilePath(configFilePath);
+                               FileInputStream in = new FileInputStream(filePath);
+                               ObjectInputStream s = new ObjectInputStream(in);
+                               hierarchy = (AspectJElementHierarchy) s.readObject();
+                               hierarchyReadOK = true;
+                               mapper = (RelationshipMap) s.readObject();
+                               ((RelationshipMap) mapper).setHierarchy(hierarchy);
+                       }
+               } catch (FileNotFoundException fnfe) {
+                       // That is OK
                        hierarchy.setRoot(IHierarchy.NO_STRUCTURE);
                } catch (EOFException eofe) {
                        // Might be an old format sym file that is missing its relationships
                        if (!hierarchyReadOK) {
-                               System.err.println("AsmManager: Unable to read structure model: "+configFilePath+" because of:");
+                               System.err.println("AsmManager: Unable to read structure model: " + configFilePath + " because of:");
                                eofe.printStackTrace();
                                hierarchy.setRoot(IHierarchy.NO_STRUCTURE);
                        }
-        } catch (Exception e) {
-            // System.err.println("AsmManager: Unable to read structure model: "+configFilePath+" because of:");
-            // e.printStackTrace();
-            hierarchy.setRoot(IHierarchy.NO_STRUCTURE);
-        } finally {
-               notifyListeners();      
-        }
-    }
-
-    private String genExternFilePath(String configFilePath) {
-       // sometimes don't have ".lst"
-       if (configFilePath.lastIndexOf(".lst") != -1) {
-                       configFilePath = configFilePath.substring(0,configFilePath.lastIndexOf(".lst"));
+               } catch (Exception e) {
+                       // System.err.println("AsmManager: Unable to read structure model: "+configFilePath+" because of:");
+                       // e.printStackTrace();
+                       hierarchy.setRoot(IHierarchy.NO_STRUCTURE);
+               } finally {
+                       notifyListeners();
                }
-        return configFilePath + ".ajsym";
-    }
-    
-//     public void setShouldSaveModel(boolean shouldSaveModel) {
-//             this.shouldSaveModel = shouldSaveModel;
-//     }
-       
+       }
+
+       private String genExternFilePath(String configFilePath) {
+               // sometimes don't have ".lst"
+               if (configFilePath.lastIndexOf(".lst") != -1) {
+                       configFilePath = configFilePath.substring(0, configFilePath.lastIndexOf(".lst"));
+               }
+               return configFilePath + ".ajsym";
+       }
+
+       // public void setShouldSaveModel(boolean shouldSaveModel) {
+       // this.shouldSaveModel = shouldSaveModel;
+       // }
+
        // ==== implementation of canonical file path map and accessors ==============
 
-       // a more sophisticated optimisation is left here commented out as the 
-       // performance gains don't justify the disturbance this close to a release...   
+       // a more sophisticated optimisation is left here commented out as the
+       // performance gains don't justify the disturbance this close to a release...
        // can't call prepareForWeave until preparedForCompilation has completed...
-//     public synchronized void prepareForCompilation(List files) {
-//             canonicalFilePathMap.prepopulate(files);
-//     }
-//     
-//     public synchronized void prepareForWeave() {
-//             canonicalFilePathMap.handover();
-//     }
-       
+       // public synchronized void prepareForCompilation(List files) {
+       // canonicalFilePathMap.prepopulate(files);
+       // }
+       //      
+       // public synchronized void prepareForWeave() {
+       // canonicalFilePathMap.handover();
+       // }
+
        public String getCanonicalFilePath(File f) {
                return canonicalFilePathMap.get(f);
        }
-       
+
        private CanonicalFilePathMap canonicalFilePathMap = new CanonicalFilePathMap();
-       
+
        private static class CanonicalFilePathMap {
                private static final int MAX_SIZE = 4000;
-               
+
                private Map pathMap = new HashMap(20);
 
-//             // guards to ensure correctness and liveness
-//             private boolean cacheInUse = false;
-//             private boolean stopRequested = false;
-//             
-//             private synchronized boolean isCacheInUse() {
-//                     return cacheInUse;
-//             }
-//             
-//             private synchronized void setCacheInUse(boolean val) {
-//                     cacheInUse = val;
-//                     if (val) {
-//                             notifyAll();
-//                     } 
-//             }
-//             
-//             private synchronized boolean isStopRequested() {
-//                     return stopRequested;
-//             }
-//             
-//             private synchronized void requestStop() {
-//                     stopRequested = true;
-//             }
-//             
-//             /**
-//              * Begin prepopulating the map by adding an entry from
-//              * file.getPath -> file.getCanonicalPath for each file in
-//              * the list. Do this on a background thread.
-//              * @param files
-//              */
-//             public void prepopulate(final List files) {
-//                         stopRequested = false;
-//                             setCacheInUse(false);
-//                         if (pathMap.size() > MAX_SIZE) {
-//                             pathMap.clear();
-//                         }
-//                             new Thread() {
-//                                     public void run() {
-//                                             System.out.println("Starting cache population: " + System.currentTimeMillis());
-//                                             Iterator it = files.iterator();
-//                                             while (!isStopRequested() && it.hasNext()) {
-//                                                     File f = (File)it.next();
-//                                                     if (pathMap.get(f.getPath()) == null) {
-//                                                             // may reuse cache across compiles from ides... 
-//                                                             try {                                                           
-//                                                                     pathMap.put(f.getPath(),f.getCanonicalPath());
-//                                                             } catch (IOException ex) {
-//                                                                     pathMap.put(f.getPath(),f.getPath());
-//                                                             }
-//                                                     }
-//                                             }
-//                                             System.out.println("Cached " + files.size());
-//                                             setCacheInUse(true);
-//                                             System.out.println("Cache populated: " + System.currentTimeMillis());
-//                                     }
-//                             }.start();
-//             }
-//             
-//             /**
-//              * Stop pre-populating the cache - our customers are ready to use it.
-//              * If there are any cache misses from this point on, we'll populate the
-//              * cache as we go.
-//              * The handover is done this way to ensure that only one thread is ever
-//              * accessing the cache, and that we minimize synchronization.
-//              */
-//             public synchronized void handover() {
-//                     if (!isCacheInUse()) {
-//                             requestStop();
-//                             try {
-//                                     while (!isCacheInUse()) wait();
-//                             } catch (InterruptedException intEx) { } // just continue
-//                     }
-//             }
-               
+               // // guards to ensure correctness and liveness
+               // private boolean cacheInUse = false;
+               // private boolean stopRequested = false;
+               //              
+               // private synchronized boolean isCacheInUse() {
+               // return cacheInUse;
+               // }
+               //              
+               // private synchronized void setCacheInUse(boolean val) {
+               // cacheInUse = val;
+               // if (val) {
+               // notifyAll();
+               // }
+               // }
+               //              
+               // private synchronized boolean isStopRequested() {
+               // return stopRequested;
+               // }
+               //              
+               // private synchronized void requestStop() {
+               // stopRequested = true;
+               // }
+               //              
+               // /**
+               // * Begin prepopulating the map by adding an entry from
+               // * file.getPath -> file.getCanonicalPath for each file in
+               // * the list. Do this on a background thread.
+               // * @param files
+               // */
+               // public void prepopulate(final List files) {
+               // stopRequested = false;
+               // setCacheInUse(false);
+               // if (pathMap.size() > MAX_SIZE) {
+               // pathMap.clear();
+               // }
+               // new Thread() {
+               // public void run() {
+               // System.out.println("Starting cache population: " + System.currentTimeMillis());
+               // Iterator it = files.iterator();
+               // while (!isStopRequested() && it.hasNext()) {
+               // File f = (File)it.next();
+               // if (pathMap.get(f.getPath()) == null) {
+               // // may reuse cache across compiles from ides...
+               // try {
+               // pathMap.put(f.getPath(),f.getCanonicalPath());
+               // } catch (IOException ex) {
+               // pathMap.put(f.getPath(),f.getPath());
+               // }
+               // }
+               // }
+               // System.out.println("Cached " + files.size());
+               // setCacheInUse(true);
+               // System.out.println("Cache populated: " + System.currentTimeMillis());
+               // }
+               // }.start();
+               // }
+               //              
+               // /**
+               // * Stop pre-populating the cache - our customers are ready to use it.
+               // * If there are any cache misses from this point on, we'll populate the
+               // * cache as we go.
+               // * The handover is done this way to ensure that only one thread is ever
+               // * accessing the cache, and that we minimize synchronization.
+               // */
+               // public synchronized void handover() {
+               // if (!isCacheInUse()) {
+               // requestStop();
+               // try {
+               // while (!isCacheInUse()) wait();
+               // } catch (InterruptedException intEx) { } // just continue
+               // }
+               // }
+
                public String get(File f) {
-//                     if (!cacheInUse) {  // unsynchronized test - should never be parallel 
-//                                             // threads at this point
-//                             throw new IllegalStateException(
-//                                     "Must take ownership of cache before using by calling " +
-//                                     "handover()");
-//                     }
+                       // if (!cacheInUse) { // unsynchronized test - should never be parallel
+                       // // threads at this point
+                       // throw new IllegalStateException(
+                       // "Must take ownership of cache before using by calling " +
+                       // "handover()");
+                       // }
                        String ret = (String) pathMap.get(f.getPath());
                        if (ret == null) {
                                try {
@@ -388,60 +387,61 @@ public class AsmManager {
                                } catch (IOException ioEx) {
                                        ret = f.getPath();
                                }
-                               pathMap.put(f.getPath(),ret);
-                               if (pathMap.size() > MAX_SIZE) pathMap.clear();
+                               pathMap.put(f.getPath(), ret);
+                               if (pathMap.size() > MAX_SIZE)
+                                       pathMap.clear();
                        }
                        return ret;
                }
        }
 
        // SECRETAPI
-       public static void setReporting(String filename,boolean dModel,boolean dRels,boolean dDeltaProcessing,
-                                                 boolean deletefile) {
-               reporting         = true;
-               dumpModel         = dModel;
+       public static void setReporting(String filename, boolean dModel, boolean dRels, boolean dDeltaProcessing, boolean deletefile) {
+               reporting = true;
+               dumpModel = dModel;
                dumpRelationships = dRels;
                dumpDeltaProcessing = dDeltaProcessing;
-               if (deletefile) new File(filename).delete();
-               dumpFilename      = filename;
+               if (deletefile)
+                       new File(filename).delete();
+               dumpFilename = filename;
        }
-       
-       public static void setReporting(String filename,boolean dModel,boolean dRels,boolean dDeltaProcessing,
-            boolean deletefile,IModelFilter aFilter) {
-               setReporting(filename,dModel,dRels,dDeltaProcessing,deletefile);
+
+       public static void setReporting(String filename, boolean dModel, boolean dRels, boolean dDeltaProcessing, boolean deletefile,
+                       IModelFilter aFilter) {
+               setReporting(filename, dModel, dRels, dDeltaProcessing, deletefile);
                modelFilter = aFilter;
        }
-       
+
        public static boolean isReporting() {
                return reporting;
        }
-       
+
        public static void setDontReport() {
                reporting = false;
-               dumpDeltaProcessing=false;
-               dumpModel=false;
-               dumpRelationships=false;
+               dumpDeltaProcessing = false;
+               dumpModel = false;
+               dumpRelationships = false;
        }
-       
 
        // NB. If the format of this report changes then the model tests
-       // (@see org.aspectj.systemtest.model.ModelTestCase) will fail in 
-       // their comparison. The tests are assuming that both the model 
+       // (@see org.aspectj.systemtest.model.ModelTestCase) will fail in
+       // their comparison. The tests are assuming that both the model
        // and relationship map are reported and as a consequence single
        // testcases test that both the model and relationship map are correct.
        public void reportModelInfo(String reasonForReport) {
-               if (!dumpModel && !dumpRelationships) return;
+               if (!dumpModel && !dumpRelationships)
+                       return;
                try {
-                       FileWriter fw = new FileWriter(dumpFilename,true);
+                       FileWriter fw = new FileWriter(dumpFilename, true);
                        BufferedWriter bw = new BufferedWriter(fw);
                        if (dumpModel) {
-                               bw.write("=== MODEL STATUS REPORT ========= "+reasonForReport+"\n");
-                               dumptree(bw,AsmManager.getDefault().getHierarchy().getRoot(),0);
-                               
+                               bw.write("=== MODEL STATUS REPORT ========= " + reasonForReport + "\n");
+                               dumptree(bw, AsmManager.getDefault().getHierarchy().getRoot(), 0);
+
                                bw.write("=== END OF MODEL REPORT =========\n");
                        }
                        if (dumpRelationships) {
-                               bw.write("=== RELATIONSHIPS REPORT ========= "+reasonForReport+"\n");
+                               bw.write("=== RELATIONSHIPS REPORT ========= " + reasonForReport + "\n");
                                dumprels(bw);
                                bw.write("=== END OF RELATIONSHIPS REPORT ==\n");
                        }
@@ -449,8 +449,8 @@ public class AsmManager {
                        Enumeration pkeyenum = p.keys();
                        bw.write("=== Properties of the model and relationships map =====\n");
                        while (pkeyenum.hasMoreElements()) {
-                               String pkey = (String)pkeyenum.nextElement();
-                               bw.write(pkey+"="+p.getProperty(pkey)+"\n");
+                               String pkey = (String) pkeyenum.nextElement();
+                               bw.write(pkey + "=" + p.getProperty(pkey) + "\n");
                        }
                        bw.flush();
                        fw.close();
@@ -459,321 +459,334 @@ public class AsmManager {
                        e.printStackTrace();
                }
        }
-       
 
-       public static void dumptree(Writer w,IProgramElement node,int indent) throws IOException {
-               for (int i =0 ;i<indent;i++) w.write(" ");
+       public static void dumptree(Writer w, IProgramElement node, int indent) throws IOException {
+               for (int i = 0; i < indent; i++)
+                       w.write(" ");
                String loc = "";
-               if (node!=null) { 
-                       if (node.getSourceLocation()!=null) {
+               if (node != null) {
+                       if (node.getSourceLocation() != null) {
                                loc = node.getSourceLocation().toString();
-                               if (modelFilter!=null) loc = modelFilter.processFilelocation(loc);
+                               if (modelFilter != null)
+                                       loc = modelFilter.processFilelocation(loc);
                        }
                }
-               w.write(node+"  ["+(node==null?"null":node.getKind().toString())+"] "+loc+"\n");
-               if (node!=null) 
-               for (Iterator i = node.getChildren().iterator();i.hasNext();) {
-                       dumptree(w,(IProgramElement)i.next(),indent+2);
-               }
+               w.write(node + "  [" + (node == null ? "null" : node.getKind().toString()) + "] " + loc + "\n");
+               if (node != null)
+                       for (Iterator i = node.getChildren().iterator(); i.hasNext();) {
+                               dumptree(w, (IProgramElement) i.next(), indent + 2);
+                       }
        }
-       
-       public static void dumptree(IProgramElement node,int indent) throws IOException {
-               for (int i =0 ;i<indent;i++) System.out.print(" ");
+
+       public static void dumptree(IProgramElement node, int indent) throws IOException {
+               for (int i = 0; i < indent; i++)
+                       System.out.print(" ");
                String loc = "";
-               if (node!=null) { 
-                       if (node.getSourceLocation()!=null) 
+               if (node != null) {
+                       if (node.getSourceLocation() != null)
                                loc = node.getSourceLocation().toString();
                }
-               System.out.println(node+"  ["+(node==null?"null":node.getKind().toString())+"] "+loc);
-               if (node!=null) 
-               for (Iterator i = node.getChildren().iterator();i.hasNext();) {
-                       dumptree((IProgramElement)i.next(),indent+2);
-               }
+               System.out.println(node + "  [" + (node == null ? "null" : node.getKind().toString()) + "] " + loc);
+               if (node != null)
+                       for (Iterator i = node.getChildren().iterator(); i.hasNext();) {
+                               dumptree((IProgramElement) i.next(), indent + 2);
+                       }
        }
-       
+
        private void dumprels(Writer w) throws IOException {
                IRelationshipMap irm = AsmManager.getDefault().getRelationshipMap();
                int ctr = 1;
                Set entries = irm.getEntries();
                for (Iterator iter = entries.iterator(); iter.hasNext();) {
                        String hid = (String) iter.next();
-                       List rels =  irm.get(hid);
+                       List rels = irm.get(hid);
                        for (Iterator iterator = rels.iterator(); iterator.hasNext();) {
                                IRelationship ir = (IRelationship) iterator.next();
                                List targets = ir.getTargets();
-                               for (Iterator iterator2 = targets.iterator();
-                                       iterator2.hasNext();
-                                       ) { 
+                               for (Iterator iterator2 = targets.iterator(); iterator2.hasNext();) {
                                        String thid = (String) iterator2.next();
                                        StringBuffer sb = new StringBuffer();
-                                       if (modelFilter==null || modelFilter.wantsHandleIds()) sb.append("Hid:"+(ctr++)+":");
-                                       sb.append("(targets="+targets.size()+") "+hid+" ("+ir.getName()+") "+thid+"\n");
+                                       if (modelFilter == null || modelFilter.wantsHandleIds())
+                                               sb.append("Hid:" + (ctr++) + ":");
+                                       sb.append("(targets=" + targets.size() + ") " + hid + " (" + ir.getName() + ") " + thid + "\n");
                                        w.write(sb.toString());
                                }
                        }
                }
        }
-       
+
        private void dumprelsStderr(String key) {
-               System.err.println("Relationships dump follows: "+key);
+               System.err.println("Relationships dump follows: " + key);
                IRelationshipMap irm = AsmManager.getDefault().getRelationshipMap();
                int ctr = 1;
                Set entries = irm.getEntries();
                for (Iterator iter = entries.iterator(); iter.hasNext();) {
                        String hid = (String) iter.next();
-                       List rels =  irm.get(hid);
+                       List rels = irm.get(hid);
                        for (Iterator iterator = rels.iterator(); iterator.hasNext();) {
                                IRelationship ir = (IRelationship) iterator.next();
                                List targets = ir.getTargets();
-                               for (Iterator iterator2 = targets.iterator();
-                                       iterator2.hasNext();
-                                       ) {
+                               for (Iterator iterator2 = targets.iterator(); iterator2.hasNext();) {
                                        String thid = (String) iterator2.next();
-                                       System.err.println("Hid:"+(ctr++)+":(targets="+targets.size()+") "+hid+" ("+ir.getName()+") "+thid);
+                                       System.err.println("Hid:" + (ctr++) + ":(targets=" + targets.size() + ") " + hid + " (" + ir.getName() + ") "
+                                                       + thid);
                                }
                        }
                }
-               System.err.println("End of relationships dump for: "+key);
+               System.err.println("End of relationships dump for: " + key);
        }
-       
-       //===================== DELTA PROCESSING CODE ============== start ==========//
-       
+
+       // ===================== DELTA PROCESSING CODE ============== start ==========//
+
        /**
-        * Removes the hierarchy structure for the specified files from the structure model.
-        * Returns true if it deleted anything
+        * Removes the hierarchy structure for the specified files from the structure model. Returns true if it deleted anything
         */
-       public boolean removeStructureModelForFiles(Writer fw,Collection files) throws IOException {
+       public boolean removeStructureModelForFiles(Writer fw, Collection files) throws IOException {
 
                IHierarchy model = AsmManager.getDefault().getHierarchy();
-               
+
                boolean modelModified = false;
-               
+
                Set deletedNodes = new HashSet();
                for (Iterator iter = files.iterator(); iter.hasNext();) {
                        File fileForCompilation = (File) iter.next();
                        String correctedPath = AsmManager.getDefault().getCanonicalFilePath(fileForCompilation);
-                       IProgramElement progElem = (IProgramElement)model.findInFileMap(correctedPath);
-                       if (progElem!=null) {
+                       IProgramElement progElem = (IProgramElement) model.findInFileMap(correctedPath);
+                       if (progElem != null) {
                                // Found it, let's remove it
                                if (dumpDeltaProcessing) {
-                                       fw.write("Deleting "+progElem+" node for file "+fileForCompilation+"\n");
+                                       fw.write("Deleting " + progElem + " node for file " + fileForCompilation + "\n");
                                }
                                removeNode(progElem);
                                deletedNodes.add(getCanonicalFilePath(progElem.getSourceLocation().getSourceFile()));
-                               if (!model.removeFromFileMap(correctedPath)) 
-                                               throw new RuntimeException("Whilst repairing model, couldn't remove entry for file: "+correctedPath+" from the filemap");
+                               if (!model.removeFromFileMap(correctedPath))
+                                       throw new RuntimeException("Whilst repairing model, couldn't remove entry for file: " + correctedPath
+                                                       + " from the filemap");
                                modelModified = true;
-                       } 
+                       }
                }
-               if (modelModified) model.updateHandleMap(deletedNodes);
+               if (modelModified)
+                       model.updateHandleMap(deletedNodes);
                return modelModified;
        }
-       
+
        // This code is *SLOW* but it isnt worth fixing until we address the
        // bugs in binary weaving.
-       public void fixupStructureModel(Writer fw,List filesToBeCompiled,Set files_added,Set files_deleted) throws IOException {
+       public void fixupStructureModel(Writer fw, List filesToBeCompiled, Set files_added, Set files_deleted) throws IOException {
                // Three kinds of things to worry about:
                // 1. New files have been added since the last compile
                // 2. Files have been deleted since the last compile
                // 3. Files have 'changed' since the last compile (really just those in config.getFiles())
-               
-               //  List files = config.getFiles();
+
+               // List files = config.getFiles();
                IHierarchy model = AsmManager.getDefault().getHierarchy();
-               
+
                boolean modelModified = false;
                // Files to delete are: those to be compiled + those that have been deleted
-               
+
                Set filesToRemoveFromStructureModel = new HashSet(filesToBeCompiled);
                filesToRemoveFromStructureModel.addAll(files_deleted);
                Set deletedNodes = new HashSet();
                for (Iterator iter = filesToRemoveFromStructureModel.iterator(); iter.hasNext();) {
                        File fileForCompilation = (File) iter.next();
                        String correctedPath = AsmManager.getDefault().getCanonicalFilePath(fileForCompilation);
-                       IProgramElement progElem = (IProgramElement)model.findInFileMap(correctedPath);
-                       if (progElem!=null) {
+                       IProgramElement progElem = (IProgramElement) model.findInFileMap(correctedPath);
+                       if (progElem != null) {
                                // Found it, let's remove it
                                if (dumpDeltaProcessing) {
-                                       fw.write("Deleting "+progElem+" node for file "+fileForCompilation+"\n");
+                                       fw.write("Deleting " + progElem + " node for file " + fileForCompilation + "\n");
                                }
                                removeNode(progElem);
                                deletedNodes.add(getCanonicalFilePath(progElem.getSourceLocation().getSourceFile()));
-                               if (!model.removeFromFileMap(correctedPath)) 
-                                               throw new RuntimeException("Whilst repairing model, couldn't remove entry for file: "+correctedPath+" from the filemap");
+                               if (!model.removeFromFileMap(correctedPath))
+                                       throw new RuntimeException("Whilst repairing model, couldn't remove entry for file: " + correctedPath
+                                                       + " from the filemap");
                                modelModified = true;
-                       } 
+                       }
                }
                if (modelModified) {
                        model.flushTypeMap();
                        model.updateHandleMap(deletedNodes);
                }
        }
-       
-       
+
        public void processDelta(Collection files_tobecompiled, Set files_added, Set files_deleted) {
 
                try {
                        Writer fw = null;
-                       
+
                        // Are we recording this ?
                        if (dumpDeltaProcessing) {
-                               FileWriter filew = new FileWriter(dumpFilename,true);
+                               FileWriter filew = new FileWriter(dumpFilename, true);
                                fw = new BufferedWriter(filew);
                                fw.write("=== Processing delta changes for the model ===\n");
-                               fw.write("Files for compilation:#"+files_tobecompiled.size()+":"+files_tobecompiled+"\n");
-                               fw.write("Files added          :#"+files_added.size()+":"+files_added+"\n");
-                               fw.write("Files deleted        :#"+files_deleted.size()+":"+files_deleted+"\n");
+                               fw.write("Files for compilation:#" + files_tobecompiled.size() + ":" + files_tobecompiled + "\n");
+                               fw.write("Files added          :#" + files_added.size() + ":" + files_added + "\n");
+                               fw.write("Files deleted        :#" + files_deleted.size() + ":" + files_deleted + "\n");
                        }
-                       
+
                        long stime = System.currentTimeMillis();
-                       
-                       //fixupStructureModel(fw,filesToBeCompiled,files_added,files_deleted);
+
+                       // fixupStructureModel(fw,filesToBeCompiled,files_added,files_deleted);
                        // Let's remove all the files that are deleted on this compile
-                       removeStructureModelForFiles(fw,files_deleted);
+                       removeStructureModelForFiles(fw, files_deleted);
                        long etime1 = System.currentTimeMillis(); // etime1-stime = time to fix up the model
-               
-                       repairRelationships(fw);        
+
+                       repairRelationships(fw);
                        long etime2 = System.currentTimeMillis(); // etime2-stime = time to repair the relationship map
-                       
-                       removeStructureModelForFiles(fw,files_tobecompiled);
+
+                       removeStructureModelForFiles(fw, files_tobecompiled);
 
                        if (dumpDeltaProcessing) {
                                fw.write("===== Delta Processing timing ==========\n");
-                               fw.write("Hierarchy="+(etime1-stime)+"ms   Relationshipmap="+(etime2-etime1)+"ms\n");
+                               fw.write("Hierarchy=" + (etime1 - stime) + "ms   Relationshipmap=" + (etime2 - etime1) + "ms\n");
                                fw.write("===== Traversal ========================\n");
-//                             fw.write("Source handles processed="+srchandlecounter+"\n");
-//                             fw.write("Target handles processed="+tgthandlecounter+"\n");
+                               // fw.write("Source handles processed="+srchandlecounter+"\n");
+                               // fw.write("Target handles processed="+tgthandlecounter+"\n");
                                fw.write("========================================\n");
-                               fw.flush();fw.close();
-                       
-                       }                       
+                               fw.flush();
+                               fw.close();
+
+                       }
                        reportModelInfo("After delta processing");
                } catch (IOException e) {
                        e.printStackTrace();
                }
 
        }
-       
+
        /**
         * two kinds of relationships
         * 
-        * A  affects    B
-        * B  affectedBy A
+        * A affects B B affectedBy A
         * 
-        * Both of these relationships are added when 'B' is modified.  Concrete examples are 
-        * 'advises/advisedby' or 'annotates/annotatedby'.
+        * Both of these relationships are added when 'B' is modified. Concrete examples are 'advises/advisedby' or
+        * 'annotates/annotatedby'.
         * 
-        * What we need to do is when 'B' is going to be woven, remove all relationships that may
-        * reoccur when it is woven.
-        * So - remove 'affects' relationships where the target is 'B', remove all 'affectedBy'
-        *     relationships where the source is 'B'.
+        * What we need to do is when 'B' is going to be woven, remove all relationships that may reoccur when it is woven. So - remove
+        * 'affects' relationships where the target is 'B', remove all 'affectedBy' relationships where the source is 'B'.
         * 
         */
        public void removeRelationshipsTargettingThisType(String typename) {
-               boolean debug=false;
-               if (debug) System.err.println(">>removeRelationshipsTargettingThisType "+typename);
+               boolean debug = false;
+               if (debug)
+                       System.err.println(">>removeRelationshipsTargettingThisType " + typename);
                String pkg = null;
-               String type= typename;
+               String type = typename;
                int lastSep = typename.lastIndexOf('.');
                if (lastSep != -1) {
-                       pkg = typename.substring(0,lastSep);
-                       type= typename.substring(lastSep+1);
+                       pkg = typename.substring(0, lastSep);
+                       type = typename.substring(lastSep + 1);
                }
-               boolean didsomething=false;
-               IProgramElement typeNode = hierarchy.findElementForType(pkg,type);
-               
+               boolean didsomething = false;
+               IProgramElement typeNode = hierarchy.findElementForType(pkg, type);
+
                // Reasons for that being null:
                // 1. the file has fundamental errors and so doesn't exist in the model (-proceedOnError probably forced us to weave)
-               if (typeNode == null) return;
+               if (typeNode == null)
+                       return;
 
-               Set sourcesToRemove  = new HashSet(); 
+               Set sourcesToRemove = new HashSet();
 
-               // Iterate over the source handles in the relationships map, the aim here is to remove any 'affected by' 
-               // relationships where the source of the relationship is the specified type (since it will be readded 
+               // Iterate over the source handles in the relationships map, the aim here is to remove any 'affected by'
+               // relationships where the source of the relationship is the specified type (since it will be readded
                // when the type is woven)
                Set sourcehandlesSet = mapper.getEntries();
                List relationshipsToRemove = new ArrayList();
                for (Iterator keyiter = sourcehandlesSet.iterator(); keyiter.hasNext();) {
-                       String hid = (String) keyiter.next();                   
-                       IProgramElement sourceElement = hierarchy.getElement(hid);
-                       if (sourceElement == null || sameType(hid,sourceElement,typeNode)) {
-                               // worth continuing as there may be a relationship to remove
-                               relationshipsToRemove.clear();
-                               List relationships = mapper.get(hid);
-                               for (Iterator reliter = relationships.iterator();reliter.hasNext();) {
+                       String hid = (String) keyiter.next();
+                       IProgramElement sourceElement = hierarchy.getElement(hid);
+                       if (sourceElement == null || sameType(hid, sourceElement, typeNode)) {
+                               // worth continuing as there may be a relationship to remove
+                               relationshipsToRemove.clear();
+                               List relationships = mapper.get(hid);
+                               for (Iterator reliter = relationships.iterator(); reliter.hasNext();) {
                                        IRelationship rel = (IRelationship) reliter.next();
-                                       if (rel.getKind()==IRelationship.Kind.USES_POINTCUT) continue; // these relationships are added at compile time, argh
-                                       if (rel.isAffects()) continue; // we want 'affected by' relationships - (e.g. advised by)
+                                       if (rel.getKind() == IRelationship.Kind.USES_POINTCUT)
+                                               continue; // these relationships are added at compile time, argh
+                                       if (rel.isAffects())
+                                               continue; // we want 'affected by' relationships - (e.g. advised by)
                                        relationshipsToRemove.add(rel); // all the relationships can be removed, regardless of the target(s)
                                }
                                // Now, were any relationships emptied during that processing and so need removing for this source handle
-                               if (relationshipsToRemove.size()>0) {
-                                       didsomething=true;
-                                       if (relationshipsToRemove.size() == relationships.size()) sourcesToRemove.add(hid);
+                               if (relationshipsToRemove.size() > 0) {
+                                       didsomething = true;
+                                       if (relationshipsToRemove.size() == relationships.size())
+                                               sourcesToRemove.add(hid);
                                        else {
-                                               for (int i = 0 ;i<relationshipsToRemove.size();i++)
+                                               for (int i = 0; i < relationshipsToRemove.size(); i++)
                                                        relationships.remove(relationshipsToRemove.get(i));
                                        }
                                }
-                       }
+                       }
                }
-//              Remove sources that have no valid relationships any more
+               // Remove sources that have no valid relationships any more
                for (Iterator srciter = sourcesToRemove.iterator(); srciter.hasNext();) {
                        String hid = (String) srciter.next();
-//                     System.err.println("  source handle: all relationships have gone for "+hid);
+                       // System.err.println("  source handle: all relationships have gone for "+hid);
                        mapper.removeAll(hid);
                        IProgramElement ipe = hierarchy.getElement(hid);
-                       if (ipe!=null) {
+                       if (ipe != null) {
                                // If the relationship was hanging off a 'code' node, delete it.
                                if (ipe.getKind().equals(IProgramElement.Kind.CODE)) {
-                                       if (debug) System.err.println("  source handle: it was code node, removing that as well... code="+ipe+" parent="+ipe.getParent());
+                                       if (debug)
+                                               System.err.println("  source handle: it was code node, removing that as well... code=" + ipe + " parent="
+                                                               + ipe.getParent());
                                        removeSingleNode(ipe);
-                               } 
+                               }
                        }
                }
-               
-               if (debug) dumprelsStderr("after processing 'affectedby'");
-       if (didsomething) {             // did we do anything?
-               sourcesToRemove.clear();
+
+               if (debug)
+                       dumprelsStderr("after processing 'affectedby'");
+               if (didsomething) { // did we do anything?
+                       sourcesToRemove.clear();
                        // removing 'affects' relationships
-                       if (debug) dumprelsStderr("before processing 'affects'");
+                       if (debug)
+                               dumprelsStderr("before processing 'affects'");
                        // Iterate over the source handles in the relationships map
                        sourcehandlesSet = mapper.getEntries();
                        for (Iterator keyiter = sourcehandlesSet.iterator(); keyiter.hasNext();) {
-                               String hid = (String) keyiter.next();                           
-                               relationshipsToRemove.clear();
-                               List relationships = mapper.get(hid);
-                               for (Iterator reliter = relationships.iterator();reliter.hasNext();) {
+                               String hid = (String) keyiter.next();
+                               relationshipsToRemove.clear();
+                               List relationships = mapper.get(hid);
+                               for (Iterator reliter = relationships.iterator(); reliter.hasNext();) {
                                        IRelationship rel = (IRelationship) reliter.next();
-                                       if (rel.getKind()==IRelationship.Kind.USES_POINTCUT) continue; // these relationships are added at compile time, argh
-                                       if (!rel.isAffects()) continue;
+                                       if (rel.getKind() == IRelationship.Kind.USES_POINTCUT)
+                                               continue; // these relationships are added at compile time, argh
+                                       if (!rel.isAffects())
+                                               continue;
                                        List targets = rel.getTargets();
                                        List targetsToRemove = new ArrayList();
-                                       
+
                                        // find targets that target the type we are interested in, they need removing
                                        for (Iterator targetsIter = targets.iterator(); targetsIter.hasNext();) {
-                                               String targethid = (String) targetsIter.next();                                 
+                                               String targethid = (String) targetsIter.next();
                                                // Does this point to the same type?
                                                IProgramElement existingTarget = hierarchy.getElement(targethid);
-                                               if (existingTarget == null || sameType(targethid,existingTarget,typeNode)) targetsToRemove.add(targethid);                                      
+                                               if (existingTarget == null || sameType(targethid, existingTarget, typeNode))
+                                                       targetsToRemove.add(targethid);
                                        }
-       
-                                       if (targetsToRemove.size()!=0) {
-                                               if (targetsToRemove.size()==targets.size()) relationshipsToRemove.add(rel);                                                     
+
+                                       if (targetsToRemove.size() != 0) {
+                                               if (targetsToRemove.size() == targets.size())
+                                                       relationshipsToRemove.add(rel);
                                                else {
                                                        // Remove all the targets that are no longer valid
-                                                       for (Iterator targsIter = targetsToRemove.iterator();targsIter.hasNext();) {
-                                                               String togo = (String) targsIter.next();
-                                                               targets.remove(togo);
-                                                       }
+                                                       for (Iterator targsIter = targetsToRemove.iterator(); targsIter.hasNext();) {
+                                                               String togo = (String) targsIter.next();
+                                                               targets.remove(togo);
+                                                       }
                                                }
                                        }
                                }
                                // Now, were any relationships emptied during that processing and so need removing for this source handle
-                               if (relationshipsToRemove.size()>0) {
+                               if (relationshipsToRemove.size() > 0) {
                                        // Are we removing *all* of the relationships for this source handle?
-                                       if (relationshipsToRemove.size() == relationships.size()) sourcesToRemove.add(hid);
+                                       if (relationshipsToRemove.size() == relationships.size())
+                                               sourcesToRemove.add(hid);
                                        else {
-                                               for (int i = 0 ;i<relationshipsToRemove.size();i++)
+                                               for (int i = 0; i < relationshipsToRemove.size(); i++)
                                                        relationships.remove(relationshipsToRemove.get(i));
                                        }
                                }
@@ -781,283 +794,298 @@ public class AsmManager {
                        // Remove sources that have no valid relationships any more
                        for (Iterator srciter = sourcesToRemove.iterator(); srciter.hasNext();) {
                                String hid = (String) srciter.next();
-       //                      System.err.println("  source handle: all relationships have gone for "+hid);
+                               // System.err.println("  source handle: all relationships have gone for "+hid);
                                mapper.removeAll(hid);
                                IProgramElement ipe = hierarchy.getElement(hid);
-                               if (ipe!=null) {
+                               if (ipe != null) {
                                        // If the relationship was hanging off a 'code' node, delete it.
                                        if (ipe.getKind().equals(IProgramElement.Kind.CODE)) {
-                                               if (debug) System.err.println("  source handle: it was code node, removing that as well... code="+ipe+" parent="+ipe.getParent());
+                                               if (debug)
+                                                       System.err.println("  source handle: it was code node, removing that as well... code=" + ipe
+                                                                       + " parent=" + ipe.getParent());
                                                removeSingleNode(ipe);
-                                       } 
+                                       }
                                }
                        }
-                       if (debug) dumprelsStderr("after processing 'affects'");
-       }
+                       if (debug)
+                               dumprelsStderr("after processing 'affects'");
+               }
 
-               if (debug) System.err.println("<<removeRelationshipsTargettingThisFile");
+               if (debug)
+                       System.err.println("<<removeRelationshipsTargettingThisFile");
        }
-       
+
        /**
         * Return true if the target element is in the type specified.
         */
-       private boolean sameType(String hid,IProgramElement target, IProgramElement type) {
+       private boolean sameType(String hid, IProgramElement target, IProgramElement type) {
                IProgramElement containingType = target;
-               if (target==null) 
+               if (target == null)
                        throw new RuntimeException("target can't be null!");
-               if (type==null) 
+               if (type == null)
                        throw new RuntimeException("type can't be null!");
                if (target.getKind().isSourceFile()) {
-                       // @AJ aspect with broken relationship endpoint - we couldn't find the real 
+                       // @AJ aspect with broken relationship endpoint - we couldn't find the real
                        // endpoint (the declare parents or ITD or similar) so defaulted to the
                        // first line of the source file...
-                       
+
                        // FRAGILE
                        // Let's assume the worst, and that it is the same type if the source files
-                       // are the same.  This will break for multiple top level types in a file...
-                       if (target.getSourceLocation()==null) return false; // these four possibilities should really be FIXED so we don't have this situation
-                       if (type.getSourceLocation()==null) return false;
-                       if (target.getSourceLocation().getSourceFile()==null) return false;
-                       if (type.getSourceLocation().getSourceFile()==null) return false;
+                       // are the same. This will break for multiple top level types in a file...
+                       if (target.getSourceLocation() == null)
+                               return false; // these four possibilities should really be FIXED so we don't have this situation
+                       if (type.getSourceLocation() == null)
+                               return false;
+                       if (target.getSourceLocation().getSourceFile() == null)
+                               return false;
+                       if (type.getSourceLocation().getSourceFile() == null)
+                               return false;
                        return (target.getSourceLocation().getSourceFile().equals(type.getSourceLocation().getSourceFile()));
                }
                while (!containingType.getKind().isType()) {
-//                     System.err.println("Checked: "+containingType.getKind()+" "+containingType);
+                       // System.err.println("Checked: "+containingType.getKind()+" "+containingType);
                        containingType = containingType.getParent();
                }
                return (type.equals(containingType));
        }
 
        /**
-        * Go through all the relationships in the model, if any endpoints no longer exist (the node it
-        * points to has been deleted from the model) then delete the relationship.  
+        * Go through all the relationships in the model, if any endpoints no longer exist (the node it points to has been deleted from
+        * the model) then delete the relationship.
         */
        private void repairRelationships(Writer fw) {
                try {
-               IHierarchy model = AsmManager.getDefault().getHierarchy();
-               //TODO Speed this code up by making this assumption:
-               // the only piece of the handle that is interesting is the file name.  We are working at file granularity, if the
-               // file does not exist (i.e. its not in the filemap) then any handle inside that file cannot exist.
-               if (dumpDeltaProcessing) fw.write("Repairing relationships map:\n");
-       
-               // Now sort out the relationships map
-               IRelationshipMap irm = AsmManager.getDefault().getRelationshipMap();
-               Set sourcesToRemove = new HashSet(); 
-               Set nonExistingHandles = new HashSet(); // Cache of handles that we *know* are invalid
-               int srchandlecounter = 0;
-               int tgthandlecounter = 0;
-               
-               // Iterate over the source handles in the relationships map
-               Set keyset = irm.getEntries(); // These are source handles
-               for (Iterator keyiter = keyset.iterator(); keyiter.hasNext();) {
-                       String hid = (String) keyiter.next();
-                       srchandlecounter++;
-                       
-                       // Do we already know this handle points to nowhere?
-                       if (nonExistingHandles.contains(hid)) {
-                               sourcesToRemove.add(hid);
-                       } else {
-                               // We better check if it actually exists
-                               IProgramElement existingElement = model.getElement(hid);
-                               if (dumpDeltaProcessing) fw.write("Looking for handle ["+hid+"] in model, found: "+existingElement+"\n");
-                 
-                               // Did we find it?
-                               if (existingElement == null) {
-                                       // No, so delete this relationship
+                       IHierarchy model = AsmManager.getDefault().getHierarchy();
+                       // TODO Speed this code up by making this assumption:
+                       // the only piece of the handle that is interesting is the file name. We are working at file granularity, if the
+                       // file does not exist (i.e. its not in the filemap) then any handle inside that file cannot exist.
+                       if (dumpDeltaProcessing)
+                               fw.write("Repairing relationships map:\n");
+
+                       // Now sort out the relationships map
+                       IRelationshipMap irm = AsmManager.getDefault().getRelationshipMap();
+                       Set sourcesToRemove = new HashSet();
+                       Set nonExistingHandles = new HashSet(); // Cache of handles that we *know* are invalid
+                       int srchandlecounter = 0;
+                       int tgthandlecounter = 0;
+
+                       // Iterate over the source handles in the relationships map
+                       Set keyset = irm.getEntries(); // These are source handles
+                       for (Iterator keyiter = keyset.iterator(); keyiter.hasNext();) {
+                               String hid = (String) keyiter.next();
+                               srchandlecounter++;
+
+                               // Do we already know this handle points to nowhere?
+                               if (nonExistingHandles.contains(hid)) {
                                        sourcesToRemove.add(hid);
-                                       nonExistingHandles.add(hid); // Speed up a bit you swine
-                               } else {
-                                       // Ok, so the source is valid, what about the targets?
-                                       List relationships = irm.get(hid);
-                                       List relationshipsToRemove = new ArrayList();
-                                       // Iterate through the relationships against this source handle
-                                       for (Iterator reliter = relationships.iterator();reliter.hasNext();) {
-                                               IRelationship rel = (IRelationship) reliter.next();
-                                               List targets = rel.getTargets();
-                                               List targetsToRemove = new ArrayList();
-                               
-                                               // Iterate through the targets for this relationship
-                                               for (Iterator targetIter = targets.iterator();targetIter.hasNext();) {
-                                                       String targethid = (String) targetIter.next();
-                                                       tgthandlecounter++;
-                                                       // Do we already know it doesn't exist?
-                                                       if (nonExistingHandles.contains(targethid)) {
-                                                               if (dumpDeltaProcessing) fw.write("Target handle ["+targethid+"] for srchid["+hid+"]rel["+rel.getName()+"] does not exist\n");
-                                                               targetsToRemove.add(targethid);
-                                                       } else {
-                                                               // We better check
-                                                               IProgramElement existingTarget = model.getElement(targethid);
-                                                               if (existingTarget == null) {
-                                                                       if (dumpDeltaProcessing) fw.write("Target handle ["+targethid+"] for srchid["+hid+"]rel["+rel.getName()+"] does not exist\n");
+                               } else {
+                                       // We better check if it actually exists
+                                       IProgramElement existingElement = model.getElement(hid);
+                                       if (dumpDeltaProcessing)
+                                               fw.write("Looking for handle [" + hid + "] in model, found: " + existingElement + "\n");
+
+                                       // Did we find it?
+                                       if (existingElement == null) {
+                                               // No, so delete this relationship
+                                               sourcesToRemove.add(hid);
+                                               nonExistingHandles.add(hid); // Speed up a bit you swine
+                                       } else {
+                                               // Ok, so the source is valid, what about the targets?
+                                               List relationships = irm.get(hid);
+                                               List relationshipsToRemove = new ArrayList();
+                                               // Iterate through the relationships against this source handle
+                                               for (Iterator reliter = relationships.iterator(); reliter.hasNext();) {
+                                                       IRelationship rel = (IRelationship) reliter.next();
+                                                       List targets = rel.getTargets();
+                                                       List targetsToRemove = new ArrayList();
+
+                                                       // Iterate through the targets for this relationship
+                                                       for (Iterator targetIter = targets.iterator(); targetIter.hasNext();) {
+                                                               String targethid = (String) targetIter.next();
+                                                               tgthandlecounter++;
+                                                               // Do we already know it doesn't exist?
+                                                               if (nonExistingHandles.contains(targethid)) {
+                                                                       if (dumpDeltaProcessing)
+                                                                               fw.write("Target handle [" + targethid + "] for srchid[" + hid + "]rel[" + rel.getName()
+                                                                                               + "] does not exist\n");
                                                                        targetsToRemove.add(targethid);
-                                                                       nonExistingHandles.add(targethid);
+                                                               } else {
+                                                                       // We better check
+                                                                       IProgramElement existingTarget = model.getElement(targethid);
+                                                                       if (existingTarget == null) {
+                                                                               if (dumpDeltaProcessing)
+                                                                                       fw.write("Target handle [" + targethid + "] for srchid[" + hid + "]rel["
+                                                                                                       + rel.getName() + "] does not exist\n");
+                                                                               targetsToRemove.add(targethid);
+                                                                               nonExistingHandles.add(targethid);
+                                                                       }
                                                                }
                                                        }
-                                               }
-                                               
-                                               // Do we have some targets that need removing?
-                                               if (targetsToRemove.size()!=0) {
-                                                       // Are we removing *all* of the targets for this relationship (i.e. removing the relationship)
-                                                       if (targetsToRemove.size()==targets.size()) {
-                                                               if (dumpDeltaProcessing) fw.write("No targets remain for srchid["+hid+"] rel["+rel.getName()+"]: removing it\n");
-                                                               relationshipsToRemove.add(rel);                                                 
-                                                       } else {
-                                                               // Remove all the targets that are no longer valid
-                                                               for (Iterator targsIter = targetsToRemove.iterator();targsIter.hasNext();) {
-                                                                       String togo = (String) targsIter.next();
-                                                                       targets.remove(togo);
-                                                               }
-                                                               // Should have already been caught above, but lets double check ...
-                                                               if (targets.size()==0) {
-                                                                       if (dumpDeltaProcessing) fw.write("No targets remain for srchid["+hid+"] rel["+rel.getName()+"]: removing it\n");
-                                                                       relationshipsToRemove.add(rel); // TODO Should only remove this relationship for the srchid?
-                                                               }
+
+                                                       // Do we have some targets that need removing?
+                                                       if (targetsToRemove.size() != 0) {
+                                                               // Are we removing *all* of the targets for this relationship (i.e. removing the relationship)
+                                                               if (targetsToRemove.size() == targets.size()) {
+                                                                       if (dumpDeltaProcessing)
+                                                                               fw.write("No targets remain for srchid[" + hid + "] rel[" + rel.getName()
+                                                                                               + "]: removing it\n");
+                                                                       relationshipsToRemove.add(rel);
+                                                               } else {
+                                                                       // Remove all the targets that are no longer valid
+                                                                       for (Iterator targsIter = targetsToRemove.iterator(); targsIter.hasNext();) {
+                                                                               String togo = (String) targsIter.next();
+                                                                               targets.remove(togo);
+                                                                       }
+                                                                       // Should have already been caught above, but lets double check ...
+                                                                       if (targets.size() == 0) {
+                                                                               if (dumpDeltaProcessing)
+                                                                                       fw.write("No targets remain for srchid[" + hid + "] rel[" + rel.getName()
+                                                                                                       + "]: removing it\n");
+                                                                               relationshipsToRemove.add(rel); // TODO Should only remove this relationship for the srchid?
+                                                                       }
+                                                               }
                                                        }
                                                }
-                                       }
-                                       // Now, were any relationships emptied during that processing and so need removing for this source handle
-                                       if (relationshipsToRemove.size()>0) {
-                                               // Are we removing *all* of the relationships for this source handle?
-                                               if (relationshipsToRemove.size() == relationships.size()) { 
-                                                       // We know they are all going to go, so just delete the source handle.
-                                                       sourcesToRemove.add(hid);
-                                               } else {
-                                                       // MEMORY LEAK - we don't remove the relationships !!
-                                                       for (int i = 0 ;i<relationshipsToRemove.size();i++) {
-                                                               IRelationship irel = (IRelationship)relationshipsToRemove.get(i);
-                                                               verifyAssumption(irm.remove(hid,irel),"Failed to remove relationship "+irel.getName()+" for shid "+hid);
+                                               // Now, were any relationships emptied during that processing and so need removing for this source handle
+                                               if (relationshipsToRemove.size() > 0) {
+                                                       // Are we removing *all* of the relationships for this source handle?
+                                                       if (relationshipsToRemove.size() == relationships.size()) {
+                                                               // We know they are all going to go, so just delete the source handle.
+                                                               sourcesToRemove.add(hid);
+                                                       } else {
+                                                               // MEMORY LEAK - we don't remove the relationships !!
+                                                               for (int i = 0; i < relationshipsToRemove.size(); i++) {
+                                                                       IRelationship irel = (IRelationship) relationshipsToRemove.get(i);
+                                                                       verifyAssumption(irm.remove(hid, irel), "Failed to remove relationship " + irel.getName()
+                                                                                       + " for shid " + hid);
+                                                               }
+                                                               List rels = irm.get(hid);
+                                                               if (rels == null || rels.size() == 0)
+                                                                       sourcesToRemove.add(hid);
                                                        }
-                                                       List rels = irm.get(hid);
-                                                       if (rels==null || rels.size()==0) sourcesToRemove.add(hid);
                                                }
                                        }
                                }
                        }
-               }
-               // Remove sources that have no valid relationships any more
-               for (Iterator srciter = sourcesToRemove.iterator(); srciter.hasNext();) {
-                       String hid = (String) srciter.next();
-                       irm.removeAll(hid);
-                       IProgramElement ipe = model.getElement(hid);
-                       if (ipe!=null) {
-                               // If the relationship was hanging off a 'code' node, delete it.
-                               if (ipe.getKind().equals(IProgramElement.Kind.CODE)) {
-                                       //System.err.println("Deleting code node");
-                                       removeSingleNode(ipe);
-                               } 
+                       // Remove sources that have no valid relationships any more
+                       for (Iterator srciter = sourcesToRemove.iterator(); srciter.hasNext();) {
+                               String hid = (String) srciter.next();
+                               irm.removeAll(hid);
+                               IProgramElement ipe = model.getElement(hid);
+                               if (ipe != null) {
+                                       // If the relationship was hanging off a 'code' node, delete it.
+                                       if (ipe.getKind().equals(IProgramElement.Kind.CODE)) {
+                                               // System.err.println("Deleting code node");
+                                               removeSingleNode(ipe);
+                                       }
+                               }
                        }
-               }
                } catch (IOException ioe) {
                        System.err.println("Failed to repair relationships:");
                        ioe.printStackTrace();
                }
        }
-    
+
        /**
-        * Removes a specified program element from the structure model.
-        * We go to the parent of the program element, ask for all its children
-        * and remove the node we want to delete from the list of children.
+        * Removes a specified program element from the structure model. We go to the parent of the program element, ask for all its
+        * children and remove the node we want to delete from the list of children.
         */
        private void removeSingleNode(IProgramElement progElem) {
-               verifyAssumption(progElem!=null);
+               verifyAssumption(progElem != null);
                boolean deleteOK = false;
                IProgramElement parent = progElem.getParent();
                List kids = parent.getChildren();
-               for (int i =0 ;i<kids.size();i++) {
-                 if (kids.get(i).equals(progElem)) {
-                         kids.remove(i); 
-                         deleteOK=true;
-                         break;
-                 }
+               for (int i = 0; i < kids.size(); i++) {
+                       if (kids.get(i).equals(progElem)) {
+                               kids.remove(i);
+                               deleteOK = true;
+                               break;
+                       }
                }
                verifyAssumption(deleteOK);
        }
-       
-       
+
        /**
-        * Removes a specified program element from the structure model.
-        * Two processing stages:
-        * <p>First: We go to the parent of the program element, ask for all its children
-        *    and remove the node we want to delete from the list of children.
-        * <p>Second:We check if that parent has any other children.  If it has no other
-        *    children and it is either a CODE node or a PACKAGE node, we delete it too.
+        * Removes a specified program element from the structure model. Two processing stages:
+        * <p>
+        * First: We go to the parent of the program element, ask for all its children and remove the node we want to delete from the
+        * list of children.
+        * <p>
+        * Second:We check if that parent has any other children. If it has no other children and it is either a CODE node or a PACKAGE
+        * node, we delete it too.
         */
        private void removeNode(IProgramElement progElem) {
-               
-//             StringBuffer flightrecorder = new StringBuffer();
+
+               // StringBuffer flightrecorder = new StringBuffer();
                try {
-//                     flightrecorder.append("In removeNode, about to chuck away: "+progElem+"\n");
-               
-                       verifyAssumption(progElem!=null);
-//                     boolean deleteOK = false;
+                       // flightrecorder.append("In removeNode, about to chuck away: "+progElem+"\n");
+
+                       verifyAssumption(progElem != null);
+                       // boolean deleteOK = false;
                        IProgramElement parent = progElem.getParent();
-//                     flightrecorder.append("Parent of it is "+parent+"\n");
+                       // flightrecorder.append("Parent of it is "+parent+"\n");
                        List kids = parent.getChildren();
-//                     flightrecorder.append("Which has "+kids.size()+" kids\n");
-                       for (int i =0 ;i<kids.size();i++) {
-//                             flightrecorder.append("Comparing with "+kids.get(i)+"\n");
-                               if (kids.get(i).equals(progElem)) {
-                                       kids.remove(i); 
-//                                     flightrecorder.append("Removing it\n");
-//                                     deleteOK=true;
-                                       break;
-                               }
+                       // flightrecorder.append("Which has "+kids.size()+" kids\n");
+                       for (int i = 0; i < kids.size(); i++) {
+                               // flightrecorder.append("Comparing with "+kids.get(i)+"\n");
+                               if (kids.get(i).equals(progElem)) {
+                                       kids.remove(i);
+                                       // flightrecorder.append("Removing it\n");
+                                       // deleteOK=true;
+                                       break;
+                               }
                        }
-//                     verifyAssumption(deleteOK,flightrecorder.toString());
+                       // verifyAssumption(deleteOK,flightrecorder.toString());
                        // Are there any kids left for this node?
-                       if (parent.getChildren().size()==0  && parent.getParent()!=null && 
-                               (parent.getKind().equals(IProgramElement.Kind.CODE) ||
-                               parent.getKind().equals(IProgramElement.Kind.PACKAGE))) {
-                               // This node is on its own, we should trim it too *as long as its not a structural node* which we currently check by making sure its a code node
+                       if (parent.getChildren().size() == 0
+                                       && parent.getParent() != null
+                                       && (parent.getKind().equals(IProgramElement.Kind.CODE) || parent.getKind().equals(IProgramElement.Kind.PACKAGE))) {
+                               // This node is on its own, we should trim it too *as long as its not a structural node* which we currently check by
+                               // making sure its a code node
                                // We should trim if it
                                // System.err.println("Deleting parent:"+parent);
                                removeNode(parent);
                        }
-               } catch (NullPointerException npe ){
+               } catch (NullPointerException npe{
                        // Occurred when commenting out other 2 ras classes in wsif?? reproducable?
-//                     System.err.println(flightrecorder.toString());
+                       // System.err.println(flightrecorder.toString());
                        npe.printStackTrace();
                }
        }
-       
-       
-       public static void verifyAssumption(boolean b,String info) {
+
+       public static void verifyAssumption(boolean b, String info) {
                if (!b) {
                        System.err.println("=========== ASSERTION IS NOT TRUE =========v");
                        System.err.println(info);
                        Thread.dumpStack();
-                       System.err.println("=========== ASSERTION IS NOT TRUE =========^");             
+                       System.err.println("=========== ASSERTION IS NOT TRUE =========^");
                        throw new RuntimeException("Assertion is false");
-               } 
+               }
        }
-       
+
        public static void verifyAssumption(boolean b) {
                if (!b) {
                        Thread.dumpStack();
                        throw new RuntimeException("Assertion is false");
-               } 
+               }
        }
-       
 
-       //===================== DELTA PROCESSING CODE ==============  end  ==========//
-       
+       // ===================== DELTA PROCESSING CODE ============== end ==========//
+
        /**
-        * A ModelInfo object captures basic information about the structure model.
-        * It is used for testing and producing debug info.
+        * A ModelInfo object captures basic information about the structure model. It is used for testing and producing debug info.
         */
        public static class ModelInfo {
                private Hashtable nodeTypeCount = new Hashtable();
                private Properties extraProperties = new Properties();
-               
-               private ModelInfo(IHierarchy hierarchy,IRelationshipMap relationshipMap) {
-                 IProgramElement ipe = hierarchy.getRoot();
-                 walkModel(ipe);
-                 recordStat("FileMapSize",
-                       new Integer(hierarchy.getFileMapEntrySet().size()).toString());
-                 recordStat("RelationshipMapSize",
-                       new Integer(relationshipMap.getEntries().size()).toString());   
+
+               private ModelInfo(IHierarchy hierarchy, IRelationshipMap relationshipMap) {
+                       IProgramElement ipe = hierarchy.getRoot();
+                       walkModel(ipe);
+                       recordStat("FileMapSize", new Integer(hierarchy.getFileMapEntrySet().size()).toString());
+                       recordStat("RelationshipMapSize", new Integer(relationshipMap.getEntries().size()).toString());
                }
-               
+
                private void walkModel(IProgramElement ipe) {
                        countNode(ipe);
                        List kids = ipe.getChildren();
@@ -1066,79 +1094,79 @@ public class AsmManager {
                                walkModel(nextElement);
                        }
                }
-               
+
                private void countNode(IProgramElement ipe) {
                        String node = ipe.getKind().toString();
-                       Integer ctr = (Integer)nodeTypeCount.get(node);
-                       if (ctr==null) {
-                               nodeTypeCount.put(node,new Integer(1));
+                       Integer ctr = (Integer) nodeTypeCount.get(node);
+                       if (ctr == null) {
+                               nodeTypeCount.put(node, new Integer(1));
                        } else {
-                               ctr = new Integer(ctr.intValue()+1);
-                               nodeTypeCount.put(node,ctr);
+                               ctr = new Integer(ctr.intValue() + 1);
+                               nodeTypeCount.put(node, ctr);
                        }
                }
-               
+
                public String toString() {
                        StringBuffer sb = new StringBuffer();
                        sb.append("Model node summary:\n");
                        Enumeration nodeKeys = nodeTypeCount.keys();
                        while (nodeKeys.hasMoreElements()) {
-                               String key = (String)nodeKeys.nextElement();
-                               Integer ct = (Integer)nodeTypeCount.get(key);
-                               sb.append(key+"="+ct+"\n");
+                               String key = (String) nodeKeys.nextElement();
+                               Integer ct = (Integer) nodeTypeCount.get(key);
+                               sb.append(key + "=" + ct + "\n");
                        }
                        sb.append("Model stats:\n");
                        Enumeration ks = extraProperties.keys();
                        while (ks.hasMoreElements()) {
-                               String k = (String)ks.nextElement();
+                               String k = (String) ks.nextElement();
                                String v = extraProperties.getProperty(k);
-                               sb.append(k+"="+v+"\n");
+                               sb.append(k + "=" + v + "\n");
                        }
                        return sb.toString();
                }
-               
+
                public Properties getProperties() {
                        Properties p = new Properties();
                        Enumeration nodeKeys = nodeTypeCount.keys();
                        while (nodeKeys.hasMoreElements()) {
-                               String key = (String)nodeKeys.nextElement();
-                               Integer ct = (Integer)nodeTypeCount.get(key);
-                               p.setProperty(key,ct.toString());
+                               String key = (String) nodeKeys.nextElement();
+                               Integer ct = (Integer) nodeTypeCount.get(key);
+                               p.setProperty(key, ct.toString());
                        }
                        p.putAll(extraProperties);
                        return p;
                }
 
                public void recordStat(String string, String string2) {
-                       extraProperties.setProperty(string,string2);
+                       extraProperties.setProperty(string, string2);
                }
-               
+
                public static ModelInfo summarizeModel() {
-                       return new ModelInfo(AsmManager.getDefault().getHierarchy(),
-                                                                AsmManager.getDefault().getRelationshipMap());
+                       return new ModelInfo(AsmManager.getDefault().getHierarchy(), AsmManager.getDefault().getRelationshipMap());
                }
        }
 
-
-    /**
-     * Set to indicate whether we are currently building a structure model, should
-     * be set up front.
-     */
+       /**
+        * Set to indicate whether we are currently building a structure model, should be set up front.
+        */
        public static void setCreatingModel(boolean b) {
                creatingModel = b;
        }
-       
-    /**
-     * returns true if we are currently generating a structure model, enables
-     * guarding of expensive operations on an empty/null model.
-     */
-       public static boolean isCreatingModel() { return creatingModel;}
-       
+
+       /**
+        * returns true if we are currently generating a structure model, enables guarding of expensive operations on an empty/null
+        * model.
+        */
+       public static boolean isCreatingModel() {
+               return creatingModel;
+       }
+
        public static void setCompletingTypeBindings(boolean b) {
                completingTypeBindings = b;
        }
-       
-       public static boolean isCompletingTypeBindings() { return completingTypeBindings; }
-       
-}
 
+       public static boolean isCompletingTypeBindings() {
+               return completingTypeBindings;
+       }
+
+}
diff --git a/asm/src/org/aspectj/asm/internal/OptimizedFullPathHandleProvider.java b/asm/src/org/aspectj/asm/internal/OptimizedFullPathHandleProvider.java
deleted file mode 100644 (file)
index 32ab9bd..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-/* *******************************************************************
- * Copyright (c) 2003 Contributors.
- * All rights reserved. 
- * This program and the accompanying materials are made available 
- * under the terms of the Eclipse Public License v1.0 
- * which accompanies this distribution and is available at 
- * http://www.eclipse.org/legal/epl-v10.html 
- *  
- * Contributors: 
- *     Mik Kersten     initial implementation 
- * ******************************************************************/
-
-package org.aspectj.asm.internal;
-
-import java.io.File;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-import java.util.StringTokenizer;
-
-import org.aspectj.asm.AsmManager;
-import org.aspectj.asm.IElementHandleProvider;
-import org.aspectj.asm.IProgramElement;
-import org.aspectj.bridge.ISourceLocation;
-
-/**
- * Uses int keys rather than the full file path as the first part of the handle.
- */
-public class OptimizedFullPathHandleProvider implements IElementHandleProvider {
-
-    static final String ID_DELIM = "|";
-    Map kToF = new HashMap();
-    int key = 1;
-    
-    private Integer getKey(String file) {
-       Integer k = null;
-        if (kToF.values().contains(file)) {
-                Set keys = kToF.keySet();
-                for (Iterator iter = keys.iterator(); iter.hasNext() && k==null;) {
-                               Integer element = (Integer) iter.next();
-                               if (kToF.get(element).equals(file)) {
-                                       k = element;
-                               }
-                }
-        } else {
-                k = new Integer(key);
-                kToF.put(k,file);
-                key++;
-        }
-        return k;
-    }
-    
-    public String createHandleIdentifier(ISourceLocation location) {
-        StringBuffer sb = new StringBuffer();
-        String file = AsmManager.getDefault().getCanonicalFilePath(location.getSourceFile());
-        
-        sb.append(getKey(file).intValue());
-        sb.append(ID_DELIM);
-        sb.append(location.getLine());
-        sb.append(ID_DELIM);
-        sb.append(location.getColumn());
-        sb.append(ID_DELIM);
-        sb.append(location.getOffset());
-        return sb.toString();
-    }
-    
-    public String createHandleIdentifier(File sourceFile, int line,int column,int offset) {
-        StringBuffer sb = new StringBuffer();
-        sb.append(getKey(AsmManager.getDefault().getCanonicalFilePath(sourceFile)).intValue());
-        sb.append(ID_DELIM);
-        sb.append(line);
-        sb.append(ID_DELIM);
-        sb.append(column);
-        sb.append(ID_DELIM);
-        sb.append(offset);
-        return sb.toString();       
-    }
-
-    public String getFileForHandle(String handle) {
-        StringTokenizer st = new StringTokenizer(handle, ID_DELIM);
-        String k = st.nextToken();
-        return (String)kToF.get(new Integer(k));
-//        return file;
-    }
-
-    public int getLineNumberForHandle(String handle) {
-        StringTokenizer st = new StringTokenizer(handle, ID_DELIM);
-        st.nextToken(); // skip over the file
-        return new Integer(st.nextToken()).intValue();
-    }
-
-       public int getOffSetForHandle(String handle) {
-               StringTokenizer st = new StringTokenizer(handle, ID_DELIM);
-        st.nextToken(); // skip over the file
-        st.nextToken(); // skip over the line number
-        st.nextToken(); // skip over the column
-        return new Integer(st.nextToken()).intValue();
-       }
-
-       public String createHandleIdentifier(IProgramElement ipe) {
-               if (ipe == null) return null;
-               if (ipe.getHandleIdentifier(false) != null) {
-                       return ipe.getHandleIdentifier(false);
-               }
-               String handle = null;  
-               if (ipe.getSourceLocation() != null) {
-                       handle = createHandleIdentifier(ipe.getSourceLocation());
-               } else {
-                       handle = createHandleIdentifier(ISourceLocation.NO_FILE,-1,-1,-1);
-               }
-               ipe.setHandleIdentifier(handle);
-               return handle;
-       }
-
-       public boolean dependsOnLocation() {
-               // handles contain information from the source location therefore 
-               // return true;
-               return true;
-       }
-
-       public void initialize() {
-               // nothing to initialize
-       }
-}
index d926dfc5e8b0427334f849158b76b629d5e39979..335bfdd63ecf86ea307c895f737284638d48eb36 100644 (file)
@@ -26,20 +26,19 @@ import org.aspectj.asm.IProgramElement;
 import org.aspectj.bridge.IMessage;
 import org.aspectj.bridge.ISourceLocation;
 
-
 /**
  * @author Mik Kersten
  */
 public class ProgramElement implements IProgramElement {
-       
+
        private static final long serialVersionUID = 171673495267384449L;
        public static boolean shortITDNames = true;
-       
+
        private final static String UNDEFINED = "<undefined>";
        private final static int AccPublic = 0x0001;
        private final static int AccPrivate = 0x0002;
        private final static int AccProtected = 0x0004;
-       private final static int AccPrivileged = 0x0006;  // XXX is this right?
+       private final static int AccPrivileged = 0x0006; // XXX is this right?
        private final static int AccStatic = 0x0008;
        private final static int AccFinal = 0x0010;
        private final static int AccSynchronized = 0x0020;
@@ -49,66 +48,66 @@ public class ProgramElement implements IProgramElement {
        private final static int AccInterface = 0x0200;
        private final static int AccAbstract = 0x0400;
        private final static int AccStrictfp = 0x0800;
-       
+
        protected String name;
        private Kind kind;
        protected IProgramElement parent = null;
        protected List children = Collections.EMPTY_LIST;
-       private Map kvpairs = Collections.EMPTY_MAP;    
+       private Map kvpairs = Collections.EMPTY_MAP;
        protected ISourceLocation sourceLocation = null;
-    private int modifiers;
+       private int modifiers;
        private String handle = null;
 
-
-    
        // --- ctors
-       
+
        /** Used during de-externalization */
-       public ProgramElement() { }
+       public ProgramElement() {
+       }
 
        /** Use to create program element nodes that do not correspond to source locations */
-       public ProgramElement (String name,Kind kind,List children) {
+       public ProgramElement(String name, Kind kind, List children) {
                this.name = name;
                this.kind = kind;
-               if (children!=null) setChildren(children);
+               if (children != null)
+                       setChildren(children);
        }
-       
-       public ProgramElement (String name, IProgramElement.Kind kind, ISourceLocation sourceLocation,
-                                   int modifiers, String comment, List children) {
+
+       public ProgramElement(String name, IProgramElement.Kind kind, ISourceLocation sourceLocation, int modifiers, String comment,
+                       List children) {
                this(name, kind, children);
                this.sourceLocation = sourceLocation;
                setFormalComment(comment);
-//             if (comment!=null && comment.length()>0) formalComment = comment;
+               // if (comment!=null && comment.length()>0) formalComment = comment;
                this.modifiers = modifiers;
        }
-       
-       /**
-        * Use to create program element nodes that correspond to source locations.
-        */
-       public ProgramElement(
-               String name, 
-               Kind kind, 
-               int modifiers, 
-               //Accessibility accessibility,
-               String declaringType, 
-               String packageName, 
-               String comment, 
-               ISourceLocation sourceLocation,
-               List relations, 
-               List children, 
-               boolean member) {
 
-               this(name, kind, children);
-               this.sourceLocation = sourceLocation;
-               this.kind = kind;
-               this.modifiers = modifiers;
-               setDeclaringType(declaringType);//this.declaringType = declaringType;
-               //this.packageName = packageName;
-               setFormalComment(comment);
-//             if (comment!=null && comment.length()>0) formalComment = comment;
-               if (relations!=null && relations.size()!=0) setRelations(relations);
-//             this.relations = relations;
-       }
+       // /**
+       // * Use to create program element nodes that correspond to source locations.
+       // */
+       // public ProgramElement(
+       // String name,
+       // Kind kind,
+       // int modifiers,
+       // //Accessibility accessibility,
+       // String declaringType,
+       // String packageName,
+       // String comment,
+       // ISourceLocation sourceLocation,
+       // List relations,
+       // List children,
+       // boolean member) {
+       //
+       // this(name, kind, children);
+       // this.sourceLocation = sourceLocation;
+       // this.kind = kind;
+       // this.modifiers = modifiers;
+       // setDeclaringType(declaringType);//this.declaringType = declaringType;
+       // //this.packageName = packageName;
+       // setFormalComment(comment);
+       // // if (comment!=null && comment.length()>0) formalComment = comment;
+       // if (relations!=null && relations.size()!=0) setRelations(relations);
+       // // this.relations = relations;
+       // }
 
        public List getModifiers() {
                return genModifiers(this.modifiers);
@@ -117,22 +116,25 @@ public class ProgramElement implements IProgramElement {
        public Accessibility getAccessibility() {
                return genAccessibility(this.modifiers);
        }
-       
+
        public void setDeclaringType(String t) {
-               if (t!=null && t.length()>0) {
-                       if (kvpairs==Collections.EMPTY_MAP) kvpairs = new HashMap();
-                       kvpairs.put("declaringType",t);
+               if (t != null && t.length() > 0) {
+                       if (kvpairs == Collections.EMPTY_MAP)
+                               kvpairs = new HashMap();
+                       kvpairs.put("declaringType", t);
                }
        }
 
        public String getDeclaringType() {
-               String dt = (String)kvpairs.get("declaringType");
-               if (dt==null) return ""; // assumption that not having one means "" is at HtmlDecorator line 111
+               String dt = (String) kvpairs.get("declaringType");
+               if (dt == null)
+                       return ""; // assumption that not having one means "" is at HtmlDecorator line 111
                return dt;
        }
 
        public String getPackageName() {
-               if (kind == Kind.PACKAGE) return getName();
+               if (kind == Kind.PACKAGE)
+                       return getName();
                if (getParent() == null) {
                        return "";
                }
@@ -154,18 +156,19 @@ public class ProgramElement implements IProgramElement {
        // not really sure why we have this setter ... how can we be in the situation where we didn't
        // know the location when we built the node but we learned it later on?
        public void setSourceLocation(ISourceLocation sourceLocation) {
-//             this.sourceLocation = sourceLocation;
+               // this.sourceLocation = sourceLocation;
        }
 
        public IMessage getMessage() {
-               return (IMessage)kvpairs.get("message");
-//             return message;
+               return (IMessage) kvpairs.get("message");
+               // return message;
        }
 
        public void setMessage(IMessage message) {
-               if (kvpairs==Collections.EMPTY_MAP) kvpairs = new HashMap();
-               kvpairs.put("message",message);
-//             this.message = message;
+               if (kvpairs == Collections.EMPTY_MAP)
+                       kvpairs = new HashMap();
+               kvpairs.put("message", message);
+               // this.message = message;
        }
 
        public IProgramElement getParent() {
@@ -181,57 +184,67 @@ public class ProgramElement implements IProgramElement {
        }
 
        public void setRunnable(boolean value) {
-               if (kvpairs==Collections.EMPTY_MAP) kvpairs = new HashMap();
-               if (value) kvpairs.put("isRunnable","true");
-               else       kvpairs.remove("isRunnable");
-//             this.runnable = value;  
+               if (kvpairs == Collections.EMPTY_MAP)
+                       kvpairs = new HashMap();
+               if (value)
+                       kvpairs.put("isRunnable", "true");
+               else
+                       kvpairs.remove("isRunnable");
+               // this.runnable = value;
        }
 
        public boolean isRunnable() {
-               return kvpairs.get("isRunnable")!=null;
-//             return runnable;        
+               return kvpairs.get("isRunnable") != null;
+               // return runnable;
        }
 
        public boolean isImplementor() {
-               return kvpairs.get("isImplementor")!=null;
-//             return implementor;     
+               return kvpairs.get("isImplementor") != null;
+               // return implementor;
        }
 
        public void setImplementor(boolean value) {
-               if (kvpairs==Collections.EMPTY_MAP) kvpairs = new HashMap();
-               if (value) kvpairs.put("isImplementor","true");
-               else       kvpairs.remove("isImplementor");
-//             this.implementor = value;       
+               if (kvpairs == Collections.EMPTY_MAP)
+                       kvpairs = new HashMap();
+               if (value)
+                       kvpairs.put("isImplementor", "true");
+               else
+                       kvpairs.remove("isImplementor");
+               // this.implementor = value;
        }
-       
+
        public boolean isOverrider() {
-               return kvpairs.get("isOverrider")!=null;
-//             return overrider;               
+               return kvpairs.get("isOverrider") != null;
+               // return overrider;
        }
 
        public void setOverrider(boolean value) {
-               if (kvpairs==Collections.EMPTY_MAP) kvpairs = new HashMap();
-               if (value) kvpairs.put("isOverrider","true");
-               else       kvpairs.remove("isOverrider");
-//             this.overrider = value; 
+               if (kvpairs == Collections.EMPTY_MAP)
+                       kvpairs = new HashMap();
+               if (value)
+                       kvpairs.put("isOverrider", "true");
+               else
+                       kvpairs.remove("isOverrider");
+               // this.overrider = value;
        }
 
        public List getRelations() {
-               return (List)kvpairs.get("relations");
-//             return relations;
+               return (List) kvpairs.get("relations");
+               // return relations;
        }
 
        public void setRelations(List relations) {
                if (relations.size() > 0) {
-                       if (kvpairs==Collections.EMPTY_MAP) kvpairs = new HashMap();
-                       kvpairs.put("relations",relations);
-//                     this.relations = relations;
+                       if (kvpairs == Collections.EMPTY_MAP)
+                               kvpairs = new HashMap();
+                       kvpairs.put("relations", relations);
+                       // this.relations = relations;
                }
        }
 
        public String getFormalComment() {
-               return (String)kvpairs.get("formalComment");
-//             return formalComment;
+               return (String) kvpairs.get("formalComment");
+               // return formalComment;
        }
 
        public String toString() {
@@ -240,77 +253,92 @@ public class ProgramElement implements IProgramElement {
 
        private static List genModifiers(int modifiers) {
                List modifiersList = new ArrayList();
-               if ((modifiers & AccStatic) != 0) modifiersList.add(IProgramElement.Modifiers.STATIC);
-               if ((modifiers & AccFinal) != 0) modifiersList.add(IProgramElement.Modifiers.FINAL);
-               if ((modifiers & AccSynchronized) != 0) modifiersList.add(IProgramElement.Modifiers.SYNCHRONIZED);
-               if ((modifiers & AccVolatile) != 0) modifiersList.add(IProgramElement.Modifiers.VOLATILE);
-               if ((modifiers & AccTransient) != 0) modifiersList.add(IProgramElement.Modifiers.TRANSIENT);
-               if ((modifiers & AccNative) != 0) modifiersList.add(IProgramElement.Modifiers.NATIVE);
-               if ((modifiers & AccAbstract) != 0) modifiersList.add(IProgramElement.Modifiers.ABSTRACT);
-               return modifiersList;             
+               if ((modifiers & AccStatic) != 0)
+                       modifiersList.add(IProgramElement.Modifiers.STATIC);
+               if ((modifiers & AccFinal) != 0)
+                       modifiersList.add(IProgramElement.Modifiers.FINAL);
+               if ((modifiers & AccSynchronized) != 0)
+                       modifiersList.add(IProgramElement.Modifiers.SYNCHRONIZED);
+               if ((modifiers & AccVolatile) != 0)
+                       modifiersList.add(IProgramElement.Modifiers.VOLATILE);
+               if ((modifiers & AccTransient) != 0)
+                       modifiersList.add(IProgramElement.Modifiers.TRANSIENT);
+               if ((modifiers & AccNative) != 0)
+                       modifiersList.add(IProgramElement.Modifiers.NATIVE);
+               if ((modifiers & AccAbstract) != 0)
+                       modifiersList.add(IProgramElement.Modifiers.ABSTRACT);
+               return modifiersList;
        }
 
        public static IProgramElement.Accessibility genAccessibility(int modifiers) {
-               if ((modifiers & AccPublic) != 0) return IProgramElement.Accessibility.PUBLIC;
-               if ((modifiers & AccPrivate) != 0) return IProgramElement.Accessibility.PRIVATE;
-               if ((modifiers & AccProtected) != 0) return IProgramElement.Accessibility.PROTECTED;
-               if ((modifiers & AccPrivileged) != 0) return IProgramElement.Accessibility.PRIVILEGED;
-               else return IProgramElement.Accessibility.PACKAGE;
+               if ((modifiers & AccPublic) != 0)
+                       return IProgramElement.Accessibility.PUBLIC;
+               if ((modifiers & AccPrivate) != 0)
+                       return IProgramElement.Accessibility.PRIVATE;
+               if ((modifiers & AccProtected) != 0)
+                       return IProgramElement.Accessibility.PROTECTED;
+               if ((modifiers & AccPrivileged) != 0)
+                       return IProgramElement.Accessibility.PRIVILEGED;
+               else
+                       return IProgramElement.Accessibility.PACKAGE;
        }
-       
 
-       
-       
        public String getBytecodeName() {
-               String s = (String)kvpairs.get("bytecodeName");
-               if (s==null) return UNDEFINED;
+               String s = (String) kvpairs.get("bytecodeName");
+               if (s == null)
+                       return UNDEFINED;
                return s;
        }
 
        public String getBytecodeSignature() {
-               String s = (String)kvpairs.get("bytecodeSignature");
-//             if (s==null) return UNDEFINED;
+               String s = (String) kvpairs.get("bytecodeSignature");
+               // if (s==null) return UNDEFINED;
                return s;
        }
 
        public void setBytecodeName(String s) {
-               if (kvpairs==Collections.EMPTY_MAP) kvpairs = new HashMap();
-               kvpairs.put("bytecodeName",s);
+               if (kvpairs == Collections.EMPTY_MAP)
+                       kvpairs = new HashMap();
+               kvpairs.put("bytecodeName", s);
        }
 
        public void setBytecodeSignature(String s) {
-               if (kvpairs==Collections.EMPTY_MAP) kvpairs = new HashMap();
-               kvpairs.put("bytecodeSignature",s);
+               if (kvpairs == Collections.EMPTY_MAP)
+                       kvpairs = new HashMap();
+               kvpairs.put("bytecodeSignature", s);
        }
+
        public String getSourceSignature() {
-               return (String)kvpairs.get("sourceSignature");
+               return (String) kvpairs.get("sourceSignature");
        }
 
        public void setSourceSignature(String string) {
-               if (kvpairs==Collections.EMPTY_MAP) kvpairs = new HashMap();
-//             System.err.println(name+" SourceSig=>"+string);
-               kvpairs.put("sourceSignature",string);
-//             sourceSignature = string;
+               if (kvpairs == Collections.EMPTY_MAP)
+                       kvpairs = new HashMap();
+               // System.err.println(name+" SourceSig=>"+string);
+               kvpairs.put("sourceSignature", string);
+               // sourceSignature = string;
        }
-       
+
        public void setKind(Kind kind) {
                this.kind = kind;
        }
 
        public void setCorrespondingType(String s) {
-               if (kvpairs==Collections.EMPTY_MAP) kvpairs = new HashMap();
-               kvpairs.put("returnType",s);
-//             this.returnType = s;
+               if (kvpairs == Collections.EMPTY_MAP)
+                       kvpairs = new HashMap();
+               kvpairs.put("returnType", s);
+               // this.returnType = s;
        }
 
        public String getCorrespondingType() {
                return getCorrespondingType(false);
        }
-       
+
        public String getCorrespondingType(boolean getFullyQualifiedType) {
-               String returnType = (String)kvpairs.get("returnType");
-               if (returnType==null) returnType="";
+               String returnType = (String) kvpairs.get("returnType");
+               if (returnType == null)
+                       returnType = "";
                if (getFullyQualifiedType) {
                        return returnType;
                }
@@ -331,70 +359,73 @@ public class ProgramElement implements IProgramElement {
 
        public void setChildren(List children) {
                this.children = children;
-               if (children == null) return;
-               for (Iterator it = children.iterator(); it.hasNext(); ) {
-                       ((IProgramElement)it.next()).setParent(this);   
+               if (children == null)
+                       return;
+               for (Iterator it = children.iterator(); it.hasNext();) {
+                       ((IProgramElement) it.next()).setParent(this);
                }
        }
 
        public void addChild(IProgramElement child) {
-               if (children == null || children==Collections.EMPTY_LIST) children = new ArrayList();
+               if (children == null || children == Collections.EMPTY_LIST)
+                       children = new ArrayList();
                children.add(child);
                child.setParent(this);
        }
-    
+
        public void addChild(int position, IProgramElement child) {
-               if (children == null || children==Collections.EMPTY_LIST) children = new ArrayList();
+               if (children == null || children == Collections.EMPTY_LIST)
+                       children = new ArrayList();
                children.add(position, child);
                child.setParent(this);
        }
-    
+
        public boolean removeChild(IProgramElement child) {
                child.setParent(null);
-               return children.remove(child);  
+               return children.remove(child);
        }
-       
+
        public void setName(String string) {
                name = string;
        }
 
        public IProgramElement walk(HierarchyWalker walker) {
-               if (children!=null) {
-                       for (Iterator it = children.iterator(); it.hasNext(); ) {
-                               IProgramElement child = (IProgramElement)it.next();
-                               walker.process(child);  
-                       } 
+               if (children != null) {
+                       for (Iterator it = children.iterator(); it.hasNext();) {
+                               IProgramElement child = (IProgramElement) it.next();
+                               walker.process(child);
+                       }
                }
                return this;
        }
-       
+
        public String toLongString() {
                final StringBuffer buffer = new StringBuffer();
                HierarchyWalker walker = new HierarchyWalker() {
                        private int depth = 0;
-                       
-                       public void preProcess(IProgramElement node) { 
-                               for (int i = 0; i < depth; i++) buffer.append(' ');
+
+                       public void preProcess(IProgramElement node) {
+                               for (int i = 0; i < depth; i++)
+                                       buffer.append(' ');
                                buffer.append(node.toString());
                                buffer.append('\n');
                                depth += 2;
                        }
-                       
-                       public void postProcess(IProgramElement node) { 
+
+                       public void postProcess(IProgramElement node) {
                                depth -= 2;
                        }
                };
                walker.process(this);
                return buffer.toString();
        }
-       
+
        public void setModifiers(int i) {
                this.modifiers = i;
        }
-       
+
        /**
-        * Convenience mechanism for setting new modifiers which do not require
-        * knowledge of the private internal representation
+        * Convenience mechanism for setting new modifiers which do not require knowledge of the private internal representation
         * 
         * @param newModifier
         */
@@ -409,39 +440,36 @@ public class ProgramElement implements IProgramElement {
        public String toSignatureString(boolean getFullyQualifiedArgTypes) {
                StringBuffer sb = new StringBuffer();
                sb.append(name);
-               
+
                List ptypes = getParameterTypes();
-               if (ptypes != null && (!ptypes.isEmpty() 
-                               || this.kind.equals(IProgramElement.Kind.METHOD))
-                               || this.kind.equals(IProgramElement.Kind.CONSTRUCTOR)
-                               || this.kind.equals(IProgramElement.Kind.ADVICE)
-                               || this.kind.equals(IProgramElement.Kind.POINTCUT)
-                               || this.kind.equals(IProgramElement.Kind.INTER_TYPE_METHOD)
+               if (ptypes != null && (!ptypes.isEmpty() || this.kind.equals(IProgramElement.Kind.METHOD))
+                               || this.kind.equals(IProgramElement.Kind.CONSTRUCTOR) || this.kind.equals(IProgramElement.Kind.ADVICE)
+                               || this.kind.equals(IProgramElement.Kind.POINTCUT) || this.kind.equals(IProgramElement.Kind.INTER_TYPE_METHOD)
                                || this.kind.equals(IProgramElement.Kind.INTER_TYPE_CONSTRUCTOR)) {
-                       sb.append('('); 
-                       for (Iterator it = ptypes.iterator(); it.hasNext(); ) {
-                               char[] arg = (char[])it.next();
+                       sb.append('(');
+                       for (Iterator it = ptypes.iterator(); it.hasNext();) {
+                               char[] arg = (char[]) it.next();
                                if (getFullyQualifiedArgTypes) {
                                        sb.append(arg);
                                } else {
-                                       int index = CharOperation.lastIndexOf('.',arg);
+                                       int index = CharOperation.lastIndexOf('.', arg);
                                        if (index != -1) {
-                                               sb.append(CharOperation.subarray(arg,index+1,arg.length));
+                                               sb.append(CharOperation.subarray(arg, index + 1, arg.length));
                                        } else {
                                                sb.append(arg);
                                        }
                                }
-                               if (it.hasNext()) sb.append(",");
+                               if (it.hasNext())
+                                       sb.append(",");
                        }
                        sb.append(')');
                }
-               
-               return sb.toString();           
+
+               return sb.toString();
        }
-       
-       
+
        /**
-        * TODO: move the "parent != null"==>injar heuristic to more explicit 
+        * TODO: move the "parent != null"==>injar heuristic to more explicit
         */
        public String toLinkLabelString() {
                return toLinkLabelString(true);
@@ -454,30 +482,30 @@ public class ProgramElement implements IProgramElement {
                } else if (kind.isInterTypeMember()) {
                        if (shortITDNames) {
                                // if (name.indexOf('.')!=-1) return toLabelString().substring(name.indexOf('.')+1);
-                               label="";
+                               label = "";
                        } else {
-                         int dotIndex = name.indexOf('.');  
-                         if (dotIndex != -1) {
-                               return parent.getName() + ": " + toLabelString().substring(dotIndex+1);
-                         } else {
-                               label = parent.getName() + '.'; 
-                         }
+                               int dotIndex = name.indexOf('.');
+                               if (dotIndex != -1) {
+                                       return parent.getName() + ": " + toLabelString().substring(dotIndex + 1);
+                               } else {
+                                       label = parent.getName() + '.';
+                               }
                        }
                } else if (kind == Kind.CLASS || kind == Kind.ASPECT || kind == Kind.INTERFACE) {
                        label = "";
                } else if (kind.equals(Kind.DECLARE_PARENTS)) {
                        label = "";
-               } else { 
+               } else {
                        if (parent != null) {
                                label = parent.getName() + '.';
-                       } else { 
-                               label = "injar aspect: ";  
+                       } else {
+                               label = "injar aspect: ";
                        }
                }
                label += toLabelString(getFullyQualifiedArgTypes);
                return label;
        }
-       
+
        public String toLabelString() {
                return toLabelString(true);
        }
@@ -487,35 +515,37 @@ public class ProgramElement implements IProgramElement {
                String details = getDetails();
                if (details != null) {
                        label += ": " + details;
-               } 
+               }
                return label;
        }
-       
+
        public String getHandleIdentifier() {
                return getHandleIdentifier(true);
        }
-       
+
        public String getHandleIdentifier(boolean create) {
                if (null == handle && create) {
-            handle = AsmManager.getDefault().getHandleProvider().createHandleIdentifier(this);                 
+                       handle = AsmManager.getDefault().getHandleProvider().createHandleIdentifier(this);
                }
                return handle;
        }
-       
+
        public void setHandleIdentifier(String handle) {
                this.handle = handle;
        }
-       
-       public List getParameterNames() { 
-               List parameterNames = (List)kvpairs.get("parameterNames");
-               return parameterNames; 
+
+       public List getParameterNames() {
+               List parameterNames = (List) kvpairs.get("parameterNames");
+               return parameterNames;
        }
-       
-       public void setParameterNames(List list) { 
-               if (list==null || list.size()==0) return;
-               if (kvpairs==Collections.EMPTY_MAP) kvpairs = new HashMap();
-               kvpairs.put("parameterNames",list);
-               //parameterNames = list; 
+
+       public void setParameterNames(List list) {
+               if (list == null || list.size() == 0)
+                       return;
+               if (kvpairs == Collections.EMPTY_MAP)
+                       kvpairs = new HashMap();
+               kvpairs.put("parameterNames", list);
+               // parameterNames = list;
        }
 
        public List getParameterTypes() {
@@ -525,45 +555,52 @@ public class ProgramElement implements IProgramElement {
                }
                List params = new ArrayList();
                for (Iterator iter = l.iterator(); iter.hasNext();) {
-                       char[] param = (char[])iter.next();
+                       char[] param = (char[]) iter.next();
                        params.add(NameConvertor.convertFromSignature(param));
                }
                return params;
        }
-       
+
        public List getParameterSignatures() {
-               List parameters = (List)kvpairs.get("parameterSigs");
+               List parameters = (List) kvpairs.get("parameterSigs");
                return parameters;
        }
 
        public void setParameterSignatures(List list) {
-               if (kvpairs==Collections.EMPTY_MAP) kvpairs = new HashMap();
-               if (list==null || list.size()==0) kvpairs.put("parameterSigs",Collections.EMPTY_LIST);
-               else kvpairs.put("parameterSigs",list);
+               if (kvpairs == Collections.EMPTY_MAP)
+                       kvpairs = new HashMap();
+               if (list == null || list.size() == 0)
+                       kvpairs.put("parameterSigs", Collections.EMPTY_LIST);
+               else
+                       kvpairs.put("parameterSigs", list);
        }
-       
+
        public String getDetails() {
-               String details = (String)kvpairs.get("details");
-               return details; 
-       }
-       public void setDetails(String string) { 
-               if (kvpairs==Collections.EMPTY_MAP) kvpairs = new HashMap();
-               kvpairs.put("details",string);
-       }
-       
-       public void setFormalComment(String txt) { 
-               if (txt!=null && txt.length()>0) {
-                       if (kvpairs==Collections.EMPTY_MAP) kvpairs = new HashMap();
-                       kvpairs.put("formalComment",txt);
-               }
+               String details = (String) kvpairs.get("details");
+               return details;
+       }
+
+       public void setDetails(String string) {
+               if (kvpairs == Collections.EMPTY_MAP)
+                       kvpairs = new HashMap();
+               kvpairs.put("details", string);
        }
-       
-       public void setExtraInfo(ExtraInformation info) { 
-               if (kvpairs==Collections.EMPTY_MAP) kvpairs = new HashMap();
-               kvpairs.put("ExtraInformation",info);
+
+       public void setFormalComment(String txt) {
+               if (txt != null && txt.length() > 0) {
+                       if (kvpairs == Collections.EMPTY_MAP)
+                               kvpairs = new HashMap();
+                       kvpairs.put("formalComment", txt);
                }
+       }
+
+       public void setExtraInfo(ExtraInformation info) {
+               if (kvpairs == Collections.EMPTY_MAP)
+                       kvpairs = new HashMap();
+               kvpairs.put("ExtraInformation", info);
+       }
+
        public ExtraInformation getExtraInfo() {
-               return (ExtraInformation)kvpairs.get("ExtraInformation");
+               return (ExtraInformation) kvpairs.get("ExtraInformation");
        }
 }
-