abstract aspect Back {
     interface Anything {
     }
     interface Composite extends Anything {
     }

     Composite Anything.back;
     public  java.util.Vector Anything.getAll() {
           java.util.Vector v=new java.util.Vector();

           Composite a = this.back;
           while(a!=null){
               v.add(a);
               a=a.back;
           }
           return v;
     }

     abstract pointcut addNew(Composite c, Anything a);

     before(Composite c, Anything a): addNew(c,a) {

         a.back=c;
     }
}

