//Annotated trace of AjBuildManager.batchBuild...
for "ajc Hello.java"
ajdtcore::Entering
execution(boolean org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(
                                AjBuildConfig, IMessageHandler)) 
                   arguments
(org.aspectj.ajdt.internal.core.builder.AjBuildConfig@b1b4c3,MessageHandler: no
messages)
ajdtcore::Entering execution(boolean org.aspectj.ajdt.internal.core.builder.AjBuildManager.doBuild(
AjBuildConfig, IMessageHandler, boolean))
            arguments
(org.aspectj.ajdt.internal.core.builder.AjBuildConfig@b1b4c3,MessageHandler: no
messages,true)
    // create an AjState
instance to hold state associated with the build
ajdtcore::Entering execution(org.aspectj.ajdt.internal.core.builder.AjState(AjBuildManager))
                      
arguments (AjBuildManager())
    ajdtcore::Exiting execution(org.aspectj.ajdt.internal.core.builder.AjState(AjBuildManager))
    // could we do an incremental build if we
wanted to...
ajdtcore::Entering execution(boolean org.aspectj.ajdt.internal.core.builder.AjState.prepareForNextBuild(
AjBuildConfig))
                      
arguments
(org.aspectj.ajdt.internal.core.builder.AjBuildConfig@b1b4c3)
ajdtcore::Exiting execution(boolean org.aspectj.ajdt.internal.core.builder.AjState.prepareForNextBuild(
                                   AjBuildConfig)) 
                     
return: false
     // check that aspectjrt.jar
is present on the classpath and has the right version
ajdtcore::Entering execution(String org.aspectj.ajdt.internal.core.builder.AjBuildManager.checkRtJar(AjBuildConfig))
                      
arguments
(org.aspectj.ajdt.internal.core.builder.AjBuildConfig@b1b4c3)
ajdtcore::Exiting execution(String org.aspectj.ajdt.internal.core.builder.AjBuildManager.checkRtJar(AjBuildConfig))
                     
return: null
     // remember the build configuration
ajdtcore::Entering execution(void org.aspectj.ajdt.internal.core.builder.AjBuildManager.setBuildConfig(
AjBuildConfig))
                      
arguments
(org.aspectj.ajdt.internal.core.builder.AjBuildConfig@b1b4c3)
ajdtcore::Exiting execution(void org.aspectj.ajdt.internal.core.builder.AjBuildManager.setBuildConfig(
AjBuildConfig))
                     
return: null
    // set up a new, empty structure model
ready to receive the results of the compilation
    ajdtcore::Entering execution(void org.aspectj.ajdt.internal.core.builder.AjBuildManager.setupModel())
arguments ()
      asm::Entering execution(StructureModel org.aspectj.asm.StructureModelManager.getStructureModel())
arguments ()
      asm::Exiting execution(StructureModel org.aspectj.asm.StructureModelManager.getStructureModel())
                   return: org.aspectj.asm.StructureModel@122cdb6
      // if there is a .lst
file specified, make that the root (there isn't in this case)
ajdtcore::Entering execution(File org.aspectj.ajdt.internal.core.builder.AjBuildConfig.getConfigFile())
                        
arguments ()
      // create a new ProgramElementNode
for the root of the structure model
      asm::Entering execution(org.aspectj.asm.ProgramElementNode(String, ProgramElementNode.Kind, List)) 
                   
arguments (<root>,java source file,[])
      asm::Exiting execution(org.aspectj.asm.ProgramElementNode(String, ProgramElementNode.Kind, List))
      asm::Entering execution(void org.aspectj.asm.StructureModel.setRoot(StructureNode))
arguments (<root>)
      asm::Exiting execution(void org.aspectj.asm.StructureModel.setRoot(StructureNode))
return: null
      // give it an empty file map
      asm::Entering execution(void org.aspectj.asm.StructureModel.setFileMap(HashMap)) arguments ({})
      asm::Exiting execution(void org.aspectj.asm.StructureModel.setFileMap(HashMap)) return: null
      // remember the model we just created
ajdtcore::Entering execution(void org.aspectj.ajdt.internal.core.builder.AjBuildManager.setStructureModel(
StructureModel))
                        
arguments (org.aspectj.asm.StructureModel@122cdb6)
ajdtcore::Exiting execution(void org.aspectj.ajdt.internal.core.builder.AjBuildManager.setStructureModel(
StructureModel))
                       
return: null
    ajdtcore::Exiting execution(void org.aspectj.ajdt.internal.core.builder.AjBuildManager.setupModel())
return: null
    // create a new BCEL World to use for the
batch compile
ajdtcore::Entering execution(void org.aspectj.ajdt.internal.core.builder.AjBuildManager.initBcelWorld(
                                       IMessageHandler))
                       arguments (MessageHandler:
no messages)
      //
get the classpath
      ajdtcore::Entering execution(List
org.aspectj.ajdt.internal.core.builder.AjBuildConfig.getClasspath()) arguments
()
      ajdtcore::Exiting execution(List
org.aspectj.ajdt.internal.core.builder.AjBuildConfig.getClasspath()) return: 
                       
[C:\ColyerRoot\Programs\SunJDK141\jre\lib\rt.jar, ...,
 
                         C:\ColyerRoot\Programs\aspectj1.1b4\lib\aspectjrt.jar]
      // create the BcelWorld
      weaver::Entering execution(org.aspectj.weaver.bcel.BcelWorld(List, IMessageHandler))
arguments ([C:\ColyerRoot\Programs\SunJDK141\jre\lib\rt.jar, ...
                                   C:\ColyerRoot\Programs\aspectj1.1b4\lib\aspectjrt.jar],MessageHandler: no messages)
        // superclass
constructor creates a new org.aspectj.weaver.CrosscuttingMembersSet
- this is a key data structure
        // initialise
a ClassPathManager
        weaver::Entering execution(org.aspectj.weaver.bcel.ClassPathManager(List, IMessageHandler)) 
                arguments ([C:\ColyerRoot\Programs\SunJDK141\jre\lib\rt.jar,
   
    C:\ColyerRoot\Programs\SunJDK141\jre\lib\i18n.jar,
    C:\ColyerRoot\Programs\SunJDK141\jre\lib\sunrsasign.jar,
    C:\ColyerRoot\Programs\SunJDK141\jre\lib\jsse.jar,
    C:\ColyerRoot\Programs\SunJDK141\jre\lib\jce.jar,
    C:\ColyerRoot\Programs\SunJDK141\jre\lib\charsets.jar,
    C:\ColyerRoot\Programs\SunJDK141\jre\classes,
    C:\ColyerRoot\Programs\SunJDK141\jre\lib\ext\aspectjrt.jar,
    C:\ColyerRoot\Programs\SunJDK141\jre\lib\ext\dnsns.jar,
    C:\ColyerRoot\Programs\SunJDK141\jre\lib\ext\ldapsec.jar,
    C:\ColyerRoot\Programs\SunJDK141\jre\lib\ext\localedata.jar,
    C:\ColyerRoot\Programs\SunJDK141\jre\lib\ext\sunjce_provider.jar,
    c:\ColyerRoot\Programs\aspectj1.1\lib\aspectjtools_g.jar,
    c:\ColyerRoot\Programs\aspectj1.1\lib\aspectjtools.jar,
    c:\ColyerRoot\Programs\aspectj1.1\lib\log4j-1.2.7.jar,
    c:\ColyerRoot\Programs\aspectj1.1\lib, ., 
    C:\ColyerRoot\Programs\aspectj1.1b4\lib\aspectjrt.jar],MessageHandler: no messages)
          // for each entry... validate and add
weaver::Entering execution(void org.aspectj.weaver.bcel.ClassPathManager.addPath(String, IMessageHandler))
                          
arguments
(C:\ColyerRoot\Programs\SunJDK141\jre\lib\rt.jar,MessageHandler: no messages)
weaver::Exiting execution(void org.aspectj.weaver.bcel.ClassPathManager.addPath(String, IMessageHandler))
                         
return: null
        weaver::Exiting execution(org.aspectj.weaver.bcel.ClassPathManager(List, IMessageHandler))
      weaver::Exiting execution(org.aspectj.weaver.bcel.BcelWorld(List, IMessageHandler))
      // set the XnoInline
option
ajdtcore::Entering execution(boolean org.aspectj.ajdt.internal.core.builder.AjBuildConfig.isXnoInline())
                        
arguments ()
ajdtcore::Exiting execution(boolean org.aspectj.ajdt.internal.core.builder.AjBuildConfig.isXnoInline())
                        
return: false
      weaver::Entering execution(void org.aspectj.weaver.World.setXnoInline(boolean))
arguments (false)
      weaver::Exiting execution(void org.aspectj.weaver.World.setXnoInline(boolean))
return: null
      // create a new BcelWeaver
for the world
      weaver::Entering execution(org.aspectj.weaver.bcel.BcelWeaver(BcelWorld))
arguments (BcelWorld())
weaver::Entering execution(CrosscuttingMembersSet org.aspectj.weaver.World.getCrosscuttingMembersSet())
                        
arguments ()
        weaver::Exiting execution(CrosscuttingMembersSet org.aspectj.weaver.World.getCrosscuttingMembersSet())
                       
return:
org.aspectj.weaver.CrosscuttingMembersSet@1f3aa07
      weaver::Exiting execution(org.aspectj.weaver.bcel.BcelWeaver(BcelWorld))
      // add each library in the aspectpath to the weaver (none in this case) using BcelWeaver.addLibraryJarFile
ajdtcore::Entering execution(List org.aspectj.ajdt.internal.core.builder.AjBuildConfig.getAspectpath())
                        
arguments ()
      ajdtcore::Exiting execution(List
org.aspectj.ajdt.internal.core.builder.AjBuildConfig.getAspectpath()) return:
[]
      // configure the lint options
ajdtcore::Entering execution(String org.aspectj.ajdt.internal.core.builder.AjBuildConfig.getLintMode())
                        
arguments ()
ajdtcore::Exiting execution(String org.aspectj.ajdt.internal.core.builder.AjBuildConfig.getLintMode())
                       
return: default
ajdtcore::Entering execution(String org.aspectj.ajdt.internal.core.builder.AjBuildConfig.getLintMode())
                        
arguments ()
ajdtcore::Exiting execution(String org.aspectj.ajdt.internal.core.builder.AjBuildConfig.getLintMode())
                       
return: default
      weaver::Entering execution(Lint org.aspectj.weaver.World.getLint()) arguments ()
      weaver::Exiting execution(Lint org.aspectj.weaver.World.getLint()) return:
org.aspectj.weaver.Lint@c832d2
      weaver::Entering execution(void org.aspectj.weaver.Lint.loadDefaultProperties()) arguments
()
      weaver::Exiting execution(void org.aspectj.weaver.Lint.loadDefaultProperties()) return:
null
ajdtcore::Entering execution(File org.aspectj.ajdt.internal.core.builder.AjBuildConfig.getLintSpecFile())
                        
arguments ()
ajdtcore::Exiting execution(File org.aspectj.ajdt.internal.core.builder.AjBuildConfig.getLintSpecFile())
                        
return: null
      // add each library in the injars to the weaver (none in this case) using BcelWeaver.addJarFile
      ajdtcore::Entering execution(List org.aspectj.ajdt.internal.core.builder.AjBuildConfig.getInJars())
arguments ()
      ajdtcore::Exiting
execution(List org.aspectj.ajdt.internal.core.builder.AjBuildConfig.getInJars())
return: []
      // attempt to resolve "org.aspectj.lang.JoinPoint" to verify that all is well
in the world
weaver::Entering execution(ResolvedTypeX org.aspectj.weaver.World.resolve(String))
                      
arguments (org.aspectj.lang.JoinPoint)
weaver::Entering execution(TypeX org.aspectj.weaver.TypeX.forName(String))
                        
arguments (org.aspectj.lang.JoinPoint)
          // convert to signature string
weaver::Entering execution(String org.aspectj.weaver.TypeX.nameToSignature(String))
                          
arguments (org.aspectj.lang.JoinPoint)
          weaver::Exiting execution(String org.aspectj.weaver.TypeX.nameToSignature(String)) 
                           return: Lorg/aspectj/lang/JoinPoint;
          // get the type for this signature,
it's either a primitive, array, or an object
weaver::Entering execution(TypeX org.aspectj.weaver.TypeX.forSignature(String))
                           arguments
(Lorg/aspectj/lang/JoinPoint;)
            // its an object
signature, create a new TypeX to hold it
            weaver::Entering execution(org.aspectj.weaver.TypeX(String)) arguments (Lorg/aspectj/lang/JoinPoint;)
            weaver::Exiting execution(org.aspectj.weaver.TypeX(String))
weaver::Exiting execution(TypeX org.aspectj.weaver.TypeX.forSignature(String))
                         
return: org.aspectj.lang.JoinPoint
        weaver::Exiting execution(TypeX org.aspectj.weaver.TypeX.forName(String))
return: org.aspectj.lang.JoinPoint
        // now we have a TypeX,
resolve it
weaver::Entering execution(ResolvedTypeX org.aspectj.weaver.World.resolve(TypeX))
                        
arguments (org.aspectj.lang.JoinPoint)
weaver::Entering execution(ResolvedTypeX org.aspectj.weaver.World.resolve(TypeX, boolean))
                           arguments
(org.aspectj.lang.JoinPoint,false)
            // get the signature
            weaver::Entering execution(String org.aspectj.weaver.TypeX.getSignature()) arguments ()
weaver::Exiting execution(String org.aspectj.weaver.TypeX.getSignature())
                            return:
Lorg/aspectj/lang/JoinPoint;
            // its not
in our typeMap, so better look for it
weaver::Entering execution(ResolvedTypeX org.aspectj.weaver.World.resolveObjectType(TypeX))
                             arguments
(org.aspectj.lang.JoinPoint)
              // create a resolved type name
weaver::Entering execution(org.aspectj.weaver.ResolvedTypeX.Name(String, World))
                               arguments (Lorg/aspectj/lang/JoinPoint;,BcelWorld())
              weaver::Exiting execution(org.aspectj.weaver.ResolvedTypeX.Name(String, World))
              // and resolve it
weaver::Entering execution(ResolvedTypeX.ConcreteName org.aspectj.weaver.bcel.BcelWorld.resolveObjectType(
ResolvedTypeX.Name))
                               arguments (org.aspectj.lang.JoinPoint)
                // look up the class in the classpath
weaver::Entering execution(JavaClass org.aspectj.weaver.bcel.BcelWorld.lookupJavaClass(
ClassPathManager, String))
arguments (C:\ColyerRoot\Programs\SunJDK141\jre\lib\rt.jar;...
                  // find the file that defines
the type
weaver::Entering execution(ClassPathManager.ClassFile org.aspectj.weaver.bcel.ClassPathManager.find(
TypeX))
                                   arguments (org.aspectj.lang.JoinPoint)
                    // look in the jars on the classpath...
weaver::Entering execution(ClassPathManager.ClassFile
org.aspectj.weaver.bcel.ClassPathManager.ZipFileEntry.find(String))
                                     arguments (org.aspectj.lang.JoinPoint)
weaver::Exiting execution(ClassPathManager.ClassFile
org.aspectj.weaver.bcel.ClassPathManager.ZipFileEntry.find(String))
                                    return: null
                    ...
weaver::Entering execution(ClassPathManager.ClassFile
org.aspectj.weaver.bcel.ClassPathManager.ZipFileEntry.find(String))
                                     arguments (org.aspectj.lang.JoinPoint)
weaver::Exiting execution(ClassPathManager.ClassFile
org.aspectj.weaver.bcel.ClassPathManager.ZipFileEntry.find(String))
                                    return:
org.aspectj.weaver.bcel.ClassPathManager$ZipEntryClassFile@139eeda
weaver::Exiting execution(ClassPathManager.ClassFile
org.aspectj.weaver.bcel.ClassPathManager.find(TypeX))
                                  return:
org.aspectj.weaver.bcel.ClassPathManager$ZipEntryClassFile@139eeda
                  // get the input stream and
file path
weaver::Entering execution(InputStream
org.aspectj.weaver.bcel.ClassPathManager.ZipEntryClassFile.getInputStream())
                                   arguments ()
weaver::Exiting execution(InputStream
org.aspectj.weaver.bcel.ClassPathManager.ZipEntryClassFile.getInputStream())
                                  return: java.util.zip.ZipFile$1@1b4fad5
weaver::Entering execution(String org.aspectj.weaver.bcel.ClassPathManager.ZipEntryClassFile.getPath())
                                   arguments ()
weaver::Exiting execution(String org.aspectj.weaver.bcel.ClassPathManager.ZipEntryClassFile.getPath())
                                   return: org/aspectj/lang/JoinPoint.class
                  // use bcel.classfile.ClassParser
to parse the file and return a BCEL JavaClass
weaver::Exiting execution(JavaClass org.aspectj.weaver.bcel.BcelWorld.lookupJavaClass(
                                               
ClassPathManager, String)) 
                              return: public abstract interface org.aspectj.lang.JoinPoint extends java.lang.Object
                                      filename        org/aspectj/lang/JoinPoint.class                                     
  compiled from         JoinPoint.java
  compiler
version      46.0
  access flags          1537
  constant pool         62 entries
  ACC_SUPER flag        false
  Attribute(s):
                                          SourceFile(JoinPoint.java)
                                          InnerClass:public static abstract 
org.aspectj.lang.JoinPoint$StaticPart("org.aspectj.lang.JoinPoint",   
                                       "StaticPart")
11 fields:
      public
static final String METHOD_EXECUTION = "method-execution"
      public
static final String METHOD_CALL = "method-call"
      public
static final String CONSTRUCTOR_EXECUTION = "constructor-execution"
      public
static final String CONSTRUCTOR_CALL = "constructor-call"
      public
static final String FIELD_GET = "field-get"
      public
static final String FIELD_SET = "field-set"
      public
static final String STATICINITIALIZATION = "staticinitialization"
      public
static final String PREINTIALIZATION = "preinitialization"
      public
static final String INITIALIZATION = "initialization"
      public
static final String EXCEPTION_HANDLER = "exception-handler"
      public
static final String ADVICE_EXECUTION = "advice-execution"
10 methods:
      public
abstract String toString()
      public
abstract String toShortString()
      public
abstract String toLongString()
      public
abstract Object getThis()
      public
abstract Object getTarget()
      public
abstract Object[] getArgs()
      public
abstract org.aspectj.lang.Signature getSignature()
      public
abstract org.aspectj.lang.reflect.SourceLocation getSourceLocation()
      public
abstract String getKind()
      public
abstract org.aspectj.lang.JoinPoint$StaticPart getStaticPart()
                // make the JavaClass
into a ResolvedTypeX.ConcreteName...
weaver::Entering execution(BcelObjectType org.aspectj.weaver.bcel.BcelWorld.makeBcelObjectType(
ResolvedTypeX.Name, JavaClass, boolean))
                                 arguments (org.aspectj.lang.JoinPoint,public
abstract interface ... 
weaver::Entering execution(org.aspectj.weaver.ResolvedTypeX.ConcreteName(ResolvedTypeX.Name, boolean))
     arguments
(org.aspectj.lang.JoinPoint,false)
                  weaver::Exiting execution(org.aspectj.weaver.ResolvedTypeX.ConcreteName(ResolvedTypeX.Name, boolean))
weaver::Entering execution(org.aspectj.weaver.bcel.BcelObjectType(
ResolvedTypeX.Name, JavaClass, boolean))
                                   arguments (org.aspectj.lang.JoinPoint,public
abstract interface … 
                    // remember the source
context (file name, enclosing type, package name)
weaver::Entering execution(org.aspectj.weaver.bcel.BcelSourceContext(BcelObjectType))
                                     arguments
(org.aspectj.weaver.bcel.BcelObjectType@12a0f6c)
                   
weaver::Exiting
execution(org.aspectj.weaver.bcel.BcelSourceContext(BcelObjectType))
weaver::Entering execution(void org.aspectj.weaver.ResolvedTypeX.Name.setSourceContext(
                                               ISourceContext))
                                     arguments
(org.aspectj.weaver.bcel.BcelSourceContext@5a9de6)
weaver::Exiting execution(void org.aspectj.weaver.ResolvedTypeX.Name.setSourceContext(
ISourceContext))
                                     return: null
                    // decode pointcuts, type mungers, declares, ... stored as attributes in the class file
weaver::Entering execution(void org.aspectj.weaver.bcel.BcelObjectType.unpackAspectAttributes())
 arguments ()
weaver::Entering execution(List org.aspectj.weaver.bcel.BcelAttributes.readAjAttributes(
                                                   
Attribute[], ISourceContext)) 
                                      arguments
                                      ([Lorg.apache.bcel.classfile.Attribute;@1c9a690,
                                      org.aspectj.weaver.bcel.BcelSourceContext@5a9de6)
weaver::Exiting execution(List org.aspectj.weaver.bcel.BcelAttributes.readAjAttributes(
Attribute[], ISourceContext))
                                      return: []
weaver::Exiting execution(void org.aspectj.weaver.bcel.BcelObjectType.unpackAspectAttributes())
                                    return: null
weaver::Exiting execution(org.aspectj.weaver.bcel.BcelObjectType(
                                     ResolvedTypeX.Name, JavaClass, boolean))
                  // point the name to its
resolved, concrete name
weaver::Entering execution(void org.aspectj.weaver.ResolvedTypeX.Name.setDelegate(
ResolvedTypeX.ConcreteName))
                                   arguments (org.aspectj.weaver.bcel.BcelObjectType@12a0f6c)
weaver::Exiting execution(void org.aspectj.weaver.ResolvedTypeX.Name.setDelegate(
ResolvedTypeX.ConcreteName))
                                   return: null
weaver::Exiting execution(BcelObjectType org.aspectj.weaver.bcel.BcelWorld.makeBcelObjectType(
ResolvedTypeX.Name, JavaClass, boolean))
                                return: org.aspectj.weaver.bcel.BcelObjectType@12a0f6c
weaver::Exiting execution(ResolvedTypeX.ConcreteName org.aspectj.weaver.bcel.BcelWorld.resolveObjectType(
ResolvedTypeX.Name))
                     
return:
org.aspectj.weaver.bcel.BcelObjectType@12a0f6c
weaver::Exiting execution(ResolvedTypeX org.aspectj.weaver.World.resolveObjectType(TypeX))
                            return:
org.aspectj.lang.JoinPoint
weaver::Exiting execution(ResolvedTypeX org.aspectj.weaver.World.resolve(TypeX, boolean))
                         
return: org.aspectj.lang.JoinPoint
weaver::Exiting execution(ResolvedTypeX org.aspectj.weaver.World.resolve(TypeX))
                       
return: org.aspectj.lang.JoinPoint
weaver::Exiting execution(ResolvedTypeX org.aspectj.weaver.World.resolve(String))
                     
return: org.aspectj.lang.JoinPoint
    // we
now exit initBcelWorld and are going back to doBuild...
ajdtcore::Exiting execution(void org.aspectj.ajdt.internal.core.builder.AjBuildManager.initBcelWorld(
IMessageHandler))
                      return:
null
    // do
we need to build a structure model?
ajdtcore::Entering execution(boolean org.aspectj.ajdt.internal.core.builder.AjBuildConfig.isEmacsSymMode())
                      
arguments ()
ajdtcore::Exiting execution(boolean org.aspectj.ajdt.internal.core.builder.AjBuildConfig.isEmacsSymMode())
                     
return: false
ajdtcore::Entering execution(boolean org.aspectj.ajdt.internal.core.builder.AjBuildConfig.isGenerateModelMode())
                      
arguments ()
ajdtcore::Exiting execution(boolean org.aspectj.ajdt.internal.core.builder.AjBuildConfig.isGenerateModelMode())
                     
return: false
    //
get the list of files to compile
    ajdtcore::Entering execution(List org.aspectj.ajdt.internal.core.builder.AjBuildConfig.getFiles())
arguments ()
    ajdtcore::Exiting
execution(List org.aspectj.ajdt.internal.core.builder.AjBuildConfig.getFiles())
                      return:
[C:\Documents and Settings\colyer\Hello.java]
    //
here we go! perform the compilation...
ajdtcore::Entering execution(void org.aspectj.ajdt.internal.core.builder.AjBuildManager.performCompilation(List))
                      
arguments ([C:\Documents and Settings\colyer\Hello.java])
      //
=======================================================================================
      //
details of compilation step in separate annotated trace
      //
=======================================================================================
ajdtcore::Exiting execution(void org.aspectj.ajdt.internal.core.builder.AjBuildManager.performCompilation(List))
                     
return: null
    //
record the fact that the compile succeeded
ajdtcore::Entering execution(void org.aspectj.ajdt.internal.core.builder.AjState.successfulCompile(AjBuildConfig))
     arguments
(org.aspectj.ajdt.internal.core.builder.AjBuildConfig@b1b4c3)
ajdtcore::Exiting execution(void org.aspectj.ajdt.internal.core.builder.AjState.successfulCompile(AjBuildConfig))
                     
return: null
    // perform any
weaving and output the classfiles to disk
ajdtcore::Entering execution(boolean org.aspectj.ajdt.internal.core.builder.AjBuildManager.
weaveAndGenerateClassFiles())
                    
arguments ()
    // add  any aspect class
files in AjState to the weaver
ajdtcore::Entering execution(void org.aspectj.ajdt.internal.core.builder.AjBuildManager.
addAspectClassFilesToWeaver(List))
                       
arguments ([UnwovenClassFile(C:\Documents
and Settings\colyer\Hello.class, Hello)])
      weaver::Entering execution(void org.aspectj.weaver.bcel.BcelWeaver.addClassFile(UnwovenClassFile)) 
                       arguments (UnwovenClassFile(C:\Documents and Settings\colyer\Hello.class, Hello))
weaver::Entering execution(BcelObjectType org.aspectj.weaver.bcel.BcelWorld.addSourceObjectType(JavaClass))
                        
arguments (public class Hello extends java.lang.Object …
          //
resolve the type (as before) and add to the type map
          // ...
weaver::Exiting execution(BcelObjectType org.aspectj.weaver.bcel.BcelWorld.addSourceObjectType(JavaClass))
                       
return: org.aspectj.weaver.bcel.BcelObjectType@f1fad1
      weaver::Exiting execution(void org.aspectj.weaver.bcel.BcelWeaver.addClassFile(UnwovenClassFile)) return: null
ajdtcore::Exiting execution(void org.aspectj.ajdt.internal.core.builder.AjBuildManager.
                                      addAspectClassFilesToWeaver(List)) return: null
    weaver::Entering
execution(Collection org.aspectj.weaver.bcel.BcelWeaver.weave())
arguments ()
      weaver::Entering execution(void org.aspectj.weaver.bcel.BcelWeaver.prepareForWeave())
arguments ()
        // get each class and resolve it
        weaver::Entering execution(String org.aspectj.weaver.bcel.UnwovenClassFile.getClassName())
arguments ()
        weaver::Exiting execution(String org.aspectj.weaver.bcel.UnwovenClassFile.getClassName())
return: Hello
        weaver::Entering execution(ResolvedTypeX org.aspectj.weaver.World.resolve(String))
arguments (Hello)
        weaver::Exiting execution(ResolvedTypeX org.aspectj.weaver.World.resolve(String))
return: Hello
        // if this class is an aspect, we may
need to reweave the world
        weaver::Entering execution(boolean org.aspectj.weaver.ResolvedTypeX.Name.isAspect())
arguments ()
          weaver::Entering execution(boolean org.aspectj.weaver.bcel.BcelObjectType.isAspect())
arguments ()
          weaver::Exiting execution(boolean org.aspectj.weaver.bcel.BcelObjectType.isAspect())
return: false
        weaver::Exiting execution(boolean org.aspectj.weaver.ResolvedTypeX.Name.isAspect())
return: false
        // get the list of entities to weave with
        weaver::Entering execution(List org.aspectj.weaver.CrosscuttingMembersSet.getShadowMungers())
arguments ()
        weaver::Exiting execution(List org.aspectj.weaver.CrosscuttingMembersSet.getShadowMungers())
return: []
        weaver::Entering execution(List org.aspectj.weaver.CrosscuttingMembersSet.getTypeMungers())
arguments ()
        weaver::Exiting execution(List org.aspectj.weaver.CrosscuttingMembersSet.getTypeMungers())
return: []
        weaver::Entering execution(List org.aspectj.weaver.CrosscuttingMembersSet.getDeclareParents())
arguments ()
        weaver::Exiting execution(List org.aspectj.weaver.CrosscuttingMembersSet.getDeclareParents())
return: []
      weaver::Exiting execution(void org.aspectj.weaver.bcel.BcelWeaver.prepareForWeave())
return: null
      //
for each file to be woven, reset its BcelObjectType
state
      weaver::Entering execution(ResolvedTypeX org.aspectj.weaver.World.resolve(String))
arguments (Hello)
      weaver::Exiting execution(ResolvedTypeX org.aspectj.weaver.World.resolve(String))
return: Hello
weaver::Entering execution(BcelObjectType org.aspectj.weaver.bcel.BcelWorld.getBcelObjectType(ResolvedTypeX))
                      
arguments (Hello)
weaver::Exiting execution(BcelObjectType org.aspectj.weaver.bcel.BcelWorld.getBcelObjectType(ResolvedTypeX))
                      
return:
org.aspectj.weaver.bcel.BcelObjectType@f1fad1
      weaver::Entering execution(void org.aspectj.weaver.bcel.BcelObjectType.resetState())
arguments ()
        // set all member lists to null,
then...
        weaver::Entering execution(void org.aspectj.weaver.bcel.BcelObjectType.unpackAspectAttributes())
arguments ()
        weaver::Exiting execution(void org.aspectj.weaver.bcel.BcelObjectType.unpackAspectAttributes())
return: null
      weaver::Exiting execution(void org.aspectj.weaver.bcel.BcelObjectType.resetState())
return: null
      // first pass over all files, calling
weave on their resolved types - generates list of applicable 
      // inter-type mungers
      weaver::Entering execution(String org.aspectj.weaver.bcel.UnwovenClassFile.getClassName())
arguments ()
      weaver::Exiting execution(String org.aspectj.weaver.bcel.UnwovenClassFile.getClassName())
return: Hello
      weaver::Entering execution(ResolvedTypeX org.aspectj.weaver.World.resolve(String))
arguments (Hello)
      weaver::Exiting
execution(ResolvedTypeX org.aspectj.weaver.World.resolve(String))
return: Hello
      weaver::Entering execution(void org.aspectj.weaver.bcel.BcelWeaver.weave(ResolvedTypeX)) arguments (Hello)
        weaver::Entering execution(void org.aspectj.weaver.ResolvedTypeX.clearInterTypeMungers())
arguments ()
        weaver::Exiting execution(void org.aspectj.weaver.ResolvedTypeX.clearInterTypeMungers())
return: null
        // process any declare parents (none in
this case),
        // then go through list of inter-type mungers seeing if they match on this type
        // add all matching inter-type mungers to the list for this type
      weaver::Exiting execution(void org.aspectj.weaver.bcel.BcelWeaver.weave(ResolvedTypeX)) return: null
      // second pass, weaving into aspects...
      weaver::Entering execution(String org.aspectj.weaver.bcel.UnwovenClassFile.getClassName())
arguments ()
      weaver::Exiting execution(String org.aspectj.weaver.bcel.UnwovenClassFile.getClassName())
return: Hello
      weaver::Entering execution(ResolvedTypeX org.aspectj.weaver.World.resolve(String))
arguments (Hello)
      weaver::Exiting execution(ResolvedTypeX org.aspectj.weaver.World.resolve(String))
return: Hello
weaver::Entering execution(BcelObjectType org.aspectj.weaver.bcel.BcelWorld.getBcelObjectType(ResolvedTypeX))
                      
arguments (Hello)
weaver::Exiting execution(BcelObjectType org.aspectj.weaver.bcel.BcelWorld.getBcelObjectType(ResolvedTypeX))
                      
return: org.aspectj.weaver.bcel.BcelObjectType@f1fad1
      weaver::Entering execution(boolean org.aspectj.weaver.bcel.BcelObjectType.isAspect())
arguments ()
        // not an aspect in this case so we do
nothing
      weaver::Exiting execution(boolean org.aspectj.weaver.bcel.BcelObjectType.isAspect())
return: false
      // third pass, weaving into
non-aspects...
      weaver::Entering execution(String org.aspectj.weaver.bcel.UnwovenClassFile.getClassName())
arguments ()
      weaver::Exiting execution(String org.aspectj.weaver.bcel.UnwovenClassFile.getClassName())
return: Hello
      weaver::Entering execution(ResolvedTypeX org.aspectj.weaver.World.resolve(String))
arguments (Hello)
      weaver::Exiting execution(ResolvedTypeX org.aspectj.weaver.World.resolve(String))
return: Hello
weaver::Entering execution(BcelObjectType org.aspectj.weaver.bcel.BcelWorld.getBcelObjectType(ResolvedTypeX))
                      
arguments (Hello)
weaver::Exiting execution(BcelObjectType org.aspectj.weaver.bcel.BcelWorld.getBcelObjectType(ResolvedTypeX))
                     
return:
org.aspectj.weaver.bcel.BcelObjectType@f1fad1
      weaver::Entering execution(boolean org.aspectj.weaver.bcel.BcelObjectType.isAspect())
arguments ()
      // not an aspect so weave...
      weaver::Exiting execution(boolean org.aspectj.weaver.bcel.BcelObjectType.isAspect())
return: false
weaver::Entering execution(LazyClassGen org.aspectj.weaver.bcel.BcelWeaver.weave(UnwovenClassFile, BcelObjectType))
arguments (UnwovenClassFile(C:\Documents and Settings\colyer\Hello.class,
                                  Hello),org.aspectj.weaver.bcel.BcelObjectType@f1fad1)
weaver::Entering execution(LazyClassGen org.aspectj.weaver.bcel.BcelWeaver.weave(
UnwovenClassFile, BcelObjectType, boolean))
arguments (UnwovenClassFile(C:\Documents and Settings\colyer\Hello.class,
                                        Hello),org.aspectj.weaver.bcel.BcelObjectType@f1fad1,true)
          // is this an ajc
generated type? (has $ajc in
name)
          weaver::Entering execution(boolean org.aspectj.weaver.bcel.BcelObjectType.isSynthetic())
arguments ()
          weaver::Exiting execution(boolean org.aspectj.weaver.bcel.BcelObjectType.isSynthetic())
return: false
          // get the JavaClass
          weaver::Entering
execution(JavaClass org.aspectj.weaver.bcel.BcelObjectType.getJavaClass())
arguments ()
weaver::Exiting execution(JavaClass org.aspectj.weaver.bcel.BcelObjectType.getJavaClass())
                         
return: public class Hello extends java.lang.Object …
          // get the set of shadow mungers that may match
weaver::Entering execution(List org.aspectj.weaver.bcel.BcelWeaver.fastMatch(List, ResolvedTypeX))
                          
arguments ([],Hello)
          weaver::Exiting
execution(List org.aspectj.weaver.bcel.BcelWeaver.fastMatch(List,
ResolvedTypeX)) return: []
          // get
the set of inter-type mungers defined for the type
          weaver::Entering execution(List org.aspectj.weaver.ResolvedTypeX.getInterTypeMungers())
arguments ()
          weaver::Exiting execution(List org.aspectj.weaver.ResolvedTypeX.getInterTypeMungers())
return: []
          // if there were either shadow or inter-type
mungers matching, we would call BcelClassWeaver.weave
at this 
          // point, but there aren't for compiling
hello world.
          // dump out
the class file
weaver::Entering execution(void org.aspectj.weaver.bcel.BcelWeaver.dumpUnchanged(UnwovenClassFile))
                          
arguments (UnwovenClassFile(C:\Documents
and Settings\colyer\Hello.class, Hello))
            weaver::Entering
execution(void org.aspectj.weaver.bcel.UnwovenClassFile.writeUnchangedBytes())
arguments ()
              weaver::Entering
execution(byte[] org.aspectj.weaver.bcel.UnwovenClassFile.getBytes())
arguments ()
              weaver::Exiting
execution(byte[] org.aspectj.weaver.bcel.UnwovenClassFile.getBytes())
return: [B@15b55bc
weaver::Entering execution(void org.aspectj.weaver.bcel.UnwovenClassFile.writeWovenBytes(byte[], List))
                               arguments ([B@15b55bc,[])
weaver::Entering execution(void org.aspectj.weaver.bcel.UnwovenClassFile.writeChildClasses(List))
                                 arguments ([])
weaver::Entering execution(void org.aspectj.weaver.bcel.UnwovenClassFile.deleteAllChildClasses())
                                   arguments ()
weaver::Exiting execution(void org.aspectj.weaver.bcel.UnwovenClassFile.deleteAllChildClasses())
                                  return: null
weaver::Exiting execution(void org.aspectj.weaver.bcel.UnwovenClassFile.writeChildClasses(List))
                                 return: null
util::Entering execution(BufferedOutputStream org.aspectj.util.FileUtil.makeOutputStream(File))
                               arguments (C:\Documents and Settings\colyer\Hello.class)
util::Exiting execution(BufferedOutputStream org.aspectj.util.FileUtil.makeOutputStream(File))
                              return: java.io.BufferedOutputStream@8c858a
weaver::Exiting execution(void org.aspectj.weaver.bcel.UnwovenClassFile.writeWovenBytes(byte[], List))
                              return: null
            weaver::Exiting execution(void org.aspectj.weaver.bcel.UnwovenClassFile.writeUnchangedBytes())
return: null
          weaver::Exiting
execution(void org.aspectj.weaver.bcel.BcelWeaver.dumpUnchanged(UnwovenClassFile)) return: null
weaver::Exiting execution(LazyClassGen org.aspectj.weaver.bcel.BcelWeaver.weave(
                                       UnwovenClassFile,
BcelObjectType)) return: null
    weaver::Exiting
execution(Collection org.aspectj.weaver.bcel.BcelWeaver.weave())
return: [Hello]
  
ajdtcore::Exiting execution(boolean org.aspectj.ajdt.internal.core.builder.AjBuildManager.
                                   weaveAndGenerateClassFiles()) return: true
    // should we
generate structure model?
ajdtcore::Entering execution(boolean org.aspectj.ajdt.internal.core.builder.AjBuildConfig.isGenerateModelMode())
                      
arguments ()
ajdtcore::Exiting execution(boolean org.aspectj.ajdt.internal.core.builder.AjBuildConfig.isGenerateModelMode())
                     
return: false
ajdtcore::Exiting execution(boolean org.aspectj.ajdt.internal.core.builder.AjBuildManager.doBuild(
                                 AjBuildConfig, IMessageHandler, boolean)) return: true
ajdtcore::Exiting execution(boolean org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(
AjBuildConfig, IMessageHandler)) return: true