From 92edca3ea7a482d59a9086b1cb61413ed8604b67 Mon Sep 17 00:00:00 2001 From: Alexander Kriegisch Date: Sat, 10 Apr 2021 19:19:39 +0700 Subject: Remove indentation from blocks in docs Many dozens (hundreds?) of documentation code blocks were indented to match the surrounding XML or just arbitrarily. The thing is: Inside tags, similar to
 tags, line feeds and leading
whitespace are being preserved, which looked very awkward in the HTML
documentation. While a few files were mostly correct in this respect,
which shows that it was meant to be like that, many others were not.
This was tedious, stupid work to fix, but it had to be done.

Please note that the documentation was in no way updated content-wise.
This is also overdue, but not my focus here.

Signed-off-by: Alexander Kriegisch 
---
 docs/progGuideDB/examples.xml       | 403 +++++++++----------
 docs/progGuideDB/implementation.xml |  92 ++---
 docs/progGuideDB/language.xml       | 274 ++++++-------
 docs/progGuideDB/semantics.xml      | 743 ++++++++++++++++++------------------
 4 files changed, 757 insertions(+), 755 deletions(-)

(limited to 'docs/progGuideDB')

diff --git a/docs/progGuideDB/examples.xml b/docs/progGuideDB/examples.xml
index e3f109e98..f0ce3808e 100644
--- a/docs/progGuideDB/examples.xml
+++ b/docs/progGuideDB/examples.xml
@@ -541,14 +541,14 @@ public aspect ComparablePoint {
         
 
         
-          The method Object.hashCode returns an 
+          The method Object.hashCode returns an
           integer, suitable for use as a hash table key.  It is not required
-          that two objects which are not equal (according to the 
+          that two objects which are not equal (according to the
           equals method) return different integer
           results from hashCode but it can
-          improve performance when the integer is used as a key into a 
-          data structure.  However, any two objects which are equal 
-          must return the same integer value from a call to 
+          improve performance when the integer is used as a key into a
+          data structure.  However, any two objects which are equal
+          must return the same integer value from a call to
           hashCode.  Since the default implementation
           of Object.equals returns true
           only when two objects are identical, we need to redefine both
@@ -851,7 +851,7 @@ aspect TraceMyClasses {
       
 
 
 
       
@@ -969,7 +969,7 @@ public aspect TraceMyClasses extends Trace {
       
 
 
 
       
@@ -1099,7 +1099,7 @@ abstract aspect Trace {
       
 
       
-        This example examines an aspect that makes Point objects into 
+        This example examines an aspect that makes Point objects into
         Java beans with bound properties.
       
 
@@ -1190,10 +1190,10 @@ class Point {
         Point's "beanness". The first thing it does is
         privately declare that each Point has a
         support field that holds reference to an
-        instance of PropertyChangeSupport.  
+        instance of PropertyChangeSupport.
 
 
 
         The property change support object must be constructed with a
@@ -1210,24 +1210,24 @@ class Point {
         which delegate the work to the property change support object:
 
 
       
 
@@ -1237,7 +1237,7 @@ class Point {
         Serializable interface:
 
 
 
         Implementing this interface in Java does not require any methods to
@@ -1254,7 +1254,7 @@ class Point {
         Y properties, calls the original
         set method and then fires the appropriate
         property change event according to which set method was
-        called. 
+        called.
       
 
 
 
 
 
     
@@ -1381,7 +1381,7 @@ java bean.Demo
 
       
         This demo illustrates how the Subject/Observer design pattern can be
-        coded with aspects. 
+        coded with aspects.
       
 
       
@@ -1419,26 +1419,26 @@ java bean.Demo
       
 
 
 
-       
+      
         The Observer interface is just as simple,
         with methods to set and get Subject objects,
         and a method to call when the subject gets updated.
       
 
 
 
       
@@ -1449,32 +1449,32 @@ java bean.Demo
       
 
 
 
       
@@ -1482,7 +1482,7 @@ java bean.Demo
         pointcut that extending aspects can override. It defines advice
         that should run after the join points of the pointcut. And it
         declares an inter-type field and two inter-type methods so that
-        each Observer can hold onto its Subject. 
+        each Observer can hold onto its Subject.
       
     
 
@@ -1497,28 +1497,28 @@ java bean.Demo
       
 
 
 
       
@@ -1531,24 +1531,24 @@ java bean.Demo
       
 
 
 
       
@@ -1577,7 +1577,8 @@ aspect SubjectObserverProtocolImpl extends SubjectObserverProtocol {
         target(s) &&
         call(void Button.click());
 
-}]]>
+}
+]]>
 
       
         It does this by assuring that Button and
@@ -1594,7 +1595,7 @@ aspect SubjectObserverProtocolImpl extends SubjectObserverProtocol {
     
       Compiling and Running
 
-       
+      
         Demo is the top class that starts this
         demo. It instantiates a two buttons and three observers and links
         them together as subjects and observers. So to run the demo, go to
@@ -1602,8 +1603,8 @@ aspect SubjectObserverProtocolImpl extends SubjectObserverProtocol {
       
 
 
 
       
@@ -1803,43 +1804,43 @@ public class Customer {
       
 
 
 
     
@@ -1854,23 +1855,23 @@ public class Customer {
       
 
 
 
 
 
       
@@ -1913,22 +1914,22 @@ java telecom.BasicSimulation
         
 
 
 
         
@@ -1963,14 +1964,14 @@ public aspect TimerLog {
 
         
           The Timing aspect is declares an
-          inter-type field totalConnectTime for 
+          inter-type field totalConnectTime for
           Customer to store the accumulated connection
           time per Customer.  It also declares that
-          each Connection object has a timer. 
+          each Connection object has a timer.
 
 
 
           Two pieces of after advice ensure that the timer is started when
@@ -2029,7 +2030,7 @@ public aspect Timing {
         runs after Timing's advice on the same join
         point.  Finally, it declares inter-type methods and fields for
         Customer to handle the
-        totalCharge. 
+        totalCharge.
       
 
 
 
 
       
 
@@ -2115,8 +2116,8 @@ public aspect Billing {
       
 
 
 
       
@@ -2125,8 +2126,8 @@ public aspect Billing {
       
 
 
 
       
@@ -2199,8 +2200,8 @@ public aspect Billing {
 	
 
 
 
 	
@@ -2210,7 +2211,7 @@ public aspect Billing {
 	
 
 
 
 	
@@ -2219,8 +2220,8 @@ public aspect Billing {
 	
 
 
 
 	
@@ -2230,7 +2231,7 @@ public aspect Billing {
 	
 
 
 
 	
diff --git a/docs/progGuideDB/implementation.xml b/docs/progGuideDB/implementation.xml
index 52da14d9c..e1fa05f2b 100644
--- a/docs/progGuideDB/implementation.xml
+++ b/docs/progGuideDB/implementation.xml
@@ -5,7 +5,7 @@
 
   Compiler Notes
 
-   
+  
     The initial implementations of AspectJ have all been
     compiler-based implementations.  Certain elements of AspectJ's
     semantics are difficult to implement without making modifications
@@ -25,7 +25,7 @@
   
 
 
 
   
@@ -36,7 +36,7 @@
     compiled, whether changes were made later, etc.
   
 
-     
+  
     But AspectJ implementations are permitted to deviate from this in
     a well-defined way -- they are permitted to advise only accesses
     in code the implementation controls.  Each
@@ -67,11 +67,11 @@
     can be advised only if ajc controls the bytecode for the method or
     constructor body in question.
   	The end of an exception handler is underdetermined in bytecode,
-  	so ajc will not implement after or around advice on handler join 
+  	so ajc will not implement after or around advice on handler join
   	points.
-  	Similarly, ajc cannot implement around advice on initialization 
-  	or preinitialization join points.  
-    In cases where ajc cannot implement advice, it will emit a 
+  	Similarly, ajc cannot implement around advice on initialization
+  	or preinitialization join points.
+    In cases where ajc cannot implement advice, it will emit a
     compile-time error noting this as a compiler limitation.
   
 
@@ -100,35 +100,35 @@
   
   
   	When declaring members on interfaces, the implementation must
-  	control both the interface and the top-level implementors of 
+  	control both the interface and the top-level implementors of
   	that interface (the classes that implement the interface but
   	do not have a superclass that implements the interface).
   	You may weave these separately, but be aware that you will get
   	runtime exceptions if you run the affected top-level classes
-  	without the interface as produced by the same ajc implementation.  	
-  	Any intertype declaration of an abstract method on an interface 
-  	must be specified as public, you will get a compile time error 
-  	message indicating this is a compiler limitation if you do not 
+  	without the interface as produced by the same ajc implementation.
+  	Any intertype declaration of an abstract method on an interface
+  	must be specified as public, you will get a compile time error
+  	message indicating this is a compiler limitation if you do not
   	specify public.  A non-abstract method declared on an interface
   	can use any access modifier except protected.  Note that this is
-  	different to normal Java rules where all members declared in 
+  	different to normal Java rules where all members declared in
   	an interface are implicitly public.
-  	Finally, note that one cannot define static fields or methods 
+  	Finally, note that one cannot define static fields or methods
   	on interfaces.
   
   
-	When declaring methods on target types, only methods declared 
-	public are recognizable in the bytecode, so methods must be 
-	declared public to be overridden in any subtype or to be called 
+	When declaring methods on target types, only methods declared
+	public are recognizable in the bytecode, so methods must be
+	declared public to be overridden in any subtype or to be called
 	from code in a later compile using the target type as a library.
   
-    
+
   
     Other AspectJ implementations, indeed, future versions of ajc, may
     define code the implementation controls more
     liberally or restrictively, so long as they comport with the Java
 	language.  For example, the call pointcut does
-	not pick out reflective calls to a method implemented in 
+	not pick out reflective calls to a method implemented in
 	java.lang.reflect.Method.invoke(Object, Object[]).
 	Some suggest that the call "happens" and the call pointcut should
 	pick it out, but the AspectJ language shouldn't anticipate what happens
@@ -172,12 +172,12 @@
     
 
 
 
     In short, the join point model of the current AspectJ
@@ -217,7 +217,7 @@
   
 
 
 
    will capture all join points in the control flow of a call to
@@ -236,9 +236,9 @@
   
 
 
 
   
@@ -258,16 +258,16 @@
   
 
 
 
   
     are considered part of constructors by the time AspectJ gets ahold
     of bytecode.  That is, the assignment of d to the square root of
     two happens inside the default constructor of
-    C.  
+    C.
   
 
   
@@ -280,15 +280,15 @@
   
 
 
-  
+
   
     It is the job of an inter-type constructor to do all the required
     initialization, or to delegate to a this
@@ -302,8 +302,8 @@
   Writing aspects in annotation-style is subject to the same
       bytecode limitations since the binary aspects take the same
       form and are woven in the same way.  However, the implementation
-      differences (e.g., the mechanism for implementing around advice) 
-      may be apparent at runtime.  See the documentation on annotation-style 
+      differences (e.g., the mechanism for implementing around advice)
+      may be apparent at runtime.  See the documentation on annotation-style
       for more information.
   
 
@@ -311,7 +311,7 @@
   Summary of implementation requirements
   
 	This summarizes the requirements of our implementation of AspectJ.
-	For more details, see the relevant sections of this guide.	  
+	For more details, see the relevant sections of this guide.
   
  
 	
@@ -343,7 +343,7 @@
 	  Implementation Caveats
 		 
 			
-			  The initialization and preinitialization join points 
+			  The initialization and preinitialization join points
 				  do not support around advice
 			
 			
@@ -355,7 +355,7 @@
 				 
 			
 			
-			  Declaring members on an interface in an aspect affects only 
+			  Declaring members on an interface in an aspect affects only
 				the topmost implementing classes the implementation controls.
 			
 			
@@ -363,7 +363,7 @@
 			
 			
 			  
-                  Runtime ClassCastException may result 
+                  Runtime ClassCastException may result
                   from supplying a supertype of the actual type as an argument
                   to proceed(..) in around advice.
 			
diff --git a/docs/progGuideDB/language.xml b/docs/progGuideDB/language.xml
index c666c106a..48b0fa62d 100644
--- a/docs/progGuideDB/language.xml
+++ b/docs/progGuideDB/language.xml
@@ -623,10 +623,10 @@ interface MyInterface { ... }
       
 
 
-  P ---------------------
+P ---------------------
+  \
+   \  cflow of P
     \
-     \  cflow of P
-      \
 
 
 
@@ -639,16 +639,16 @@ interface MyInterface { ... }
       
 
 
-          P ---------------------
+        P ---------------------
+          \
+           \  cflow of P
             \
-             \  cflow of P
+             \
               \
-               \
-                \
-  Q -------------\-------
+Q -------------\-------
+  \             \
+   \  cflow of Q \ cflow(P) && cflow(Q)
     \             \
-     \  cflow of Q \ cflow(P) && cflow(Q)
-      \             \
 
 
       
@@ -666,10 +666,10 @@ interface MyInterface { ... }
       
 
 
-   P && Q -------------------
-          \
-           \ cflow of (P && Q)
-            \
+P && Q -------------------
+       \
+        \ cflow of (P && Q)
+         \
 
 
       
@@ -715,7 +715,7 @@ aspect A  {
 
       
           The !within(A)
-          pointcut above is required to avoid the printPC 
+          pointcut above is required to avoid the printPC
           pointcut applying to the System.out.println
           call in the advice body. If this was not present a recursive call
           would result as the pointcut would apply to its own advice.
@@ -734,9 +734,9 @@ aspect A  {
       
 
 
 
       
@@ -751,9 +751,9 @@ aspect A  {
       
 
 
 
       
@@ -774,9 +774,9 @@ aspect A  {
       
 
 
 
       
@@ -796,9 +796,9 @@ aspect A  {
       
 
 
 
       
@@ -828,9 +828,9 @@ pointcut setter(Point p, int newval): target(p) &&
         following pointcut definition will result in a compilation error:
 
 
 
         because p1 is only bound when calling
@@ -856,38 +856,38 @@ pointcut setter(Point p, int newval): target(p) &&
       
 
 
 
     
-    
+
     
       Writing good pointcuts
 
@@ -919,15 +919,15 @@ pointcut setter(Point p, int newval): target(p) &&
     	
       
       
-      A well written pointcut should 
+      A well written pointcut should
       try and include at least the first two types (kinded and scoping), whilst the contextual designators may be included if wishing to
-      match based on join point context, or bind that context for use in the advice.  Supplying either just a kinded designator or 
-      just a contextual designator will work but could affect weaving performance (time and memory used) 
-      due to all the extra processing and analysis. 
-      Scoping designators are very fast to match, they can very quickly dismiss groups of join points that should not be further 
+      match based on join point context, or bind that context for use in the advice.  Supplying either just a kinded designator or
+      just a contextual designator will work but could affect weaving performance (time and memory used)
+      due to all the extra processing and analysis.
+      Scoping designators are very fast to match, they can very quickly dismiss groups of join points that should not be further
       processed - that is why a good pointcut should always include one if possible.
       
-      
+
     
   
 
@@ -945,14 +945,14 @@ pointcut setter(Point p, int newval): target(p) &&
     
 
 
 
     
@@ -961,12 +961,12 @@ pointcut setter(Point p, int newval): target(p) &&
     
 
 
 
     
@@ -979,9 +979,9 @@ pointcut setter(Point p, int newval): target(p) &&
     
 
 
 
     
@@ -991,9 +991,9 @@ pointcut setter(Point p, int newval): target(p) &&
     
 
 
 
     
@@ -1004,9 +1004,9 @@ pointcut setter(Point p, int newval): target(p) &&
     
 
 
 
     
@@ -1018,9 +1018,9 @@ pointcut setter(Point p, int newval): target(p) &&
     
 
 
 
     
@@ -1059,7 +1059,7 @@ void around(Point p, int x): target(p)
       initialized to false:
 
 
 
       It is declared private, which means that it is
@@ -1077,7 +1077,7 @@ void around(Point p, int x): target(p)
       arguments that returns whatever this.x is:
 
 
 
       Inside the body, this is the
@@ -1092,7 +1092,7 @@ void around(Point p, int x): target(p)
       Point:
 
 
 
     
@@ -1103,7 +1103,7 @@ void around(Point p, int x): target(p)
       to zero:
 
 
 
       Because this is publically declared, it is an error if
@@ -1117,7 +1117,7 @@ void around(Point p, int x): target(p)
       Comparable interface:
 
 
 
       Of course, this will be an error unless Point
@@ -1129,7 +1129,7 @@ void around(Point p, int x): target(p)
       GeometricObject class.
 
 
     
 
@@ -1138,8 +1138,8 @@ void around(Point p, int x): target(p)
       following declarations
 
 
 
       publicly declare that Point has both a String field
@@ -1155,13 +1155,13 @@ void around(Point p, int x): target(p)
       interface:
 
 
 
       This declares a marker interface HasName, and also declares that any
@@ -1193,7 +1193,7 @@ void around(Point p, int x): target(p)
         aspect makes a private inter-type declaration of a field
 
 
 
         Then code in the aspect can refer to Foo's
@@ -1230,38 +1230,38 @@ void around(Point p, int x): target(p)
       
 
 = 0);
-      }
-      private boolean Point.assertY(int y) {
-          return (y <= 100 && y >= 0);
-      }
-
-      before(Point p, int x): target(p) && args(x) && call(void setX(int)) {
-          if (!p.assertX(x)) {
-              System.out.println("Illegal value for x"); return;
-          }
-      }
-      before(Point p, int y): target(p) && args(y) && call(void setY(int)) {
-          if (!p.assertY(y)) {
-              System.out.println("Illegal value for y"); return;
-          }
-      }
-  }
+aspect PointAssertions {
+
+    private boolean Point.assertX(int x) {
+        return (x <= 100 && x >= 0);
+    }
+    private boolean Point.assertY(int y) {
+        return (y <= 100 && y >= 0);
+    }
+
+    before(Point p, int x): target(p) && args(x) && call(void setX(int)) {
+        if (!p.assertX(x)) {
+            System.out.println("Illegal value for x"); return;
+        }
+    }
+    before(Point p, int y): target(p) && args(y) && call(void setY(int)) {
+        if (!p.assertY(y)) {
+            System.out.println("Illegal value for y"); return;
+        }
+    }
+}
 ]]>
 
     
@@ -1290,11 +1290,11 @@ void around(Point p, int x): target(p)
     
 
 
 
     
@@ -1304,7 +1304,7 @@ void around(Point p, int x): target(p)
       arguments of the join point:
 
 
 
       In addition, it holds an object consisting of all the static
@@ -1312,7 +1312,7 @@ void around(Point p, int x): target(p)
       and static signature:
 
 
 
       If you only need the static information about the join point, you may
@@ -1327,11 +1327,11 @@ void around(Point p, int x): target(p)
     
 
 
 
     
diff --git a/docs/progGuideDB/semantics.xml b/docs/progGuideDB/semantics.xml
index 23d1fb2d6..6bba37818 100644
--- a/docs/progGuideDB/semantics.xml
+++ b/docs/progGuideDB/semantics.xml
@@ -204,7 +204,7 @@
       this expression would pick out at the join
       point.  The target object is where control or attention is
       transferred to by the join point.  The arguments are those
-      values passed for that transfer of control or attention. 
+      values passed for that transfer of control or attention.
     
 
     
@@ -216,7 +216,7 @@
             Target Object
             Arguments
           
-          
+       
        
           
             Method Call
@@ -296,7 +296,7 @@
      
 
      ** There is no target object for join points associated
-     with static methods or fields. 
+     with static methods or fields.
      
 
   
@@ -485,9 +485,9 @@
         
           Picks out each join point where the arguments are instances of
           the appropriate type (or type of the identifier if using that form). A
-          null argument is matched iff the static type of the 
+          null argument is matched iff the static type of the
           argument (declared parameter type or field type) is the same as, or a subtype of,
-          the specified args type. 
+          the specified args type.
         
       
 
@@ -556,8 +556,8 @@
       
 
 
-  pointcut publicIntCall(int i):
-      call(public * *(int))  args(i);
+pointcut publicIntCall(int i):
+    call(public * *(int))  args(i);
 
 
       
@@ -568,15 +568,15 @@
       
 
 
-  class C {
-      pointcut publicCall(int i):
-	  call(public * *(int))  args(i);
-  }
+class C {
+    pointcut publicCall(int i):
+  call(public * *(int))  args(i);
+}
 
-  class D {
-      pointcut myPublicCall(int i):
-	  C.publicCall(i)  within(SomeType);
-  }
+class D {
+    pointcut myPublicCall(int i):
+  C.publicCall(i)  within(SomeType);
+}
 
 
       
@@ -586,9 +586,9 @@
       
 
 
-  abstract aspect A {
-      abstract pointcut publicCall(int i);
-  }
+abstract aspect A {
+    abstract pointcut publicCall(int i);
+}
 
 
       
@@ -597,9 +597,9 @@
       
 
 
-  aspect B extends A {
-      pointcut publicCall(int i): call(public Foo.m(int))  args(i);
-  }
+aspect B extends A {
+    pointcut publicCall(int i): call(public Foo.m(int))  args(i);
+}
 
 
       
@@ -622,9 +622,9 @@
       
 
 
-  aspect B percflow(publicCall()) {
-      pointcut publicCall(): call(public Foo.m(int));
-  }
+aspect B percflow(publicCall()) {
+    pointcut publicCall(): call(public Foo.m(int));
+}
 
     
 
@@ -653,7 +653,7 @@
       
 
 
-  pointcut intArg(int i): args(i);
+pointcut intArg(int i): args(i);
 
 
       
@@ -662,7 +662,7 @@
         char; anything assignable to an
         int) is being passed as an argument.
         Second, though, it makes the value of that argument
-        available to the enclosing advice or pointcut.  
+        available to the enclosing advice or pointcut.
       
 
       
@@ -670,8 +670,8 @@
       
 
 
-  pointcut publicCall(int x): call(public *.*(int))  intArg(x);
-  pointcut intArg(int i): args(i);
+pointcut publicCall(int x): call(public *.*(int))  intArg(x);
+pointcut intArg(int i): args(i);
 
 
       
@@ -686,7 +686,7 @@
       
 
 
-  pointcut publicCall(): call(public *.*(..))  args(Object);
+pointcut publicCall(): call(public *.*(..))  args(Object);
 
 
       
@@ -696,7 +696,7 @@
       
 
 
-  pointcut publicCall(Object o): call(public *.*(..))  args(o);
+pointcut publicCall(Object o): call(public *.*(..))  args(o);
 
 
       
@@ -712,23 +712,23 @@
       
 
 
-  public class InstanceOf {
+public class InstanceOf {
 
-    public static void main(String[] args) {
-      doInt(5);
-    }
-
-    static void doInt(int i) {  }
+  public static void main(String[] args) {
+    doInt(5);
   }
 
-  aspect IntToLong {
-    pointcut el(long l) : 
-        execution(* doInt(..))  args(l);
+  static void doInt(int i) {  }
+}
 
-    before(Object o) : el(o) {
-         System.out.println(o.getClass());
-    }
+aspect IntToLong {
+  pointcut el(long l) :
+      execution(* doInt(..))  args(l);
+
+  before(Object o) : el(o) {
+       System.out.println(o.getClass());
   }
+}
 
 
       
@@ -775,13 +775,13 @@
         
 
  MAX_CHANGE)
-	      throw new RuntimeException();
-      }
-  }
+aspect GuardedX {
+    static final int MAX_CHANGE = 100;
+    before(int newval): set(static int T.x) && args(newval) {
+  if (Math.abs(newval - T.x) > MAX_CHANGE)
+      throw new RuntimeException();
+    }
+}
 ]]>
 
       
@@ -838,11 +838,11 @@
         
 
 
-  aspect NormalizeFooException {
-      before(FooException e): handler(FooException)  args(e) {
-	  e.normalize();
-      }
-  }
+aspect NormalizeFooException {
+    before(FooException e): handler(FooException)  args(e) {
+  e.normalize();
+    }
+}
 
 
       
@@ -865,13 +865,13 @@
         
 
 
-  aspect TraceStuff {
-      pointcut myAdvice(): adviceexecution()  within(TraceStuff);
+aspect TraceStuff {
+    pointcut myAdvice(): adviceexecution()  within(TraceStuff);
 
-      before(): call(* *(..))  !cflow(myAdvice) {
-	  // do something
-      }
-  }
+    before(): call(* *(..))  !cflow(myAdvice) {
+  // do something
+    }
+}
 
 
       
@@ -926,7 +926,7 @@
         
 
 
-  args(int, .., String)
+args(int, .., String)
 
 
         
@@ -978,7 +978,7 @@
             cflowbelow pointcuts may expose context
             state through enclosed this,
             target, and args
-            pointcuts. 
+            pointcuts.
           
 
           
@@ -1006,7 +1006,7 @@ class Test {
 aspect A {
     pointcut entry(int i): call(int fact(int))  args(i);
     pointcut writing(): call(void println(String))  ! within(A);
-    
+
     before(int i): writing()  cflow(entry(i)) {
         System.err.println("Current arg is " + i);
     }
@@ -1079,14 +1079,14 @@ aspect A {
         
 
 
-  if(thisJoinPoint.getKind().equals("call"))
+if(thisJoinPoint.getKind().equals("call"))
 
 
 	    
-	    	Note that the order of evaluation for pointcut expression 
-	    	components at a join point is undefined. Writing if 
-	    	pointcuts that have side-effects is considered bad style and may also 
-	    	lead to potentially confusing or even changing behavior with regard 
+	    	Note that the order of evaluation for pointcut expression
+	    	components at a join point is undefined. Writing if
+	    	pointcuts that have side-effects is considered bad style and may also
+	    	lead to potentially confusing or even changing behavior with regard
 	    	to when or if the test code will run.
 	    
       
@@ -1207,9 +1207,9 @@ aspect A {
 
 
 
-  class C {
-      public final void foo() throws ArrayOutOfBoundsException { ... }
-  }
+class C {
+    public final void foo() throws ArrayOutOfBoundsException { ... }
+}
 
 
       
@@ -1219,7 +1219,7 @@ aspect A {
 
 
 
-  call(public final void C.foo() throws ArrayOutOfBoundsException)
+call(public final void C.foo() throws ArrayOutOfBoundsException)
 
 
       
@@ -1227,7 +1227,7 @@ aspect A {
       
 
 
-  call(public final void *.*() throws ArrayOutOfBoundsException)
+call(public final void *.*() throws ArrayOutOfBoundsException)
 
 
 
@@ -1245,16 +1245,16 @@ aspect A {
       
 
 
-  call(public final void *() throws ArrayOutOfBoundsException)
+call(public final void *() throws ArrayOutOfBoundsException)
 
 
       
-        The wildcard .. indicates zero or more 
+        The wildcard .. indicates zero or more
         parameters, so
       
 
 
-  execution(void m(..))
+execution(void m(..))
 
 
       
@@ -1263,7 +1263,7 @@ aspect A {
       
 
 
-  execution(void m(.., int))
+execution(void m(.., int))
 
 
       
@@ -1280,7 +1280,7 @@ aspect A {
       
 
 
-  withincode(!public void foo())
+withincode(!public void foo())
 
 
       
@@ -1289,7 +1289,7 @@ aspect A {
       
 
 
-  withincode(void foo())
+withincode(void foo())
 
 
       
@@ -1303,7 +1303,7 @@ aspect A {
       
 
 
-  call(int *())
+call(int *())
 
 
       
@@ -1312,7 +1312,7 @@ aspect A {
       
 
 
-  call(int get*())
+call(int get*())
 
 
       
@@ -1328,7 +1328,7 @@ aspect A {
       
 
 
-  execution(private C.new() throws ArithmeticException)
+execution(private C.new() throws ArithmeticException)
 
 
       
@@ -1341,23 +1341,23 @@ aspect A {
         
 
         
-        When matching for pointcuts withincode, 
+        When matching for pointcuts withincode,
         get, and set, the declaring
         type is the class that contains the declaration.
         
 
         
-        When matching method-call join points, the 
+        When matching method-call join points, the
         declaring type is the static type used to access the method.
-        A common mistake is to specify a declaring type for the 
-        call pointcut that is a subtype of the 
+        A common mistake is to specify a declaring type for the
+        call pointcut that is a subtype of the
         originally-declaring type. For example, given the class
         
 
 
-  class Service implements Runnable {
-    public void run() { ... }
-  } 
+class Service implements Runnable {
+  public void run() { ... }
+}
 
 
         
@@ -1365,7 +1365,7 @@ aspect A {
         
 
 
-  call(void Service.run())
+call(void Service.run())
 
 
         
@@ -1373,49 +1373,49 @@ aspect A {
         
 
 
-  ((Runnable) new Service()).run();
+((Runnable) new Service()).run();
 
 
         
         Specifying the originally-declaring type is correct, but would
         pick out any such call (here, calls to the run()
-        method of any Runnable).  
+        method of any Runnable).
         In this situation, consider instead picking out the target type:
         
 
 
-  call(void run()) && target(Service)
+call(void run()) && target(Service)
 
 
         
-        When matching method-execution join points, 
-        if the execution pointcut method signature specifies a declaring type, 
-        the pointcut will only match methods declared in that type, or methods 
+        When matching method-execution join points,
+        if the execution pointcut method signature specifies a declaring type,
+        the pointcut will only match methods declared in that type, or methods
         that override methods declared in or inherited by that type.
         So the pointcut
       
 
 
-  execution(public void Middle.*())
+execution(public void Middle.*())
 
 
       
       picks out all method executions for public methods returning void
-      and having no arguments that are either declared in, or inherited by, 
-      Middle, even if those methods are overridden in a subclass of Middle. 
+      and having no arguments that are either declared in, or inherited by,
+      Middle, even if those methods are overridden in a subclass of Middle.
       So the pointcut would pick out the method-execution join point
       for Sub.m() in this code:
       
 
 
-  class Super {
-    protected void m() { ... }
-  }
-  class Middle extends Super {
-  }
-  class Sub extends Middle {
-    public void m() { ... }
-  }
+class Super {
+  protected void m() { ... }
+}
+class Middle extends Super {
+}
+class Sub extends Middle {
+  public void m() { ... }
+}
 
 
       
@@ -1430,15 +1430,15 @@ aspect A {
         
 
 
-  pointcut throwsMathlike():
-      // each call to a method with a throws clause containing at least
-      // one exception exception with "Math" in its name.
-      call(* *(..) throws *..*Math*);
+pointcut throwsMathlike():
+    // each call to a method with a throws clause containing at least
+    // one exception exception with "Math" in its name.
+    call(* *(..) throws *..*Math*);
 
-  pointcut doesNotThrowMathlike():
-      // each call to a method with a throws clause containing no
-      // exceptions with "Math" in its name.
-      call(* *(..) throws !*..*Math*);
+pointcut doesNotThrowMathlike():
+    // each call to a method with a throws clause containing no
+    // exceptions with "Math" in its name.
+    call(* *(..) throws !*..*Math*);
 
 
         
@@ -1550,7 +1550,7 @@ aspect A {
           java.util.HashMap unless the aspect
           were in java.util or the type had
           been imported.
-           
+          
         
 
         
@@ -1569,7 +1569,7 @@ aspect A {
         
 
 
-  call(void foo(*))
+call(void foo(*))
 
 
         
@@ -1585,7 +1585,7 @@ aspect A {
         
 
 
-  handler(java.util.*Map)
+handler(java.util.*Map)
 
 
         
@@ -1594,7 +1594,7 @@ aspect A {
         
 
 
-  handler(java.util.*)
+handler(java.util.*)
 
 
         
@@ -1611,11 +1611,11 @@ aspect A {
         
 
 
-  within(com.xerox..*)
+within(com.xerox..*)
 
 
         
-          picks out all join points where the code is in any 
+          picks out all join points where the code is in any
           declaration of a type whose name begins with "com.xerox.".
         
 
@@ -1638,7 +1638,7 @@ aspect A {
         
 
 
-  call(Foo.new())
+call(Foo.new())
 
 
         
@@ -1647,7 +1647,7 @@ aspect A {
         
 
 
-  call(Foo+.new())
+call(Foo+.new())
 
 
         
@@ -1656,7 +1656,7 @@ aspect A {
         
 
 
-  call(*Handler+.new())
+call(*Handler+.new())
 
 
         
@@ -1689,7 +1689,7 @@ aspect A {
         
 
 
-  staticinitialization(Foo || Bar)
+staticinitialization(Foo || Bar)
 
 
         
@@ -1698,7 +1698,7 @@ aspect A {
         
 
 
-  call((Foo+  ! Foo).new(..))
+call((Foo+  ! Foo).new(..))
 
 
         
@@ -1716,24 +1716,24 @@ aspect A {
       
 
 
-MethodPattern = 
-  [ModifiersPattern] TypePattern 
-        [TypePattern . ] IdPattern (TypePattern | ".." , ... ) 
+MethodPattern =
+  [ModifiersPattern] TypePattern
+        [TypePattern . ] IdPattern (TypePattern | ".." , ... )
         [ throws ThrowsPattern ]
-ConstructorPattern = 
-  [ModifiersPattern ] 
-        [TypePattern . ] new (TypePattern | ".." , ...) 
+ConstructorPattern =
+  [ModifiersPattern ]
+        [TypePattern . ] new (TypePattern | ".." , ...)
         [ throws ThrowsPattern ]
-FieldPattern = 
+FieldPattern =
   [ModifiersPattern] TypePattern [TypePattern . ] IdPattern
-ThrowsPattern = 
+ThrowsPattern =
   [ ! ] TypePattern , ...
-TypePattern = 
+TypePattern =
     IdPattern [ + ] [ [] ... ]
     | ! TypePattern
     | TypePattern  TypePattern
     | TypePattern || TypePattern
-    | ( TypePattern )  
+    | ( TypePattern )
 IdPattern =
   Sequence of characters, possibly with special * and .. wildcards
 ModifiersPattern =
@@ -1785,7 +1785,7 @@ ModifiersPattern =
     
       and where Formal refers to a
         variable binding like those used for method parameters,
-        of the form 
+        of the form
         Type
         Variable-Name,
         and Formals refers to a comma-delimited
@@ -1816,18 +1816,18 @@ ModifiersPattern =
     
 
 
-  aspect A {
-      pointcut publicCall(): call(public Object *(..));
-      after() returning (Object o): publicCall() {
-	  System.out.println("Returned normally with " + o);
-      }
-      after() throwing (Exception e): publicCall() {
-	  System.out.println("Threw an exception: " + e);
-      }
-      after(): publicCall(){
-	  System.out.println("Returned or threw an Exception");
-      }
-  }
+aspect A {
+    pointcut publicCall(): call(public Object *(..));
+    after() returning (Object o): publicCall() {
+  System.out.println("Returned normally with " + o);
+    }
+    after() throwing (Exception e): publicCall() {
+  System.out.println("Threw an exception: " + e);
+    }
+    after(): publicCall(){
+  System.out.println("Returned or threw an Exception");
+    }
+}
 
 
     
@@ -1836,9 +1836,9 @@ ModifiersPattern =
     
 
 
-  after() returning: call(public Object *(..)) {
-      System.out.println("Returned normally");
-  }
+after() returning: call(public Object *(..)) {
+    System.out.println("Returned normally");
+}
 
 
     
@@ -1888,11 +1888,11 @@ ModifiersPattern =
     
 
 
-  aspect A {
-      int around(): call(int C.foo()) {
-	  return 3;
-      }
-  }
+aspect A {
+    int around(): call(int C.foo()) {
+  return 3;
+    }
+}
 
 
     
@@ -1901,7 +1901,7 @@ ModifiersPattern =
     
 
 
-  proceed( ... )
+proceed( ... )
 
 
     
@@ -1913,12 +1913,12 @@ ModifiersPattern =
 
 
 
-  aspect A {
-      int around(int i): call(int C.foo(Object, int))  args(i) {
-	  int newi = proceed(i*2)
-	  return newi/2;
-      }
-  }
+aspect A {
+    int around(int i): call(int C.foo(Object, int))  args(i) {
+  int newi = proceed(i*2)
+  return newi/2;
+    }
+}
 
 
     
@@ -1931,38 +1931,38 @@ ModifiersPattern =
     
 
 
-  aspect A {
-      Object around(int i): call(int C.foo(Object, int))  args(i) {
-	  Integer newi = (Integer) proceed(i*2)
-	  return new Integer(newi.intValue() / 2);
-      }
-  }
+aspect A {
+    Object around(int i): call(int C.foo(Object, int))  args(i) {
+  Integer newi = (Integer) proceed(i*2)
+  return new Integer(newi.intValue() / 2);
+    }
+}
 
-    
+
     
-		Any occurence of proceed(..) within the body of around 
+		Any occurence of proceed(..) within the body of around
         advice is treated as the special proceed form (even if the
-		aspect defines a method named proceed), unless a 
+		aspect defines a method named proceed), unless a
 		target other than the aspect instance is specified as the recipient of
 		the call.
-		For example, in the following program the first 
+		For example, in the following program the first
 		call to proceed will be treated as a method call to
 		the ICanProceed instance, whereas the second call to
 		proceed is treated as the special proceed form.
 	
 
 
-  aspect A {
-     Object around(ICanProceed canProceed) : execution(* *(..))  this(canProceed) {
-        canProceed.proceed();         // a method call
-        return proceed(canProceed);   // the special proceed form
-     }
-     
-     private Object proceed(ICanProceed canProceed) {
-        // this method cannot be called from inside the body of around advice in
-        // the aspect
-     }
-  }	
+aspect A {
+   Object around(ICanProceed canProceed) : execution(* *(..))  this(canProceed) {
+      canProceed.proceed();         // a method call
+      return proceed(canProceed);   // the special proceed form
+   }
+
+   private Object proceed(ICanProceed canProceed) {
+      // this method cannot be called from inside the body of around advice in
+      // the aspect
+   }
+}
 
 
     
@@ -1973,11 +1973,11 @@ ModifiersPattern =
     
 
 
-  aspect A {
-      after() returning (int i): call(int C.foo()) {
-	  i = i * 2;
-      }
-  }
+aspect A {
+    after() returning (int i): call(int C.foo()) {
+  i = i * 2;
+    }
+}
 
 
     
@@ -1990,47 +1990,47 @@ ModifiersPattern =
         With proceed(..) it is possible to change the values
         used by less-precedent advice and the underlying join point by supplying
         different values for the variables.  For example, this aspect replaces
-        the string bound to s in the named pointcut 
+        the string bound to s in the named pointcut
         privateData:
     
 
 
-  aspect A {
-    Object around(String s): MyPointcuts.privateData(s) {
-      return proceed("private data");
-    }
+aspect A {
+  Object around(String s): MyPointcuts.privateData(s) {
+    return proceed("private data");
   }
+}
 
     
-        If you replace an argument to proceed(..), you can cause 
+        If you replace an argument to proceed(..), you can cause
         a ClassCastException at runtime when the argument
-        refers to a supertype of the actual type and you do not supply a 
+        refers to a supertype of the actual type and you do not supply a
         reference of the actual type.  In the following aspect, the
-        around advice replaces the declared target List 
+        around advice replaces the declared target List
         with an ArrayList.  This is valid code at
-        compile-time since the types match.  
+        compile-time since the types match.
     
 
-  import java.util.*;
+import java.util.*;
 
-  aspect A {
-    Object around(List list): call(* List+.*())  target(list) {
-      return proceed(new ArrayList());
-    }
+aspect A {
+  Object around(List list): call(* List+.*())  target(list) {
+    return proceed(new ArrayList());
   }
+}
 
     
         But imagine a simple program where the actual target is
         LinkedList.  In this case, the advice would cause a
-        ClassCastException at runtime, and 
+        ClassCastException at runtime, and
         peek() is not declared in ArrayList.
     
 
-  public class Test {
-    public static void main(String[] args) {
-      new LinkedList().peek();
-    }
+public class Test {
+  public static void main(String[] args) {
+    new LinkedList().peek();
   }
+}
 
     
         The ClassCastException can occur even in situations
@@ -2038,17 +2038,17 @@ ModifiersPattern =
         call size(), declared in List:
     
 
-  public class Test {
-    public static void main(String[] args) {
-      new LinkedList().size();
-    }
+public class Test {
+  public static void main(String[] args) {
+    new LinkedList().size();
   }
+}
 
     
         There will still be a ClassCastException because
         it is impossible to prove that there won't be a runtime binary-compatible
         change in the hierarchy of LinkedList or some
-        other advice on the join point that requires a 
+        other advice on the join point that requires a
         LinkedList.
     
 
@@ -2077,22 +2077,22 @@ ModifiersPattern =
       
 
 
-  import java.io.FileNotFoundException;
+import java.io.FileNotFoundException;
 
-  class C {
-      int i;
+class C {
+    int i;
 
-      int getI() { return i; }
-  }
+    int getI() { return i; }
+}
 
-  aspect A {
-      before(): get(int C.i) {
-	  throw new FileNotFoundException();
-      }
-      before() throws FileNotFoundException: get(int C.i) {
-	  throw new FileNotFoundException();
-      }
-  }
+aspect A {
+    before(): get(int C.i) {
+  throw new FileNotFoundException();
+    }
+    before() throws FileNotFoundException: get(int C.i) {
+  throw new FileNotFoundException();
+    }
+}
 
 
       
@@ -2124,7 +2124,7 @@ ModifiersPattern =
       
         field get and set
         
-          no checked exceptions can be thrown from these join points. 
+          no checked exceptions can be thrown from these join points.
         
       
 
@@ -2138,7 +2138,7 @@ ModifiersPattern =
       
         static initializer execution
         
-          no checked exceptions can be thrown from these join points. 
+          no checked exceptions can be thrown from these join points.
         
       
 
@@ -2146,14 +2146,14 @@ ModifiersPattern =
         pre-initialization and initialization
         
           any exception that is in the throws clause of
-          all constructors of the initialized class. 
+          all constructors of the initialized class.
         
       
 
       
         advice execution
         
-          any exception that is in the throws clause of the advice. 
+          any exception that is in the throws clause of the advice.
         
       
 
@@ -2218,11 +2218,11 @@ ModifiersPattern =
         These rules can lead to circularity, such as
 
 
-  aspect A {
-      before(): execution(void main(String[] args)) {}
-      after():  execution(void main(String[] args)) {}
-      before(): execution(void main(String[] args)) {}
-  }
+aspect A {
+    before(): execution(void main(String[] args)) {}
+    after():  execution(void main(String[] args)) {}
+    before(): execution(void main(String[] args)) {}
+}
 
 
         such circularities will result in errors signalled by the compiler. 
@@ -2268,7 +2268,7 @@ ModifiersPattern =
 
       
         Three special variables are visible within bodies of advice
-          and within if() pointcut expressions: 
+          and within if() pointcut expressions:
         thisJoinPoint,
         thisJoinPointStaticPart, and
         thisEnclosingJoinPointStaticPart. Each is bound to
@@ -2280,7 +2280,7 @@ ModifiersPattern =
 
 
 
-  pointcut publicCall(): call(public * *(..));
+pointcut publicCall(): call(public * *(..));
 
 
 
@@ -2372,17 +2372,17 @@ ModifiersPattern =
       
 
 
-  interface Iface {}
+interface Iface {}
 
-  aspect A {
-      private void Iface.m() {
-	  System.err.println("I'm a private method on an interface");
-      }
-      void worksOnI(Iface iface) {
-	  // calling a private method on an interface
-	  iface.m();
-      }
-  }
+aspect A {
+    private void Iface.m() {
+  System.err.println("I'm a private method on an interface");
+    }
+    void worksOnI(Iface iface) {
+  // calling a private method on an interface
+  iface.m();
+    }
+}
 
 
       
@@ -2499,7 +2499,7 @@ ModifiersPattern =
         is illegal because it would say that a public interface
         has a constraint that only non-public implementors must
         fulfill.  This would not be compatible with Java's type
-        system.  
+        system.
       
     
 
@@ -2514,13 +2514,13 @@ ModifiersPattern =
       
 
 
-  aspect A {
-      private Registry otherPackage.onType.r;
-      public void otherPackage.onType.register(Registry r) {
-	    r.register(this);
-	    this.r = r;
-      }
-  }
+aspect A {
+    private Registry otherPackage.onType.r;
+    public void otherPackage.onType.register(Registry r) {
+    r.register(this);
+    this.r = r;
+    }
+}
 
 
       
@@ -2546,7 +2546,7 @@ ModifiersPattern =
       
 
 
-  this.r = r
+this.r = r
 
 
       
@@ -2614,10 +2614,10 @@ ModifiersPattern =
       
 
 
-  aspect A {
-      declare parents: SomeClass implements Runnable;
-      public void SomeClass.run() { ... }
-  }
+aspect A {
+    declare parents: SomeClass implements Runnable;
+    public void SomeClass.run() { ... }
+}
 
 
     
@@ -2647,13 +2647,13 @@ ModifiersPattern =
       
 
 
-    Object  M   O
-	 \ / \ /
-	  C   N   Q
-	   \ /   /
-	    D   P
-	     \ /
-	      E
+  Object  M   O
+ \ / \ /
+  C   N   Q
+   \ /   /
+    D   P
+     \ /
+      E
 
 
       
@@ -2661,7 +2661,7 @@ ModifiersPattern =
       
 
 
-    Object M C O N D Q P E
+Object M C O N D Q P E
 
 
     
@@ -2703,9 +2703,9 @@ ModifiersPattern =
       For example, the aspect
 
 
-  aspect A {
-      declare soft: Exception: execution(void main(String[] args));
-  }
+aspect A {
+    declare soft: Exception: execution(void main(String[] args));
+}
 
 
       Would, at the execution join point, catch any
@@ -2716,14 +2716,14 @@ ModifiersPattern =
       This is similar to what the following advice would do
 
 
-  aspect A {
-      void around() execution(void main(String[] args)) {
-	  try { proceed(); }
-	  catch (Exception e) {
-	      throw new org.aspectj.lang.SoftException(e);
-	  }
-      }
+aspect A {
+    void around() execution(void main(String[] args)) {
+  try { proceed(); }
+  catch (Exception e) {
+      throw new org.aspectj.lang.SoftException(e);
   }
+    }
+}
 
 
       except, in addition to wrapping the exception, it also affects
@@ -2735,15 +2735,15 @@ ModifiersPattern =
       extending concrete aspect:
 
 
-  abstract aspect A {
-    abstract pointcut softeningPC();
+abstract aspect A {
+  abstract pointcut softeningPC();
 
-    before() : softeningPC() {     
-      Class.forName("FooClass"); // error:  uncaught ClassNotFoundException
-    }    
-                                                      
-    declare soft : ClassNotFoundException : call(* Class.*(..));
+  before() : softeningPC() {
+    Class.forName("FooClass"); // error:  uncaught ClassNotFoundException
   }
+
+  declare soft : ClassNotFoundException : call(* Class.*(..));
+}
 
 
     
@@ -2777,7 +2777,7 @@ ModifiersPattern =
       expressed by:
 
 
-  declare precedence: *..*Security*, Logging+, *;
+declare precedence: *..*Security*, Logging+, *;
 
 
       
@@ -2791,22 +2791,22 @@ ModifiersPattern =
       
 
 
-  aspect Ordering {
-      declare precedence: CountEntry, DisallowNulls;
-  }
-  aspect DisallowNulls {
-      pointcut allTypeMethods(Type obj): call(* *(..))  args(obj, ..);
-      before(Type obj):  allTypeMethods(obj) {
-	  if (obj == null) throw new RuntimeException();
-      }
-  }
-  aspect CountEntry {
-      pointcut allTypeMethods(Type obj): call(* *(..))  args(obj, ..);
-      static int count = 0;
-      before():  allTypeMethods(Type) {
-	  count++;
-      }
-  }
+aspect Ordering {
+    declare precedence: CountEntry, DisallowNulls;
+}
+aspect DisallowNulls {
+    pointcut allTypeMethods(Type obj): call(* *(..))  args(obj, ..);
+    before(Type obj):  allTypeMethods(obj) {
+  if (obj == null) throw new RuntimeException();
+    }
+}
+aspect CountEntry {
+    pointcut allTypeMethods(Type obj): call(* *(..))  args(obj, ..);
+    static int count = 0;
+    before():  allTypeMethods(Type) {
+  count++;
+    }
+}
 
 
       
@@ -2818,7 +2818,7 @@ ModifiersPattern =
         
 
 
-  declare precedence:  A, B, A ;  // error
+declare precedence:  A, B, A ;  // error
 
 
         
@@ -2828,8 +2828,8 @@ ModifiersPattern =
         
 
 
-  declare precedence: B, A;
-  declare precedence: A, B;
+declare precedence: B, A;
+declare precedence: A, B;
 
 
         
@@ -2848,31 +2848,31 @@ ModifiersPattern =
         
 
 
-  abstract aspect Logging {
-      abstract pointcut logged();
+abstract aspect Logging {
+    abstract pointcut logged();
 
-      before(): logged() {
-          System.err.println("thisJoinPoint: " + thisJoinPoint);
-      }
-  }
+    before(): logged() {
+        System.err.println("thisJoinPoint: " + thisJoinPoint);
+    }
+}
 
-  abstract aspect MyProfiling {
-      abstract pointcut profiled();
-
-      Object around(): profiled() {
-          long beforeTime = System.currentTimeMillis();
-          try {
-              return proceed();
-          } finally {
-              long afterTime = System.currentTimeMillis();
-              addToProfile(thisJoinPointStaticPart,
-                           afterTime - beforeTime);
-          }
-      }
-      abstract void addToProfile(
-          org.aspectj.JoinPoint.StaticPart jp,
-          long elapsed);
-  }
+abstract aspect MyProfiling {
+    abstract pointcut profiled();
+
+    Object around(): profiled() {
+        long beforeTime = System.currentTimeMillis();
+        try {
+            return proceed();
+        } finally {
+            long afterTime = System.currentTimeMillis();
+            addToProfile(thisJoinPointStaticPart,
+                         afterTime - beforeTime);
+        }
+    }
+    abstract void addToProfile(
+        org.aspectj.JoinPoint.StaticPart jp,
+        long elapsed);
+}
 
 
         
@@ -2883,7 +2883,7 @@ ModifiersPattern =
         
 
 
-  declare precedence: Logging, Profiling;
+declare precedence: Logging, Profiling;
 
 
         
@@ -2891,8 +2891,8 @@ ModifiersPattern =
         
 
 
-  declare precedence: MyLogging, MyProfiling;
-  declare precedence: Logging+, Profiling+;
+declare precedence: MyLogging, MyProfiling;
+declare precedence: Logging+, Profiling+;
 
 
         
@@ -2932,7 +2932,7 @@ ModifiersPattern =
 
     
       An aspect is a crosscutting type defined by the aspect
-      declaration. 
+      declaration.
     
 
     
@@ -2955,7 +2955,7 @@ ModifiersPattern =
 	declarations that can can cut across other types (including those defined by
 	other aspect declarations).
         
-       
+      
 
       
         Aspects are not directly instantiated
@@ -2966,19 +2966,19 @@ ModifiersPattern =
 	constructor taking no arguments and throwing no checked
 	exceptions.
         
-       
+      
 
       
         Nested aspects must be <literal>static</literal>
 
-	 
+	
 	  Aspects may be defined either at the package level, or as a static nested
           aspect -- that is, a static member of a class, interface, or aspect.  If it
           is not at the package level, the aspect must be
           defined with the static keyword.  Local and anonymous aspects are not
           allowed.
         
-       
+      
     
 
     
@@ -3041,7 +3041,7 @@ ModifiersPattern =
         The criteria used to determine how an aspect is instantiated
         is inherited from its parent aspect.  If the aspect has no parent
         aspect, then by default the aspect is a singleton aspect.
-        How an aspect is instantiated controls the form of the 
+        How an aspect is instantiated controls the form of the
         aspectOf(..) method defined on the
         concrete aspect class.
       
@@ -3103,7 +3103,7 @@ ModifiersPattern =
           target object of the join points picked out by
           Pointcut.
           The advice defined in A will run only at a join point where the
-          target object has been associated with an instance of 
+          target object has been associated with an instance of
 		  A.
         
 
@@ -3156,20 +3156,20 @@ ModifiersPattern =
         
 
 
-  public class Client
-  {
-      public static void main(String[] args) {
-          Client c = new Client();
-      }
-  }
+public class Client
+{
+    public static void main(String[] args) {
+        Client c = new Client();
+    }
+}
 
-  aspect Watchcall {
-      pointcut myConstructor(): execution(new(..));
+aspect Watchcall {
+    pointcut myConstructor(): execution(new(..));
 
-      before(): myConstructor() {
-          System.err.println("Entering Constructor");
-      }
-  }
+    before(): myConstructor() {
+        System.err.println("Entering Constructor");
+    }
+}
 
 
         
@@ -3214,16 +3214,16 @@ ModifiersPattern =
       
 
 
-  class C {
-      private int i = 0;
-      void incI(int x) { i = i+x; }
-  }
-  privileged aspect A {
-      static final int MAX = 1000;
-      before(int x, C c): call(void C.incI(int))  target(c)  args(x) {
-	  if (c.i+x > MAX) throw new RuntimeException();
-      }
-  }
+class C {
+    private int i = 0;
+    void incI(int x) { i = i+x; }
+}
+privileged aspect A {
+    static final int MAX = 1000;
+    before(int x, C c): call(void C.incI(int))  target(c)  args(x) {
+      if (c.i+x > MAX) throw new RuntimeException();
+    }
+}
 
 
       
@@ -3238,16 +3238,17 @@ ModifiersPattern =
       
 
 
-  class C {
-      private int i = 0;
-      void foo() { }
-  }
-  privileged aspect A {
-      private int C.i = 999;
-      before(C c): call(void C.foo()) target(c) {
-	  System.out.println(c.i);
-      }
-  }
+class C {
+    private int i = 0;
+    void foo() { }
+}
+
+privileged aspect A {
+    private int C.i = 999;
+    before(C c): call(void C.foo()) target(c) {
+        System.out.println(c.i);
+    }
+}
 
 
       
-- 
cgit v1.2.3